Interface I2C (I2C signifie Inter Integrated Circuits)
Le bus I2C (BUS I2C est une marque déposée par PHILIPS composants) constitue un moyen simple de relier (ou de mettre en réseau) des composants ou des sous-ensembles électroniques. Ce bus permet un échange bidirectionnel d'informations à une fréquence pouvant atteindre 100 Kbits/s. Il fonctionne selon le mode de transmission série et n'utilise que deux conducteurs actifs : SDA (pour Sérial DAta) et SCL (pour Sérial CLock).
Le lecteur désireux de mieux connaître les spécifications et la mise en œuvre du bus I2C trouvera dans l'ouvrage " Le Bus I2C " de Dominique PARET (Editions DUNOD) tous les renseignements souhaités sur ce sujet.
Précisons simplement quelques principes indispensables à la compréhension de la description de l'interface I2C placée dans les 8xC552.
Un émetteur est celui qui envoie les données alors que le récepteur les reçoit.
Le maître est le composant qui a initialisé la communication et qui produit du même coup le signal d'horloge.
L'esclave est le composant adressé par un maître. Un esclave peut émettre ou recevoir sous contrôle de l'horloge du maître.
Plus d'un maître peut tenter de prendre le contrôle du bus.
La notion d'arbitrage est la procédure qui permet d'accorder le bus à un seul maître à la fois.
Un maître peut devenir esclave et inversement.
Le transfert d'une donnée commence par une condition de départ (START : SDA passe de 1 à 0 et SCL = 1) le bus est alors occupé.
Le transfert d'une donnée se termine par une condition d'arrêt (STOP : SDA passe de 0 à 1 et SCL = 1) le bus est alors libre.
La figure 4.21 illustre une mise en réseau de trois composants sur le bus I2C.
Figure 4.21 : Réseau I2C
Dans les PCB 8xC552, l'interface I2C est baptisée SIO1, l'appellation SIO1 étant réservée au port série de type UART commun à tous les 8051. Le schéma-bloc dg la figure 4.22 résume l'organisation fonctionnelle de l'interface I2C.
Broches SDA et SCL
Les deux broches correspondantes à SDA et SCL (P1.7 et P1.6) sont à drain ouvert, sans diode de protection. Il sera donc nécessaire de prévoir une résistance de rappel sur chacune de ces lignes (résistances Rp de la figure 4.21). Cette disposition permet de couper éventuellement l'alimentation d'un composant sans pour autant perturber le fonctionnement des autres composants placés sur le bus.
Figure 4.22 : Interface I2C
Ces deux broches sont aussi équipées d'un filtre numérique d'entrée, afin d'éliminer d'éventuels parasites et d'assurer une bonne interprétation des niveaux logiques présents sur le bus. Ainsi, toute tension inférieure à 1.5 V est interprétée comme un 0 logique, et toute tension supérieure à 3 V est interprétée comme un 1.
Générateur d'horloge SCL
Par division interne de la fréquence de l'horloge principal du microcontrôleur (fosc), ou à partir de la périodicité de dépassement du TIMER l, un signal de rapport cyclique de 50 % permet de cadencer le débit d'émission ou de réception lorsque l'interface SIO1 est en mode MAITRE. La fréquence du débit est programmable par positionnement des 3 bits CR2, CR1 et CR0 du registre S1CON.
Le tableau 4.23 résume la suite des fréquences ainsi réalisables.
CR2 |
CR1 |
CR0 |
Débit en Kbits/s à fosc=l2MHz |
Facteur |
0 |
0 |
0 |
47 |
fosc/256 |
0 |
0 |
1 |
54 |
fosc/224 |
0 |
1 |
0 |
63 |
fosc/192 |
0 |
1 |
1 |
75 |
fosc/160 - |
1 |
0 |
0 |
12.5 |
fosc/960 |
1 |
0 |
1 |
100 |
fosc/120 |
1 |
1 |
0 |
200(l) |
Fosc/60 |
1 |
1 |
1 |
> 0.5 |
(2) |
(1) : ce débit dépasse les spécifications I2C.
(2) : débit définit par la formule 96 x (256 - Timer 2).
Tableau 4.23 : Fréquences de l’horloge SCL
Registres à fonction spéciale
Quatre registres à fonction spéciale permettent une gestion complète de l'interface. Il s'agit de :
NOM |
Fonction |
Adresse |
S1CON S1STA S1DAT S1ADR |
contrôle de l'interface état de l'interface donnée pour émission ou réception adresse I2C du composant |
(D8h) (D9h) (DAh) (DBh) |
Registre de contrôle SlCON
Ce registre est adressable au niveau du bit et assure le contrôle de l'interface SIO1.
Le bit ENS1 permet de valider le fonctionnement de l'interface I2C. Si ENS1 est laissé à 0, les broches SDA et SCL (ou plus exactement, dans ce cas, P1.6 et P1.7) sont mises à un état de haute impédance et peuvent être utilisées comme des lignes d'entrée/sortie. Dans ce cas, il faudra prévoir de doter ces lignes de résistances de rappel au +5 V comme pour le port P0.
Lorsque ENS1 est mis à 1, l'interface I2C est activée.
Le bit STA permet de valider le début d'un échange de données. Si STA est mis à 1, l'interface entre dans le mode MAITRE et vérifie que le bus est libre et dans l'affirmative génère une condition de START. Dans le cas contraire, la logique d'arbitrage provoque l'attente d'une condition de STOP sur le bus. Après une demi-période d'horloge la condition de START est mise en place. Si STA est positionné à 1, alors que l'interface est déjà maître du bus, on génère alors une condition de RE-START. Si STA = 0 la condition de START ne peut pas être générée et le composant est considéré comme étant en mode esclave.
En positionnant le bit STO à l, l'interface I2C en mode maître fixe électriquement sur le bus une condition de STOP. Dès que cette condition est présente sur SDA et SCL, le bit STO est remis automatiquement à 0.
Dans le cas où les bits STA et STO sont simultanément à 1, c'est une condition de STOP qui est d'abord générée suivie d'une condition START.
Si le bit AA est positionné à l, un acquittement (niveau bas sur la ligne SDA) est retourné pendant la neuvième période d'horloge de SCL quand :
- l'adresse donnée au composant en tant qu'esclave est reçue ;
- un appel général est reçu (et bit GC de S1ADR = 1) ;
- un octet de donnée est reçu en mode récepteur maître ;
- un octet est reçu en mode esclave récepteur.
Si le bit AA est laissé à 0, un non-acquittement (niveau haut sur la ligne SDA) est retourné pendant la neuvième période d'horloge SCL quand:
- un octet de donnée est reçu alors que l'interface est en mode maître récepteur ;
- un octet de donnée est reçu alors que l'interface est en mode esclave récepteur.
Le bit SI est l'indicateur d'interruption qui peut provoquer une requête si l'état des bits EA et ES1 l'autorise. SI est positionné par l'un des 26 comptes-rendus pouvant survenir lors d'un échange de données. En réalité, seulement 25 de ces 26 comptes-rendus provoquent la mise à 1 de SI car le vingt sixième (registre S1STA = F8h) indique que rien de significatif ne s'est produit. La demande d'interruption s'accompagne de la mise en place dans le registre S1STA d'un code caractérisant le compte-rendu.
S1CON : Adresse directe D8h adressable au niveau du bit.
DFh |
DEh |
DDh |
DCh |
DBh |
DAh |
D9h |
D8h |
CR2 |
ENS1 |
STA |
STO |
SI |
AA |
CR1 |
CR0 |
ENS1 : Autorisation de fonctionnement du port I2C si ENS1=1.
STA : (STArt) Validation de départ de l'échange I2C.
STO : (STOp) Indicateur d'arrêt.
SI : Indicateur d'interruption.
AA : (Assert Acknowledge). Si AA=1 un acquittement est renvoyé durant la neuvième période d'horloge de SCL.
Si AA=O un non-acquittement est renvoyé durant la neuvième période d'horloge de SCL.
Les conditions d'acquittement ou de non-acquittement sont précisées dans le texte.
CR0 : Définition du débit d'échange sur le bus I2C. Ces trois
CR1 bits permettent de fixer la fréquence de l'horloge SCL
CR2 à condition que le microcontrôleur soit en mode maître.
Tableau 4.24 : Registre de contrôle de l'interface I2C
Registre d'adresse S1ADR
Ce registre n'est utile qu'en mode esclave. II est destiné à définir l'adresse du composant. Un composant en mode maître doit désigner par son adresse le composant esclave avec lequel il désire établir l'échange. Pour placer un composant en mode esclave il faut initialiser les registres S1ADR et S1CON de la façon suivante :
S1ADR :
X |
X |
X |
X |
X |
X |
X |
GC |
adresse de l'esclave
Si GC est mis à 1, le composant peut aussi répondre à un appel général (adresse 00).
Lorsque GC est à 0, le composant ignore un appel général et ne répond que pour son
adresse personnelle.
S1CON :
CR2 |
ENS1 |
STA |
STO |
SI |
AA |
CR1 |
CR0 |
X |
1 |
0 |
0 |
0 |
1 |
X |
X |
ENS1 doit être placé à 1 pour valider l'ensemble SIO1. Le bit AA est mis à l pour que le composant accuse réception de la donnée et les bits STA, STO doivent être mis à 0 car un esclave ne doit pas envoyer de condition de départ, ni de condition d'arrêt.
Registre d'état S1STA
Ce registre rend compte du déroulement de l'échange. Lorsqu'un échange s'est produit, un code est placé dans ce registre. Une étude détaillée fait apparaître 26 cas différents pouvant être signalés pour les quatre situations suivantes :
maître récepteur ;
maître émetteur ;
esclave récepteur ;
esclave émetteur.
Le code est placé dans les 5 bits de poids fort du registre S1STA alors que les trois bits de poids faible sont toujours maintenus à 0. Les valeurs placées dans ce registre sont donc espacées de 8 unités. Cette particularité a été prévue pour utiliser les valeurs de ce registre comme une suite d'adresses correspondant à une suite de programmes de huit octets assurant chacun le traitement d'un des 26 comptes rendus.
S1STA :
X |
X |
X |
X |
X |
0 |
0 |
0 |
code compte-rendu
Le constructeur préconise l'exploitation suivante :
Lorsque l'indicateur SI est mis à 1 et que l'interruption de l'interface SIO1 est autorisée, le compteur programme se branchera à l'adresse 002Bh (adresse du vecteur d'interruption pour SIO1). A cette adresse on place le programme suivant :
S1: PUSH PSW ; sauvegarde des indicateurs programme
PUSH S1STA ; EMPILER LE CODE DE L'INCIDENT
PUSH H_ADR ; empiler le poids fort de l'adresse
RET
L'instruction RET provoque un saut, non pas vers l'adresse de retour normal, mais à l'adresse calculée à partir des valeurs de H_ADR et de S1STA. H_ADR représente la valeur des huit bits de poids fort de la zone de mémoire programme où sont implantés les programmes assurant le traitement des 26 cas à traiter. Chacun de ces programmes commence à une adresse dont les huit bits de poids faible sont déterminés par le contenu de S1STA.
La figure 4.25 illustre un des modes de fonctionnement de l'interface I2C. II s'agit d'une transmission en mode maître. Quant aux tableaux 4.26 à 4.30, ils résument les codes des comptes-rendus et leurs significations.
Emission réussie vers un récepteur esclave |
|
Transfert suivant demandé avec une condition de départ répétée |
|
Pas d'acquittement reçu après l'adresse esclave |
|
Pas d'acquittement reçu après un octet de donnée |
|
Arbitrage perdu dans l'adresse esclave ou dans l'octet de donnée |
|
Arbitrage perdu et adressé en tant qu'esclave |
|
S : Condition de START
SLA : Adresse de l'esclave (7 bits)
R : bit de lecture (1 logique)
W : bit pour écriture (0 logique)
A : bit d'acquittement (0 logique dans SDA)
A : bit de non acquittement (1 logique) (A + une flèche au dessus)
DATA : donnée de 8 bits
P : condition de STOP
Figure 4.25 : Format et états en transmission, mode maître
CODE |
Comple-rendu de l'état du bus |
Réponse logicielle |
Action suivante sur le bus |
||||
vers/depuis St DAT |
vers S1CON |
||||||
STA |
STO |
SI |
AA |
||||
08h |
Une condition de START a été envoyée. |
Charger SLA+W |
X |
0 |
0 |
X |
SLA+W va être transmis et un ACK sera reçu. |
10h |
Une condition répétée de START a été envoyée. |
Charger SLA+W ou |
X |
0 |
0 |
X |
Idem |
SLA+R |
X |
0 |
0 |
X |
SLA+R va être envoyé et l'ensemble SI01 est commuté en réception mode MAITRE. |
||
18h |
SLA+W ont été envoyés et ACK a été reçu. |
Charger DATA ou |
0 |
0 |
0 |
X |
La donnée sera envoyée et un ACK sera reçu. |
Pas d'opération ou |
1 |
0 |
0 |
X |
La condition de START répétée sera envoyée. |
||
Pas d'opération ou |
0 |
1 |
0 |
X |
Une condition de STOP sera envoyée et l'indicateur STO sera remis à 0. |
||
Pas d'opération |
1 |
1 |
0 |
X |
Une condition STOP suivie d'une condition START seront envoyées et STO, remis à 0. |
||
20h |
SLA+W ont été envoyés et un "NOT ACK" (non- acquittement) a été reçu. |
Charger DATA ou |
0 |
0 |
0 |
X |
La donnée est envoyée et un ACK sera reçu. |
Pas d'opération ou |
1 |
0 |
0 |
X |
Un START répété sera envoyé. |
||
Pas d'opération ou |
0 |
1 |
0 |
X |
Une condition STOP sera envoyée et STO remis à 0. |
||
Pas d'opération |
1 |
1 |
0 |
X |
Un condition STOP suivie d'une condition START seront envoyées et STO, remis à 0. |
||
28h |
La donnée placée dans Si DAT a été envoyée et un ACK a été reçu. |
Charger DATA ou |
0 |
0 |
0 |
X |
La donnée est envoyée et un ACK sera reçu. |
Pas d'opération ou |
1 |
0 |
0 |
X |
Un START répété sera envoyé. |
||
Pas d'opération ou |
0 |
1 |
0 |
X |
Une condition STOP sera envoyée et STO, remis à 0. |
||
Pas d'opération |
1 |
1 |
0 |
X |
Une condition STOP suivie d'une condition START seront envoyées et STO, remis à 0. |
||
30h |
La donnée placée dans S1 DAT a été envoyée et un "NOT ACK" a été reçu. |
Charger DATA ou |
0 |
0 |
0 |
X |
La donnée est envoyée et un ACK sera reçu. |
Pas d'opération ou |
1 |
0 |
0 |
X |
Un START répété sera envoyé. |
||
Pas d'opération ou |
0 |
1 |
0 |
X |
Une condition STOP sera envoyée et STO remis à 0. |
||
Pas d'opération |
1 |
1 |
0 |
X |
Une condition STOP suivie d'une condition START seront envoyées et STO, remis à 0. |
||
38h |
Arbitrage perdu lors d'un envoi SLA+W ou SLA+R ou DATA |
Pas d'opération |
0 |
0 |
0 |
X |
Le bus I2C est libéré. |
Pas d'opération |
1 |
0 |
0 |
X |
Une condition START sera envoyée lorsque le bus sera libre. |
Tableau 4.26 : Comptes-rendus en transmission, mode maître
CODE |
Compte-rendu de l'état du bus |
Réponse logicielle |
Action suivante sur le bus |
||||
vers/depuis S1DAT |
vers S1 CON |
||||||
STA |
STO |
SI |
AA |
||||
08H |
Une condition de START a été envoyée. |
Charger SLA+R |
X |
0 |
0j |
X |
SLA+R va être envoyé et un ACK sera reçu. |
10H |
Une condition répétée de START a été envoyée. |
Charger SLA+R ou SLA+W |
X |
0 |
0 |
X |
Idem |
X |
0 |
0 |
X |
SLA+W va être envoyé et l'ensemble S101 sera commuté en émetteur mode MAITRE. |
|||
38H |
Arbitrage perdu sur un SLA+R ou sur un non - acquittement |
Pas d'action ou - |
0 |
0 |
0 |
X |
Le bus va être libéré et le S101 entre en mode esclave non adressé. |
Pas d'action |
1 |
0 |
0 |
X |
Une condition de START sera envoyée lorsque le bus sera libre. |
||
40H |
SLA+R ont été envoyé et ACK reçu |
Pas d'action ou |
0 |
0 |
0 |
0 |
Une DATA va être reçue et un NOT ACK sera retourné |
Pas d'action |
0 |
0 |
0 |
1 |
Une DATA va être reçue e1 un ACK sera retourné. |
||
48H |
SLA+R a été envoyé et un NOT ACK reçu |
Pas d'action ou |
1 |
0 |
0 |
X |
Une condition de START répétée sera envoyée. |
Pas d'action ou |
0 |
1 |
0 |
X |
Une condition de STOP sera envoyée et STO remis à 0. |
||
Pas d'action |
1 |
1 |
0 |
X |
Une condition de STOP suivie d'une condition de START seront envoyées et STO remis à 0. |
||
50H |
Une DATA a été reçue et un ACK reçu |
Lecture de DATA ou |
0 |
0 |
0 |
0 |
Une DATA va être reçue et un NOT ACK sera retourné. |
Lecture de DATA ou |
0 |
0 |
0 |
1 |
Une DATA va être reçue et un ACK sera retourné. |
||
58H |
Une DATA a été reçue et un NOT ACK retourné |
Lecture de DATA ou |
1 |
0 |
0 |
X |
Une condition de START répétée sera envoyée. |
Lecture de DATA ou |
0 |
1 |
0 |
X |
Une condition de STOP sera envoyée et STO remis à 0. |
||
Lecture de DATA |
1 |
1 |
0 |
X |
Une condition de STOP suivie d'une condition de START seront envoyées et STO remis à 0. |
Tableau 4.27 : Comptes-rendus en réception, mode maître
CODE |
Compte-rendu de l'état du bus |
Réponse logicielle |
Action suivante sur le bus |
||||
vers/depuis S1DAT |
vers S1CON |
||||||
. |
STA |
STO |
SI |
AA |
|||
60H |
Le SLA+W attribué au composant a été reçu et un ACK renvoyé |
Pas d'opération |
X |
0 |
0 |
0 |
DATA sera reçu et NOT ACK retourné. |
Pas d'opération |
X |
0 |
0 |
1 |
DATA sera reçu et ACK sera retourné |
||
68H |
En mode maître arbitrage perdu sur réception d'un SLA+R ou SLA+W. En mode esclave, le SLA+W attribué a été reçu et un ACK renvoyé. |
Pas d'opération |
X |
0 |
0 |
0 |
DATA sera reçu et NOT ACK retourné. |
Pas d'opération |
X |
0 |
0 |
1 |
DATA sera reçu et ACK sera retourné. |
||
70H |
Un appel général (SLA=O) a été reçu et un ACK renvoyé. |
Pas d'opération |
X |
0 |
0 |
0 |
DATA sera reçu et NOT ACK retourné. |
Pas d'opération |
X |
0 |
0 |
1 |
DATA sera reçu et ACK sera retourné. |
||
78H |
En mode maire, arbitrage perdu sur réception d'un SLA+R ou SLA+W. En mode esclave, un appel général a été reçu et un ACK renvoyé. |
Pas d'opération |
X |
0 |
0 |
0 |
DATA sera reçu et NOT ACK retourné. |
Pas d'opération |
X |
0 |
0 |
1 |
DATA sera reçu et ACK sera retourné. |
||
80H |
Préalablement adressé par te SLA attribué, une DATA a été reçue et un ACK retourné. |
Lecture de DATA |
X |
0 |
0 |
0 |
DATA sera reçu et NOT ACK retourné. |
Lecture de DATA |
X |
0 |
0 |
1 |
DATA sera reçu et ACK |
||
88H |
Préalablement adressé par le SLA attribué, une DATA a été reçue et un NOT ACK retourné. |
Lecture de DATA |
0 |
0 |
0 |
0 |
Commuté en mode non adressé, ne reconnaît pas son SLA ou un appel général. |
Lecture de DATA |
0 |
0 |
0 |
1 |
Commuté en mode non adressé, peut reconnaître son SLA ou un appel général si SADR.0=1. |
||
Lecture de DATA |
1 |
0 |
0 |
0 |
Commuté en mode non adressé, ne reconnaît pas son SLA ou un appel général. Une condition de START sera envoyée lorsque le bus sera libre. |
||
Lecture de DATA |
1 |
0 |
0 |
1 |
Commuté en mode non adressé, peut reconnaître son SLA ou un appel général si SADR.0=1. Une condition de START sera envoyée lorsque le bus sera libre. |
||
90H |
Préalablement adressé par un appel général, une DATA a été reçue et un ACK retourné. |
Lecture de DATA |
X |
0 |
0 |
0 |
DATA sera reçu et NOT ACK retourné. |
Lecture de DATA |
X |
0 |
0 |
1 |
DATA sera reçu et ACK sera retourné. |
||
98H |
Préalablement adressé par un appel général, une DATA a été reçue et un NOT ACK retourné. |
Lecture de DATA |
0 |
0 |
0 |
0 |
Commuté en mode non adressé, ne reconnaît pas son SLA ou un appel général. |
Lecture de DATA |
0 |
0 |
0 |
1 |
Commuté en mode non adressé, peut reconnaître son SLA ou un appel général si SADR.O=1. |
||
Lecture de DATA |
1 |
0 |
0 |
0 |
Commuté en mode non adressé, ne reconnaît pas son SLA ou un appel général. Une condition de START sera envoyée lorsque le bus sera libre. |
||
Lecture de DATA |
1 |
0 |
0 |
1 |
Commuté en mode non adressé, peut reconnaître son SLA ou un appel général si SADR.0=1. Une condition de START sera envoyée lorsque le bus sera libre. |
||
A0H |
Une condition de STOP ou de START répétée a été reçue alors que l'on est encore adressé en mode émetteur ou récepteur esclave (SLV mode). |
Lecture de DATA |
0 |
0 |
0 |
0 |
Commuté en mode non adressé, ne reconnaît pas son SLA ou un appel général. |
Lecture de DATA |
0 |
0 |
0 |
1 |
Commuté en mode non adressé, peut reconnaître son SLA ou un appel général si SADR.0=1. |
||
Lecture de DATA |
1 |
0 |
0 |
0 |
Commuté en mode non adressé, ne reconnaît pas son SLA ou un appel général. Une condition de START sera envoyée lorsque le bus sera libre. |
||
Lecture de DATA |
1 |
0 |
0 |
1 |
Commuté en mode non adressé, peut reconnaître son SLA ou un appel général si SADR.0=1. Une condition de START sera envoyée lorsque le bus sera libre. |
Tableau 4.28 : Comptes-rendus en réception, mode esclave
CODE |
Compte-rendu de l'état du bus |
Réponse logicielle |
Action suivante sur le bus |
||||
vers/depuis S1 DAT |
vers S1 CON |
||||||
STA |
STO |
SI |
AA |
||||
A8H |
Le SLA+R attribué au composant a été reçu et un ACK renvoyé. |
Charger une DATA |
X |
0 |
0 |
0 |
La dernière DATA sera envoyée et ACK sera reçu, |
Charger une DATA |
X |
0 |
0 |
1 |
DATA sera envoyée et ACK sera reçue. |
||
B0H |
En mode maître, arbitrage perdu sur réception d'un SLA+R ou SLA+W. En mode esclave, le SLA+R attribué a été reçu et un ACK renvoyé. |
Charger une DATA |
X |
0 |
0 |
0 |
La dernière DATA sera envoyée et ACK sera reçu. |
Charger une DATA |
X |
0 |
0 |
1 |
DATA sera envoyée et ACK sera reçue. |
||
B8H |
La DATA placée dans S1 DAT a été envoyée et un ACK reçu. |
Charger une DATA |
X |
0 |
0 |
0 |
La dernière DATA sera envoyée et ACK sera reçu. |
Charger une DATA |
X |
0 |
0 |
1 |
DATA sera envoyée et ACK sera reçue. |
||
C0H |
La DATA placée dans S7 DAT a été envoyée et un NOT ACK a été reçu en retour. |
Pas d'opération |
0 |
0 |
0 |
0 |
Commuté en mode esclave non adressé, ne reconnaît pas son SLA ou un appel général. |
Pas d'opération |
0 |
0 |
0 |
1 |
Commuté en mode esclave non adressé, peut reconnaître son SLA ou un appel général si SADR.0=1. |
||
Pas d'opération |
1 |
0 |
0 |
0 |
Commuté en mode non adressé, ne reconnaît pas son SLA ou un appel général. Une condition de START sera envoyée lorsque le bus sera libre. |
||
Pas d'opération |
1 |
0 |
0 |
1 |
Commuté en mode non adressé, peul reconnaître son SLA ou un appel général si SADR.0=1. Une condition de START sera envoyée lorsque le bus sera libre. |
||
C8H |
La dernière donnée DATA (AA=O) a été envoyée et un ACK a été reçu en retour. |
Pas d'opération |
0 |
0 |
0 |
0 |
Commuté en mode esclave non adressé, ne reconnaît pas son SLA ou un appel général |
Pas d'opération |
0 |
0 |
0 |
1 |
Commuté en mode esclave non adressé, peut reconnaître son SLA ou un appel général si SADR.0=1, |
||
Pas d'opération |
1 |
0 |
0 |
0 |
Commuté en mode non adressé, ne reconnaît pas son SLA ou un appel général. Une condition de START sera envoyée lorsque le bus sera libre. |
||
Pas d'opération |
1 |
0 |
0 |
1 |
Commuté en mode non adressé, peut reconnaître son SLA ou un appel général si SADR.0=1 . Une condition de START sera envoyée lorsque le bus sera libre. |
Tableau 4.29 : Comptes-rendus en transmission, mode esclave
CODE |
Compte-rendu de l'état du bus |
Réponse logicielle |
Action suivante sur le bus |
||||
vers/depuis S1 DAT |
vers S1CON |
||||||
|
STA |
STO |
SI |
AA |
|||
F8H |
Aucune signification particulière. |
Pas d'action |
Pas d'action |
En attente, ou transfert en cours. |
|||
00H |
Erreur sur le bus provoquée par une sélection de mode ou causée par une condition de START (ou de STOP) illégale. Le compte-rendu 00H peut aussi être provoqué. par une interférence au niveau de SIO1. |
Pas d'action |
0 |
1 |
0 |
X |
Seule la partie matérielle de l'interface SIO1 est affectée. Dans tous les cas, le bus est libéré et la SIO1 est placée en mode esclave non adressé et l'indicateur STO et remis à 0. |
Tableau 4.30 : Autres comptes-rendus