Je vais digérer tout votre message petit à petit ...
Disons qu'un esclave ou un maître envoie plusieurs octets au récepteur
sur le bus I2C et le nombre d'octets n'est pas défini au préalable.
Mais cela devrait être défini. Si des informations aléatoires ont été envoyées ou reçues, vous ne pourrez jamais les interpréter.
Alors, comment l'expéditeur dira-t-il au destinataire qu'il n'a plus de données
envoyer?
Le fabricant détermine combien de bits il doit recevoir de l'esclave. Le maître est généralement écrit par un périphérique logique comme un microcontrôleur, un processeur, etc.
Jusqu'à présent, ce que je comprends, c'est que pour le cas où l'expéditeur est
Master puis il envoie un NACK pour dire à l'esclave (récepteur) qu'il y a
plus de données à envoyer.
Non, pas tout à fait correct. Un "NACK" se produit lorsque le maître "n'entend" rien en retour de l'esclave après avoir envoyé ce bit à l'esclave. C'est comme être au téléphone et dire: "Bonjour, tu es là?"
Mais je me demande comment se déroule cette poignée de main entre un maître
et esclave lorsque l'esclave est l'expéditeur et le maître est le récepteur et seulement
l'esclave (l'expéditeur) sait quand il n'y a plus de données à envoyer au
récepteur?
Votre définition de l'expéditeur et du destinataire est biaisée. Le maître et l'esclave agissent à la fois comme émetteur et comme récepteur. Le maître peut à la fois envoyer et recevoir, en fonction des opérations d'écriture ou de lecture respectivement.
Conseil utile: Pensez à lire la fiche technique des esclaves I2C. Recherchez le mot clé "message". Ce sont les informations que le maître envoie à l'esclave.
Photo ici... pas ma photo.
Le maître doit être programmé pour lire la même longueur de trame d'adresse que l'esclave, qui est définie par la fiche technique de l'esclave.Vous pouvez également être en mesure de définir l'adresse d'un esclave, mais généralement pas de beaucoup.Cela aidera à résoudre le conflit si deux esclaves partagent la même adresse.
Voici un exemple de pièce avec laquelle je viens de travailler récemment, c'est un contrôleur ADM1276 remplaçable à chaud.Il respecte les spécifications PMBUS mais la topologie I2C s'applique toujours.Il vous indique les interactions du maître et de l'esclave lorsque vous envoyez, recevez, lisez et écrivez des octets.