Brevet FR2963450A1 — publié le 20120203

B10410 - 10-RO-149 1 MESSAGE D'INTERRUPTION SUR BUS 22C Domaine de l'invention La présente invention concerne les circuits électroniques et, plus particulièrement, la transmission de données numériques entre deux circuits dans un système de bus maître-esclave. L'invention s'applique plus particulièrement aux communications sur bus bifilaire (données et horloge), plus particulièrement de type I2C. Exposé de l'art antérieur Le protocole de communication I2C et plus généralement tout protocole sur bus bifilaire utilisant un fil de données et un fil d'horloge, est un protocole de communication bidirectionnel alterné (semi-duplex ou half-duplex), c'est-à-dire que dans une transmission maître-esclave, l'esclave ne peut répondre au maître qu'une fois que celui-ci a terminé sa transmission. Cela peut poser problème en particulier en cas d'erreur dans la transmission, dans la mesure où l'esclave ne peut indiquer au circuit maître qu'il y a une erreur de transmission qu'à la fin de la trame, d'où une perte de temps. Plus généralement, cette impossibilité du dispositif esclave à interrompre le dispositif maître lors d'une transmission limite les fonctionnalités du bus. B10410 - 10-RO-149 Résumé Un objet d'un mode de réalisation de la présente invention est de pallier tout ou partie des inconvénients des systèmes bifilaires connus. Un autre objet d'un mode de réalisation de la présente invention est de permettre à un dispositif esclave d'envoyer des informations au maître en interrompant la transmission maître-esclave. Un autre objet d'un mode de réalisation de la présente invention est de proposer une solution permettant de signaler une erreur à un émetteur sans attendre la fin d'une trame de communication. Pour atteindre tout ou partie de ces objets ainsi que d'autres, il est prévu un procédé de transmission, par un récepteur, d'un signal d'interruption sur un premier conducteur d'un bus de communication véhiculant un signal de synchronisation émis par un émetteur, dans lequel le signal d'interruption inhibe le signal de synchronisation sur le premier conducteur. Selon un mode de réalisation de la présente invention, l'émetteur détecte une inhibition du signal de synchronisation. Selon un mode de réalisation de la présente invention, ledit premier conducteur est, au repos, dans un premier état et est commuté périodiquement dans un second état pour générer le signal de synchronisation. Selon un mode de réalisation de la présente invention, pour inhiber le signal de synchronisation, le récepteur force le premier conducteur dans le second état. Selon un mode de réalisation de la présente invention, 30 l'inhibition par le récepteur est synchronisée avec le signal de synchronisation. Selon un mode de réalisation de la présente invention, le signal d'interruption est codé sur plusieurs bits. 2 B10410 - 10-RO-149 3 On prévoit également un procédé de communication, sur un bus bifilaire comportant au moins un premier conducteur de synchronisation et au moins un second conducteur de données. On prévoit également, un dispositif de réception d'une transmission sur bus bifilaire. On prévoit également un dispositif d'émission. Brève description des dessins Ces objets, 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 : la figure 1 représente, partiellement et sous forme de blocs, deux circuits susceptibles de communiquer dans un protocole maître-esclave de type I2C ; les figures 2A, 2B, 2C et 2D illustrent une communication entre les deux circuits de la figure 1 ; la figure 3 représente, de façon schématique et partielle, un exemple usuel de circuit de commande de conducteurs du bus de la figure 1 ; la figure 4 représente, de façon très schématique et simplifiée, un mode de réalisation d'un système selon la présente invention ; les figures 5A, 5B, 5C et 5D sont des chronogrammes illustrant le fonctionnement du système de la figure 4 ; 25 la figure 6 représente un mode de réalisation d'un circuit de signalement d'erreur côté récepteur ; la figure 7 représente un mode de réalisation d'un élément du circuit de la figure 7 ; les figures 8A, 8B, 8C, 8D, 8E, 8F et 8G sont des 30 chronogrammes illustrant le fonctionnement des circuits des figures 6 et 7 ; la figure 9 représente un exemple de circuit de détection d'interruptions côté émetteur ; et les figures 10A, 10B et 10C sont des chronogrammes 35 illustrant le fonctionnement du circuit de la figure 9. 20 B10410 - 10-RO-149 4 Description détaillée De mêmes éléments ont été désignés par de mêmes références aux différentes figures qui ont été tracées sans respect d'échelle. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation exposés seront décrits. En particulier, l'exploitation faite des données dans chacun des circuits communiquant n'a pas été détaillée, les modes de réalisation décrits étant compatibles avec les utilisations usuelles de ces données. De plus, le codage des signaux à transmettre par les différents circuits communiquant n'a pas non plus été détaillé, l'invention étant là encore compatible avec des circuits usuels de codage de tels signaux. Les modes de réalisation feront par la suite référence à une communication utilisant un protocole connu sous la dénomination I2C. L'invention s'applique toutefois plus généralement à tout protocole de communication utilisant un fil d'horloge ou de synchronisation (par exemple, le protocole connu sous la dénomination SPI). La figure 1 est un schéma bloc d'un mode de réalisation d'un système de communication entre un dispositif maître 1 et un dispositif esclave 3 selon le protocole I2C. Dans l'exemple de la figure 1, le circuit 1 est un circuit maître (MD) et est susceptible de communiquer, par un bus I2C, avec un ou plusieurs dispositifs esclaves 3 (SD). Les différents circuits du système peuvent être alimentés indépendamment les uns des autres ou, comme cela est représenté, par un bus d'alimentation susceptible de véhiculer au moins un potentiel d'alimentation VDD et un potentiel de référence GND, par exemple la masse. Chaque circuit 1, 3 comporte, par exemple, un circuit d'émission (SEND) 11, 31 et un circuit de réception (DET) 12, 32. Les circuits 1 et 3 sont reliés l'un à l'autre par le bus I2C ainsi que par les deux fils VDD et GND du bus d'alimentation. Un premier fil 42 du bus I2C véhicule un signal B10410 - 10-RO-149 d'horloge (SCL) entre deux bornes CK des circuits 1 et 3. Typiquement, ce signal d'horloge est imposé par le circuit maître 1. Un deuxième fil 44 du bus I2C véhicule les données (SDA) entre les deux circuits. Le bus I2C est bidirectionnel. Les figures 2A, 2B, 2C et 2D sont des chronogrammes illustrant une communication entre les circuits 1 et 3 de la figure 1. Ces figures illustrent un exemple de transmission d'un mot de données (typiquement un octet) du circuit maître 1 vers le circuit esclave 3. Pour clarifier la description, les figures 2A, 2B, 2C et 2D représentent l'allure de signaux correspondant respectivement au signal (SDAM) positionné par le circuit d'émission 11 du circuit maître sur le fil 44, au signal d'horloge SCL imposé par le circuit maître, au signal (SDAS) 15 positionné par le circuit 31 sur le fil 44, et au niveau SDA résultant de ce fil. Malgré la représentation simplifiée de la figure 1, on considère que les circuits de réception respectifs 12 et 32 des circuits 1 et 3 observent l'état du fil 44 indépendamment des niveaux imposés SDAM et SDAS par les circuits 20 d'émission 11 et 31. De même, pour simplifier, on néglige les chutes de tension par rapport au potentiel d'alimentation et on considère que les niveaux hauts correspondent à la tension VDD et que les niveaux bas correspondent à la masse. Au repos, les deux fils 42 et 44 du bus I2C sont au 25 niveau haut. En supposant que le circuit 1 veuille transmettre une trame de données au circuit 3, il prend le contrôle du bus en imposant un niveau bas sur le signal SDA (instant t1) alors que le signal SCL reste au niveau haut. Cette condition de départ (Start) effectuée, le circuit 1 génère le signal 30 d'horloge SCL. Puis, le circuit 1 impose un niveau 1 ou 0 sur le fil 44 (signaux SDAM et SDA) en fonction du premier bit D7 de l'octet à transmettre. Ce positionnement du niveau du fil 44 doit intervenir avant le front montant du signal d'horloge (instant t2) qui valide la donnée transmise. Lorsque le signal 35 SCL revient au niveau bas (instant t3), le circuit maître 1 peut 5 10 B10410 - 10-RO-149 6 imposer le niveau correspondant à l'état du bit suivant D6 sur le fil 44, et ainsi de suite. Une fois le dernier bit DO transmis, le circuit maître place le signal SDAM au niveau haut, pour surveiller l'arrivée d'un accusé-réception. Son circuit de détection 12 surveille en même temps l'état réel du fil 44. Pour indiquer une réception correcte, le circuit esclave 3 impose un niveau bas (figure 2C) sur le fil 44 (Signaux SDAS et SDA). Le circuit maître vérifie l'état du fil 44 au front montant (instant t4) du signal SCL qui suit son positionnement à l'état haut du signal SDAM. Si le fil 44 est au niveau bas (comme illustré en figure 2), cela signifie une transmission réussie. Dans le cas contraire, le circuit maître peut réémettre la donnée (une condition de départ (Start) doit pour cela être émise sur le bus I2C). Une fin de transmission (libération du bus) s'effectue par le circuit maître en commutant le signal SDA au niveau haut alors que le signal SCL est également au niveau haut (instant t5). Une fois cette condition d'arrêt (Stop) effectuée, le bus I2C est libre pour démarrer une autre trame I2C. Il peut s'agir, par exemple, d'une transmission du circuit 3 vers le circuit 1. Le protocole de communication I2C fixe différentes conditions additionnelles dans la transmission selon qu'elle concerne une adresse, une donnée, une écriture ou une lecture dans le circuit esclave, etc. Comme il ressort de l'exposé ci-dessus, le circuit esclave n'est pas en mesure de transmettre des informations au circuit maître avant la fin de la transmission (avant que le circuit maître libère le fil de données). Par exemple, le circuit maître n'est averti d'une éventuelle erreur de transmission qu'à la fin de l'octet transmis par l'absence d'accusé-réception. Il pourrait être utile de prévenir plus rapidement le circuit maître pour lui permettre de réémettre immédiatement une nouvelle trame. Plus généralement, il peut être souhaitable de permettre au circuit esclave d'interrompre la transmission du B10410 - 10-RO-149 7 circuit maître pour lui transmettre des informations sans attendre la fin de la trame. La figure 3 représente un exemple de schéma électrique simplifié d'un circuit de génération des signaux SCL et SDA d'un bus I2C, côté circuit maître 1. Par défaut, chaque conducteur 42, 44 du bus I2C, respectivement connecté à une borne 47 ou 49 du circuit 1, est porté au potentiel d'alimentation Vdd par une résistance R (pull-up). Lorsque le circuit 1 souhaite émettre des données sur le bus, les signaux SCL et SDA correspondant sont générés en commutant un interrupteur respectivement 46, 48 reliant le fil 42 ou 44 à la masse. Les interrupteurs 46 et 48 sont commandés par des signaux CMDSCL et CMDSDA respectivement. La figure 4 est un schéma bloc d'un mode de réalisation d'un système selon la présente invention. En figure 4, seuls les circuits intervenant sur le fil 42 d'horloge (SCL) ont été représentés. Côté circuit esclave ou récepteur 3, un interrupteur 36 est prévu pour forcer à la masse le fil 42. L'interrupteur 36 est commandé par un circuit 34 fixant une ou plusieurs impulsions de durée déterminée sous commande, par exemple, d'un détecteur 33 (DET) d'erreur. Les éléments 33, 34 et 36 sont ajoutés par rapport à un récepteur usuel. Plus généralement, le circuit 34 peut également être commandé par le circuit esclave pour interrompre la transmission du circuit maître et lui envoyer des informations pendant la trame maître-esclave. Ces informations peuvent être codées ou non. Côté circuit maître ou circuit d'émission 1, on retrouve l'interrupteur 46 capable de tirer à la masse le fil 42 sous commande d'un signal numérique CMDSCL- Toutefois, la borne 47 de raccordement au fil 42 est également reliée à un détecteur 13 (DET) capable de décoder l'interruption éventuelle par le circuit esclave, par exemple un signalement d'erreur. Dans cet exemple, le détecteur 13 fournit un signal ERR au reste du circuit maître. B10410 - 10-RO-149 8 Les figures 5A, 5B, 5C et 5D sont des chronogrammes illustrant un exemple de fonctionnement du système de la figure 4. La figure 5A illustre un exemple d'allure du signal CMDSCL de commande de l'interrupteur 46 côté circuit maître. La figure 5B illustre un exemple de signal INT fourni par le détecteur 33 du circuit esclave et indiquant un problème côté récepteur. Ce signal INT est mis en forme par le circuit 34 pour commander (signal CMD36) l'interrupteur 36 (figure 5C). Cette commande a pour effet de fermer l'interrupteur 36, donc de tirer le fil 42 à la masse, pendant une durée T déterminée. La figure 5D illustre l'allure résultante du signal SCL sur le fil 42. En l'absence d'erreur, le signal SCL est l'inverse du signal CMDSCL. En présence d'une erreur, sous l'effet de l'interrupteur 36, le fil 42 est tiré à la masse et le signal d'horloge disparaît alors. Cette disparition peut être détectée par le circuit 13 côté circuit maître. Pour être en mesure de distinguer une erreur d'un état de repos du signal SCL, le détecteur 13 reçoit une information sur le fait que le circuit maître module le signal SCL, par exemple en interprétant le signal CMDSCL comme illustré en figure 4. Les circuits connectés au fil 44 (signal de données) ne sont pas modifiés. La durée T est au moins égale à la demi-période du signal d'horloge CMDSCL. Selon un mode de réalisation simplifié, plus particulièrement destiné à un système dans lequel la fréquence du signal SCL est fixe et identique pour tous les dispositifs, cette durée T est fixe. Si le système est adapté à fonctionner avec plusieurs fréquences (fixées par les circuits maître), une durée fixe peut s'avérer insuffisante (inférieure à une demi-période d'horloge) ou trop longue. Par ailleurs, cela ne permet pas de coder l'interruption. Ainsi, selon un mode de réalisation préféré, on synchronise le forçage par le circuit esclave sur les impulsions du signal d'horloge. Cela permet de s'adapter à différentes B10410 - 10-RO-149 9 fréquences d'horloge. De plus, cela rend possible un codage de l'interruption pour, par exemple, coder la nature de l'évènement ayant déclenché ce message d'interruption. Le forçage doit être rapide suite à l'apparition du front d'horloge afin d'éviter des pics sur le signal d'horloge. On tire pour cela profit du fait que les dispositifs maître et esclave comportent généralement des filtres passe-bas en entrée des circuits exploitant les signaux SDA et SCL. Par conséquent, en détectant un front en amont du filtre côte esclave pour forcer le signal SCL à zéro, le pic lié au forçage est filtré par le filtre du circuit maître. La figure 6 représente un mode de réalisation préféré d'un circuit 34 côté dispositif esclave. L'interrupteur 36 est réalisé, par exemple, sous la forme d'un transistor MOS MN36 à canal N reliant la borne 37 de connexion du circuit esclave au fil 42 de signal SCL à la masse. Un décodeur logique 342 (LOGIC) active un signal INHIB à destination d'un circuit 346 analogique (ANALOG) de commande du transistor MN36. Ce signal INHIB est chargé de synchroniser le signal d'interruption sur le front descendant du signal SCL, lorsqu'un signal INT est activé par le dispositif esclave. Le circuit 342 fournit également un signal 343 à un compteur 344 d'impulsions. Le circuit 346 a une entrée connectée à la borne 37 et fournit un signal d'horloge CLK au compteur 344. Lorsque la valeur du compteur atteint une valeur définie, ce résultat est fourni au bloc logique 342 sur une liaison 345 pour désactiver le signal INHIB. Le rôle du compteur 344 est de fixer le nombre d'impulsions inhibées du signal SCL. Le seuil de comptage est de préférence fixe, par exemple, 1 pour inhiber une impulsion, 2 pour inhiber deux impulsions, etc. La borne 37 est, par ailleurs et de façon habituelle, reliée aux autres circuits (OC) du circuit esclave, dont le filtre passe-bas, pour en extraire, en fonctionnement normal, le signal de synchronisation lui permettant de décoder le signal SDA transmis sur le fil 44. B10410 - 10-RO-149 10 La figure 7 représente un exemple de réalisation du bloc analogique 346 du circuit de la figure 6. La grille du transistor MN36 est reliée au point milieu d'une association en série d'un transistor MOS à canal P MP1 et d'un transistor MOS à canal N MN1 entre le potentiel Vdd et la masse. Le transistor MP1 est monté en miroir sur un transistor MOS à canal P MP2, monté en diode entre une borne d'application de la tension Vdd et un transistor MOS à canal N MN3 (de préférence natif, à faible tension seuil) dont la grille est reliée à la borne 37. L'autre borne du transistor MN3 est reliée à la masse par l'intermédiaire d'un transistor MOS à canal N MN2 dont la grille reçoit le signal INHIB. La grille du transistor MN1 reçoit un niveau de référence Vref. Enfin, une association en série d'un transistor MOS à canal P MP3 et d'un transistor MOS à canal N MN4, entre le potentiel Vdd et la masse, a son point milieu relié à l'entrée d'horloge CLK du compteur par l'intermédiaire de deux inverseurs de mise à niveau I1 et I2. La grille du transistor MN4 est reliée à la borne d'application du potentiel Vref. Le potentiel Vref est choisi proche des tensions seuil des transistors MN1 et MN4 de sorte que ces derniers fonctionnent en source de courant. Le transistor MP3 est monté en miroir de courant sur le transistor MP2. Les figures 8A à 8G illustrent le fonctionnement du circuit de la figure 7. Ces figures représentent respectivement un exemple d'allure des signaux SCL, CMDSCL, INT, INHIB, CLK, CMD36 et OUT représentant la sortie 345 du compteur 344. En fonctionnement normal, le signal INHIB étant à l'état bas, le transistor MN2 est bloqué et l'ensemble du circuit de la figure 7 est désactivé. A l'apparition d'un signal d'interruption INT (instant t1), le bloc 342 active au front descendant suivant du signal SCL (instant t2) le signal d'inhibition INHIB. Cela provoque une activation de l'horloge CLK du compteur qui se met à compter au rythme du signal SCL. Lorsque le signal INHIB est à l'état haut, le transistor MN2 est passant et, à l'apparition d'un front B10410 - 10-RO-149 11 montant du signal SCL fourni par le circuit maître, la source de courant MP2 est activée. Il en découle d'une part un incrément du compteur et, d'autre part, une fermeture du transistor MN36 donc un forçage du signal SCL à un niveau correspondant à la tension seuil du transistor MN3. Le comptage démarre au front montant suivant (instant t3) du signal SCL, détecté par le circuit 346 avant qu'il ne soit filtré par le filtre passe-bas du circuit esclave. La fermeture du transistor MN36 fait disparaître l'impulsion du signal SCL. Le mode de réalisation des figures 6 et 7 permet une fermeture synchronisée du transistor MN36 uniquement pendant les périodes où le signal d'horloge est actif. La figure 9 représente un exemple de réalisation d'un détecteur 13 d'interruption côté émetteur. Par exemple, on utilise une bascule 50 de type D dont l'entrée de donnée reçoit l'inverse (inverseur 52) du signal SCL, dont l'entrée de réinitialisation RESET reçoit le signal SCL et dont l'entrée d'horloge CLOCK reçoit le signal CMDSCL- La sortie Q non inversée de la bascule fournit le signal ERR. Les figures 10A, 10B et 10C sont des chronogrammes représentant des exemples d'allure des signaux CMDSCL SCL et ERR, illustrant le fonctionnement du détecteur 13 de la figure 9. Les figures 10A et 10B reprennent les figures 8B et 8A. La période T représente la période de deux cycles débutant à l'instant t3 pendant laquelle le signal SCL est forcé au niveau de la tension seuil du transistor MN3 par l'esclave. Le basculement de la sortie Q intervient (instant t5) avec un léger retard suite au front montant du signal CMDSCL qui suit l'instant t3. Le signal ERR est relâché à un instant t6 où le niveau réapparu du signal SCL est suffisant pour commuter la bascule. Le seuil de comptage peut être programmable pour, le cas échéant, fournir au circuit maître une information sur la nature de l'erreur. Différents modes de codage de cette information sont possibles. Par exemple, le nombre d'impulsions B10410 - 10-RO-149 12 inhibées code un type de message d'erreur. En variante, une alternance d'inhibitions et de maintiens des périodes d'horloge selon une séquence définie code l'interruption. Le signal d'interruption peut avoir des applications multiples. Par exemple, il peut servir à indiquer au circuit maître que le circuit esclave ne fonctionne pas correctement (signal d'erreur). Le codage possible de l'interruption permet par exemple de renseigner sur la nature de l'erreur. Selon un autre exemple, le traitement d'interruption 10 sert à identifier le circuit esclave en transmettant un code d'identification de celui-ci. Divers modes de réalisation ont été décrits, diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, la détection côté émetteur d'une inhibition du 15 signal d'horloge est à la portée de l'homme du métier en utilisant des circuits en eux-mêmes usuels. Par exemple, à chaque fois que le circuit maître déclenche un front montant sur le signal SCL (par exemple en exploitant l'état du signal CMDSCL), il détecte si le signal SCL ne reste pas à l'état haut 20 pendant la durée de fermeture de l'interrupteur 46. De plus, la mise en oeuvre pratique de l'invention est à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus en particulier pour ce qui concerne le codage des différents types d'erreur. 25 En outre, bien que l'invention ait été décrite en relation avec un bus bifilaire, elle s'applique plus généralement à tout système de communication comportant au moins un fil véhiculant un signal de synchronisation, par exemple un bus comportant un fil d'horloge et plusieurs fils de données, 30 pourvu que le signal d'horloge puisse être forcé à zéro (ou proche de zéro) par le circuit esclave, sans que le circuit maître ne risque d'être endommagé en essayant de tirer ce signal à l'état haut. REVENDICATIONS1. Procédé de transmission, par un récepteur (3), d'un signal d'interruption (INT) sur un premier conducteur (42) d'un bus de communication véhiculant un signal de synchronisation (SCL) émis par un émetteur (1), dans lequel le signal d'interruption inhibe le signal de synchronisation sur le premier conducteur. 2. Procédé selon la revendication 1, dans lequel l'émetteur (1) détecte une inhibition du signal de synchronisation (SCL). 3. Procédé selon la revendication 1 ou 2, dans lequel ledit premier conducteur (42) est, au repos, dans un premier état et est commuté périodiquement dans un second état pour générer le signal de synchronisation (SCL). 4. Procédé selon la revendication 3, dans lequel, pour 15 inhiber le signal de synchronisation (SCL), le récepteur (3) force le premier conducteur (42) dans le second état. 5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel l'inhibition par le récepteur (3) est synchronisée avec le signal de synchronisation (SCL). 20 6. Procédé selon la revendication 5, dans lequel le signal d'interruption (INT) est codé sur plusieurs bits. 7. Procédé de communication, sur un bus bifilaire comportant au moins un premier conducteur (42) de synchronisation et au moins un second conducteur (44) de données, 25 mettant en oeuvre le procédé conforme à l'une quelconque des revendication précédentes. 8. Dispositif (3) de réception d'une transmission sur bus bifilaire, adapté à la mise en oeuvre du procédé selon l'une quelconque des revendications 1 à 7. 30 9. Dispositif (1) d'émission, adapté à la mise en oeuvre du procédé conforme à l'une quelconque des revendications 1 à 7.