FR 3100349 A1 20210305 FR 1909470 A 20190828 Description Titre de l'invention : Communication sur bus 12C Domaine technique [0001] La présente description concerne de façon générale les dispositifs et systèmes élec- troniques. Plus particulièrement, la présente description concerne les procédés de communication entre des dispositifs et/ou des systèmes électroniques. Technique antérieure [0002] Un bus informatique est un dispositif de transmission de données entre plusieurs dis- positifs électroniques, par exemple entre plusieurs composants d'un même système électroniques. Un bus comprend généralement un ou plusieurs câbles adaptés à transmettre différents types de signaux, par exemple, des signaux d'adresses, des signaux de données, des signaux d'horloge, etc. Chaque bus dc données est mis en oeuvre par un protocole de communication qui définit la manière dont les données logiques sont échangées entre les dispositifs. [0003] Parmi les différents bus et protocoles de communication existants, la technologie I2C (Inter-Integrated Circuit) est une technologie dc communication comprenant un bus série bidirectionnel. Plusieurs dispositifs électroniques, émetteur ou récepteur, peuvent être connectés à cc bus. Un bus adapté à la technologie 12C utilise deux câbles de transmission de données. [0004] 11 serait souhaitable de pouvoir améliorer, au moins en partie, les techniques de com- munication connues utilisant un bus adapté à la communication I2C. Résumé de l'invention 100051 11 existe un besoin dans la technique pour des techniques de communication plus fiables. 100061 11 existe un besoin dans la technique pour des techniques de communication plus fiables utilisant un bus adapté à la communication I2C. 100071 Un mode de réalisation pallie tout ou partie des inconvénients des techniques de communication connues utilisant un bus adapté à la communication I2C. 100081 Un mode de réalisation prévoit un procédé de communication par bus I2C entre un dispositif émetteur et un dispositif récepteur, dans lequel : - un front montant d'un signal d'horloge du bus 12C, suivant directement une condition de démarrage d'une communication I2C, est enregistré ; et - quand une interruption est générée au sein du dispositif récepteur, ledit dispositif récepteur vérifie si ledit front montant a été enregistré quand il est interrompu. 100091 Selon un mode de réalisation, la condition de démarrage est un front descendant du signal de données pendant un état haut du signal d'horloge. 2 100101 Selon un mode de réalisation, une interruption est générée au sein du dispositif récepteur quand il reçoit. une interruption logicielle qui est envoyée à chaque condition de démarrage d'une communication 12C. [0011] Selon un mode de réalisation, si le dispositif récepteur détecte que ledit front montant n'a pas été enregistré, alors il lit les données dudit signal de données. [0012] Selon un mode de réalisation, si le dispositif récepteur détecte que ledit front montant a été enregistré, alors il attend une condition d'arrêt de la communication I2C. [0013] Selon un mode de réalisation, la condition d'arrêt est un front montant du signal de données pendant un état haut du signal d'horloge. [0014] Selon un mode de réalisation, ledit front montant est stocké dans un registre. [0015] Selon un mode de réalisation, le registre est un registre faisant partie de registres généraux d'entrée/sortie d'un système. [0016] Selon un mode de réalisation, le dispositif émetteur et le dispositif récepteur font partie dudit système. [0017] Selon un mode de réalisation, le système est un microprocesseur. Brève description des dessins [0018] Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : [0019] [fig.1] la figure 1 représente, schématiquement et sous forme de blocs, une commu- nication 12C ; [0020] W8.21 la figure 2 représente un organigramme illustrant des étapes d'une commu- nication 12C de la figure 1 ; [0021] [fig.3] la figure 3 représente des chronogrammes de signaux de la communication I2C de la figure 1 ; et [0022] [fig.4] la figure 4 représente, schématiquement et sous forme de blocs, un mode de mise en oeuvre d'une communication I2C. Description des modes de réalisation 100231 De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. 100241 Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. 100251 Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés ou couplés entre eux, 3 cela signifie que ces deux éléments peuvent être connectés ou être reliés ou couplés par l'intermédiaire d'un ou plusieurs autres éléments. [0026] Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. [0027] Sauf précision contraire, les expressions "environ", "approximativement", "sen- siblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près. [0028] Les signaux évoqués dans la description sont des signaux analogiques comprenant un état haut et un état bas correspondant, respectivement, à des données logiques "1" et "0". L'état haut représente, sauf mention contraire, un niveau haut de tension, par exemple, égal à une tension d'alimentation. L'état bas représente, sauf mention contraire, un niveau bas de tension, par exemple, égal à une tension de référence, par exemple la masse. [0029] Dans la suite de la description, on appelle communication I2C une communication entre deux dispositifs électroniques reliés par un bus adapté à la technologie 12C, noté par la suite bus 12C. [0030] La figure 1 représente, schématiquement et sous forme de blocs, une communication I2C entre deux dispositifs électroniques 1 et 2. [0031] Le dispositif 1 (MASTER) est le dispositif émetteur, ou dispositif maitre, dans la communication I2C, et le dispositif 2 (SLAVE) est le dispositif récepteur, ou dispositif esclave, dans la communication 12C. Le dispositif émetteur est celui qui envoie des commandes, par exemple de lecture ou d'écriture de données, au dispositif receveur. Les dispositifs 1 et 2 sont, par exemple, des composants d'un même circuit, ou alors deux circuits électroniques d'un même système électronique. [0032] Les deux dispositifs sont reliés par un bus 12C 3, symbolisé en pointillés en figure 1. Le bus 3 comprend deux câbles transmettant des signaux SCL et SDA. Le signal SCL est, pendant une communication I2C, un signal d'horloge dont la fréquence d'horloge est imposée par le dispositif émetteur 1. Le signal SDA est, pendant une communication I2C, un signal de données bidirectionnel, c'est-à-dire un signal transmettant des données provenant indifféremment du dispositif 1 ou du dispositif 2. [0033] Selon une variante, un bus I2C peut relier plus de deux dispositifs. A titre d'exemple, un bus I2C peut relier plusieurs dispositifs esclave à un dispositif maitre, ou plusieurs dispositifs maitre à un dispositif esclave, ou encore plus plusieurs dispositifs esclave à plusieurs dispositifs maitre. [0034] La figure 2 représente un organigramme illustrant des étapes d'une communication I2C entre les dispositifs 1 et 2 décrits en relation avec la figure 1. [0035] Avant que la communication T2C entre les dispositifs 1 et 2 ne commence, les signaux SCL et SDA ne sont pas utilisés et sont maintenus à un niveau haut, par exemple par des résistances de tirage à un niveau haut (pull up resistance), non représentées en figure 2. [0036] A une étape initiale 10 (Start Condition), la communication T2C entre les dispositifs 1 et 2 commence. Pour cela, le dispositif 1 émetteur émet une condition de démarrage. Une condition de démarrage d'une communication 12C est définie, par exemple, par un front descendant du signal SDA pendant que le signal SCL est à un niveau haut. [0037] La condition de démarrage imposée par le dispositif 1 émetteur génère une in- terruption logicielle chez le dispositif 2 récepteur. Cette interruption a pour effet d'avertir le dispositif 2 récepteur qu'une communication 12C commence. Autrement dit, l'interruption a pour effet de "réveiller" le dispositif 2. [0038] Une fois la condition de démarrage passée, le dispositif 1 transmet un signal d'horloge via le signal SCL. Ainsi, le signal SCL présente, après la condition de démarrage, un premier front descendant et passe à un niveau bas. La durée d (représentée en figure 3) entre la condition de démarrage et le premier front descendant du signal SCL dépend du dispositif 1 et d'un mode de communication 12C utilisé. Il existe plusieurs modes de communication 12C, correspondant chacun à une fréquence d'horloge différente. A titre d'exemple, dans un mode standard, la fréquence d'horloge est, par exemple, de l'ordre de 100 kHz, dans un mode rapide, la fréquence d'horloge est, par exemple, de l'ordre de 400 kHz, et dans un mode très rapide (fast mode +), la fréquence d'horloge est de l'ordre de 1000 kHz. La durée d est, par exemple, de l'ordre de 600 ns dans un mode rapide. La durée d étant, généralement, très courte, la vérification de la mise en oeuvre d'une condition de démarrage peut être difficile. [0039] A une étape 11 (Address), le dispositif 1 émetteur envoie l'adresse du dispositif récepteur avec lequel il souhaite communiquer via le signal SDA. A titre d'exemple, le dispositif 1 envoie une donnée d'adressage codée sur 7 bits. Pour lire cette donnée, le dispositif 2 récepteur lit une donnée du signal SDA à chaque front montant du signal SCL. [0040] A une étape 12 (Operation), le dispositif 1 émetteur envoie une donnée indiquant l'opération qu'il sera demandé d'effectuer au dispositif récepteur dont l'adresse a été envoyée à l'étape 11. A titre d'exemple, le dispositif 1 envoie une donnée comprenant 1 bit via le signal SDA. A titre d'exemple, les opérations que le dispositif 1 peut demander sont la lecture et l'écriture de données. [0041] A une étape 13 (Ack ?), si l'adresse envoyée par le dispositif 1 à l'étape 11 correspond à l'adresse du dispositif 2, alors le dispositif 2 envoie une donnée d'acquittement au dispositif 1 (sortie Y). L'étape suivante est une étape 14 (Comm) Sinon (sortie N), le dispositif n'envoie pas de donnée d'acquittement, et la commu- nication s'arrête, l'étape suivante est une étape 15 (end condition). Une donnée d'acquittement envoyée par le dispositif 2 est, par exemple, une mise à l'état bas du signal SDA. [0042] A l'étape 14, les dispositifs 1 et 2 communiquent, par exemple en échangeant des commandes et des données. [0043] A l'étape 15, les dispositifs 1 et 2 ont terminé d'échanger des données et des commandes, et le dispositif 1 émetteur émet une condition d'arrêt. Une condition d'arrêt d'une communication T2C est définie, par exemple, par un front montant du signal SDA pendant que le signal SCL est à un niveau haut. La communication T2C entre les dispositifs 1 et 2 est alors terminée. [0044] La figure 3 représente des chronogrammes des signaux SCL et SDA pendant un exemple de début de communication 12C entre les dispositifs 1 et 2. [0045] A un instant initial tO, les signaux SCL et SDA sont à un niveau haut. [0046] A un instant tl , le dispositif 1 envoie unc condition de démarrage, et le signal SDA passe à un état bas. Une interruption est générée au sein du dispositif 2 récepteur. La durée d est représentée en figure 3. [0047] A un instant t2, le signal SCL présente un premier front montant. Le dispositif 2 commence à lire l'adresse envoyée par le dispositif 1 émetteur. Les données suivantes sont lues à des instants t2, t3, t4, t5, t6, t7 et t8, correspondant chacun à un front montant du signal SCL. Dans l'exemple de la figure 3, la donnée binaire envoyée par le dispositif 1, via le signal SDA, est "0101110", cette donnée étant une adresse. Cette adresse est suivie par le bit désignant l'opération à effectuer, qui est, dans le cas de la figure 1, un "0" qui désigne, par exemple, une opération d'écriture. [0048] Dans certains cas, le dispositif 2 récepteur peut ne pas réagir rapidement à l'intervention envoyée par la condition de démarrage du dispositif 1 émetteur. A titre d'exemple, le dispositif 2 peut être dans un mode veille ou dans un mode où il ne peut pas être interrompu, ou encore il peut être en train d'exécuter une opération qui ne peut pas être interrompue. Lorsque le dispositif 2 récepteur réagit tardivement à la condition de démarrage, il peut rater les premiers fronts descendant et montant du signal SCL, et ainsi, ne lire qu'une partie des données envoyées par le dispositif 1 émetteur, et en particulier une partie de l'adresse. Un mode de réalisation décrit en relation avec la figure 4 permet de pallier cet inconvénient. [0049] La figure 4 représente, schématiquement et sous forme de blocs, un mode de mise en oeuvre d'une communication 12C entre deux dispositifs électroniques 4 et 5. [0050] Le dispositif 4 (MASTER) est le dispositif émetteur, ou dispositif maitre, dans la communication 12C, et le dispositif 5 (SLAVE) est le dispositif récepteur, ou dispositif esclave, dans la communication 12C. Les dispositifs 4 et 5 sont, par exemple, des composants d'un même circuit, ou alors deux circuits électroniques d'un même système 6 électronique. [0051] les deux dispositifs 4 et 5 sont reliés par un bus I2C 6, symbolisé par des pointillés en figure 4. Le bus 6 est identique au bus 3 décrit en relation avec la figure 1, et comprend donc deux câbles transmettant les signaux SCL et SDA. [0052] Le dispositif 5 récepteur est, en outre, adapté à lire des données écrites dans un registre 7 (REGISTER). Le registre 7 est adapté à détecter et à enregistrer le premier front montant du signal SCL suivant une condition de démarrage de la communication 12C. [0053] Selon un mode de réalisation, le registre 7 est, extérieur aux dispositifs 4 et 5. Le registre 7 peut, par exemple, faire partie d'un système électronique dont les dispositifs 4 et 5 font également partie. Le registre 7 peut, par exemple, faire partie des registres généraux d'entrée et de sortie (general purposc input/ouput, CHO) d'un microprocesseur. [0054] Une communication I2C entre les dispositifs 4 et 5 fonctionne d'une manière similaire que celle décrite en relation avec les figures 2 et 3, à la différence qu'à chaque fois que le dispositif 5 récepteur reçoit une interruption, il vérifie l'état du registre 7 afin de déterminer si le premier front montant, après la condition de démarrage, du signal SCL a déjà eu lieu ou non. [0055] Un avantage de ce mode de réalisation est qu'à chaque fois que le dispositif 5 récepteur reçoit une interruption émanant d'une condition de démarrage d'une communication I2C, il peut aller vérifier si le premier front montant du signal SCL a déjà eu lieu ou non. Si celui-ci n'a pas encore eu lieu, cela signifie que le dispositif 5 a été rendu alerte à temps et n'a pas raté de bit. S'il n'a pas encore eu lieu alors cela signifie que le dispositif 5 a été rendu alerte trop tard, il doit dans ce cas attendre une condition d'arrêt de la communication I2C. [0056] Le mode de réalisation décrit en relation avec la figure 4 a un autre avantage. Dans certains cas, plusieurs dispositifs récepteurs peuvent être reliés à un dispositif émetteur par l'intermédiaire d'un bus I2C. Une erreur peut subvenir lorsqu'un des dispositifs récepteurs réagit tardivement à la condition de démarrage et prend une série de bits pour son adresse. Il peut, dans ce cas, interférer dans une communication qui ne le concerne pas, et cela peut entraîner des disfonctionnements. Avec le mode de réalisation décrit en figure 4, le dispositif récepteur réagissant tard est conscient de son retard, et ne peut pas méprendre une série de bits pour son adresse. [0057] Divers modes de réalisation et variantes ont été décrits. L'homme de l'art comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d'autres variantes apparaitront à l'homme de [0058] Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la 7 portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus. 8 [Revendication 1] [Revendication 2] [Revendication 3] [Revendication 4] [Revendication 5] [Revendication 6] [Revendication 7] [Revendication 8] [Revendication 9] [Revendication 10] REVENDICATIONSProcédé de communication par bus 12C (6) entre un dispositif émetteur (4) et un dispositif récepteur (5), dans lequel : - un front montant d'un signal d'horloge (SCL) du bus I2C (6), suivant directement une condition de démarrage d'une communication I2C, est enregistré ; et - quand une interruption est générée au sein du dispositif récepteur (5), ledit dispositif récepteur vérifie si ledit front montant a été enregistré. Procédé selon la revendication I, dans lequel la condition de démarrage est un fi-ont descendant du signal de données (SDA) pendant un état haut du signal d'horloge (SCL). Procédé selon la revendication 1 ou 2, dans lequel une interruption est générée au sein du dispositif récepteur (5) quand il reçoit une interruption logicielle qui est envoyée à chaque condition de démarrage d'une communication I2C. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel si le dispositif récepteur détecte que ledit fi-ont montant n'a pas été enregistré, alors il lit les données dudit signal de données (SDA). Procédé selon l'une quelconque des revendications 1 à 4, dans lequel si le dispositif récepteur détecte que ledit fi-ont montant a été enregistré, alors il attend une condition d'arrêt de la communication I2C. Procédé selon la revendication 5, dans lequel la condition d'arrêt est un front montant du signal de données (SDA) pendant un état haut du signal d'horloge (SCL). Procédé selon l'une quelconque des revendications 1 à 6, dans lequel ledit front montant est stocké dans un registre (7). Procédé selon la revendication 7, dans lequel le registre est un registre (7) faisant partie de registres généraux d'entrée/sortie (GPIO) d'un système. Procédé selon la revendication 8, dans lequel le dispositif émetteur (4) et le dispositif récepteur (5) font partie dudit système. Procédé selon la revendication 9, dans lequel le système est un microprocesseur.