Ho intenzione di assimilare l'intero post a poco a poco ...
Supponiamo che uno Slave o Master invii più byte al ricevitore
sul bus I2C e il numero di byte non è definito in anticipo.
Ma dovrebbe essere definito. Se sono state inviate o ricevute informazioni casuali, non sarai mai in grado di interpretarle.
Allora come farà il mittente a dire al destinatario che non ha più dati
inviare?
Il produttore determina quanti bit deve ricevere dallo slave. Il master è tipicamente scritto da un dispositivo logico come un microcontrollore, una CPU, ecc.
Finora quello che ho capito è che nel caso in cui lo sia il mittente
Il Master poi invia un NACK per dire allo Slave (Ricevitore) che c'è
non più dati da inviare.
No, non è del tutto corretto. Un "NACK" si verifica quando il master non "sente" nulla dallo slave dopo aver inviato questo bit allo slave. È come essere al telefono e dire: "Ciao, ci sei?"
Ma mi chiedo come avvenga questa stretta di mano tra un Master
e Slave quando lo Slave è mittente e il Master è solo ricevitore
lo Slave (mittente) sa quando non ci sono più dati da inviare al
ricevitore?
La tua definizione di mittente e destinatario è distorta. Sia il master che lo slave agiscono sia come mittente che come destinatario. Il master può sia inviare che ricevere, a seconda rispettivamente delle operazioni di scrittura o lettura.
Suggerimento utile: Considera la possibilità di leggere qualsiasi scheda tecnica slave I2C. Cerca la parola chiave "messaggio". Queste sono le informazioni che il master invia allo slave.
Immagine da qui... non la mia immagine.
Il master dovrebbe essere programmato per leggere la stessa lunghezza del frame dell'indirizzo dello slave, che è definita dal foglio dati dello slave.Potresti anche essere in grado di impostare un indirizzo di uno slave, ma di solito non di molto.Ciò aiuterà ad affrontare il conflitto se due slave condividono lo stesso indirizzo.
Ecco un esempio di una parte con cui ho lavorato di recente, è un controller hot-swap ADM1276.È conforme alle specifiche PMBUS ma la topologia I2C è ancora valida.Ti dice le interazioni di master e slave durante l'invio, la ricezione, la lettura e la scrittura di byte.