Brevet FR2817051A1 — publié le 20020524

DISPOSITIF DE PILOTAGE AUTOMATIQUE DE LA TENSION APPLIQUEE AU CONDUCTEUR DE DONNEES D'UNE LIAISON SERIE L'invention concerne les liaisons série par câbles entre des appareils électroniques et, plus particulièrement, les liaisons série connues sous l'acronyme USB pour l'expression anglo-saxonne "Universal Serial Bus" dans lesquelles l'un des quatre conducteurs du câble est connecté à une source de tension en vue d'alimenter l'appareil auquel le câble est connecté. Une liaison série de type USB pour connecter (figure 1) deux appareils électroniques A et B comprend quatre fils conducteurs 10, 12, 14 et 16 qui sont affectés comme suit: - le premier 10 à la connexion de masse, - le deuxième 12 et le troisième 14 à une ligne de données appelée respectivement l'une 12 DM (ou D-) et l'autre 14 DP (ou D+), et - la quatrième 16 à une tension d'alimentation de cinq volts (5V) appelée VBUS- Ces fils conducteurs 10, 121,14 et 16 sont connectés à chaque extrémité à une broche de connexions 18 et 20 de type mâle par exemple qui coopère avec une broche de connexions 22 et 24 de type femelle portée l'une par l'appareil A et l'autre par l'appareil B. Ainsi, grâce au fil conducteur 16, l'appareil A alimente l'appareil B avec la tension VBUS. Dans l'appareil B, il est prévu une résistance Rr, dite de rappel (ou "pull-up" en langage anglo-saxon) qui connecte le conducteur DP ou DM au conducteur d'alimentation. La valeur de cette résistance Rr détermine la vitesse de communication de l'appareil B, soit une vitesse élevée si elle est connectée à DP, soit une vitesse basse si elle est connectée à DM. L'appareil B comprend une source d'alimentation interne représentée par le rectangle 26 symbolisant un régulateur de tension et fournissant une tension régulée Vcc de 3,3 volts; la borne de sortie de cette source 26 est connectée à la résistance de rappel Rr. Cette source d'alimentation 26 est dérivée soit de la tension VBUS, soit d'une tension externe VDD sur une borne d'entrée 28. Les spécifications du bus USB imposent que la source d'alimentation 26 de la résistance de rappel Rr doit être dérivée ou commandée par l'alimentation VBUS de telle sorte que quand la tension VBUs n'est pas présente, la résistance de rappel ne fournit pas de courant sur le conducteur de données DP ou DM auquel elle est connectée. Ceci s'applique uniquement aux appareils B alimentés par VDD, c'est-à-dire ceux qui ne sont pas alimentés par VBUS. Cette spécification résulte du fait que l'absence de VBUS signifie que l'appareil A n'est pas en état de fonctionner (par exemple à l'arrêt) et, dans cet état, le régulateur de tension 26 fournirait un courant à l'appareil A, ce qui risquerait d'endommager ce dernier. Il en résulte que l'appareil B doit détecter la présence ou l'absence de VBUS de manière à alimenter la résistance de rappel Rr uniquement dans le cas o VBUS est présent. Actuellement, cette détection de VBUS est réalisée par un programme d'un microcontrôleur MC de l'appareil B. A cet effet, la borne VBUs est connectée à la borne d'entrée d'un dispositif électronique 30 du type "trigger de Schmitt" dont la borne de sortie commande l'état d'une bascule 32 d'un registre 34, à savoir l'état "1" pour VBUS présent et état "0" pour VBUS absent. Par ailleurs, la mise en marche ou l'arrêt du régulateur 26 est commandé par l'état d'une bascule 36 d'un registre de commande 38, à savoir l'état "1" pour le régulateur en arrêt et l'état "0" pour le régulateur en marche. Le programme du microcontrôleur consiste donc à lire périodiquement l'état de la bascule d'état 32 et à positionner la bascule 36 à l'état "0" (régulateur 26 en marche) uniquement dans le cas o la bascule 32 est à l'état "1" (VBUS présent). Lors de la mise en marche de l'appareil B, le régulateur 26 ne doit être mis en marche qu'en présence de VBUS. Ceci est obtenu par une phase d'initialisation du microcontrôleur selon l'organigramme de la figure 2. A l'initialisation de l'appareil B représentée par l'opération 40, le microcontrôleur lit la bascule 32. Lors de l'opération suivante 42, il compare l'état de cette bascule à "1". En cas de réponse positive, il positionne la bascule 36 à l'état "0" (PDWN = O) par l'opération 44, ce qui termine la phase d'initialisation par l'état de Fin 46. En cas de réponse négative, le microcontrôleur effectue une nouvelle boucle 48. Cette initialisation étant effectuée, le programme 50 (figure 3) du microcontrôleur MC effectue périodiquement une vérification que la tension VBUS est présente en lisant l'état de la bascule 32 et en le comparant par l'opération 52 à l'état "1" correspondant à la présence de VBUS. En cas de réponse négative, la bascule 36 est mise à l'état "1" (PDWN = 1) par l'opération 54, ce qui arrête le régulateur 26. En cas de réponse positive, la bascule 36 est mise à l'état "0" par l'opération 56 (PDWN = 0), ce qui maintient le régulateur 26 en marche. Les moyens qui viennent d'être décrits pour répondre aux impératifs des spécifications relatives au bus USB sont satisfaisants pour assurer le respect à ces spécifications mais "consomment" du temps de traitement du microcontrôleur car la vérification de l'état de la borne VBUS doit être effectuée très souvent. Un but de la présente invention est donc de réaliser une surveillance automatique de la borne d'entrée VBUS en évitant l'intervention régulière et fréquente du programme du microcontrôleur. L'invention concerne un dispositif de pilotage automatique de la tension appliquée Vcc à l'un des deux conducteurs DP, DM d'une liaison série de type USB dans un appareil périphérique B connecté en amont à un autre appareil A, ledit appareil périphérique B comportant une source de tension d'alimentation propre qui fournit ladite tension appliquée Vcc audit conducteur de données DP ou DM et étant susceptible de recevoir sur un autre conducteur une tension d'alimentation VBUS, caractérisé en ce qu'il comprend: - un circuit de détection de la présence ou de l'absence de ladite tension d'alimentation VBUS, - un circuit de mémorisation de l'état de présence ou d'absence de ladite tension d'alimentation VBUS, et - un circuit logique de commande de la source d'alimentation produisant la tension Vcc pour mettre en marche ladite source d'alimentation uniquement en présence de ladite tension d'alimentation VBUS- D'autres caractéristiques et avantages de la présente invention apparaîtront lors de la description d'un exemple particulier de réalisation, ladite description étant faite en relation avec les dessins joints dans lesquels: - la figure 1 est un schéma d'une liaison par bus USB entre deux appareils électroniques A et B selon l'art antérieur, - les figures 2 et 3 sont des organigrammes illustrant le fonctionnement du dispositif selon l'art antérieur, - la figure 4 est une table de vérité logique, - la figure 5 est un organigramme illustrant la phase d'initialisation du dispositif automatique selon l'invention, - la figure 6 est un schéma électronique illustrant le dispositif automatique selon l'invention, - la figure 7 est un schéma illustrant le circuit de o10 détection de la présence ou de l'absence de la tension VBUS, selon l'invention, et - la figure 8 est un organigramme illustrant le fonctionnement de la machine d'états utilisée dans le circuit de détection de la présente ou de l'absence de VBUS. Dans les figures, les références identiques désignent des éléments identiques réalisant des fonctions identiques. Les figures 1, 2 et 3, illustrant l'art antérieur, ont été décrites dans le préambule. Le dispositif automatique de pilotage du régulateur 26 comprend (figure 6) les éléments suivants: - un circuit de détection 60 de la présence ou de l'absence de la tension VBUS sur la borne correspondante VBUS de la broche 24, - un circuit logique 70 de commande du régulateur 26, - la bascule 36 du registre de contrôle 38 du microcontrôleur MC, - une bascule 80 d'un registre d'états 68 du microcontrôleur MC, - une bascule 76 d'un registre d'états d'interruption 62 du microcontrôleur MC, - une bascule 78 d'un registre de masques d'interruption 64 (IMR) du microcontrôleur MC, et - un circuit logique ET 66. Le circuit de détection 60, qui sera décrit plus en détails ci-après en relation avec les figures 7 et 8, fournit un premier signal "setvbusstat" de mise à l'état "1" de la bascule 80 lorsqu'il détecte un front montant du signal VBUS et un deuxième signal "reset-vbusstat" de mise à l'état "0" de la bascule 80 lorsqu'il détecte un front descendant du signal VBUS, le front montant et le front descendant étant ceux du signal fourni par le circuit 30. Le circuit de détection 60 fournit un troisième signal "set-vbusint" qui met à l'état "1" la bascule 76 (ITVBUS) du registre d'états d'interruption 62 (ISR). Le circuit logique 70 comprend un circuit inverseur 74 dont la borne d'entrée est connectée à la borne de sortie de la bascule 80 du registre 68 (SR). Il comprend également un circuit OU inverseur 72 dont une des deux bornes d'entrée est connectée à la borne de sortie du circuit inverseur 74 et dont l'autre borne d'entrée est connectée à la borne de sortie de la bascule 36 (PDWN) du registre de contrôle 38 (CR). La bascule 36 est mise à l'état "0" (PDWN = 0) lors de la phase d'initialisation (figure 5) du microcontrôleur MC, ce qui signifie que le régulateur 26 peut être mis en marche. Cette phase d'initialisation (figure 5) comprend l'opération de démarrage 90, l'opération 92 de mise à l'état "0" et l'opération de fin 94. Contrairement au dispositif de l'art antérieur, il n'y a pas de boucle 48 (figure 2). La bascule 78 est mise à l'état "1" ou "0" par le microcontrôleur MC pour indiquer s'il souhaite ou non connaître l'état de la bascule 76. Le circuit de détection 60 comprend (figure 7): - un circuit de détection 90 du front montant et du front descendant du signal fourni par le dispositif électronique du type "trigger de Schmitt" 30, - une machine d'états 92, et - un compteur 94. Ces différents éléments 90, 92 et 94 reçoivent du microcontrôleur MC un signal d'horloge "ck" et un signal de remise à zéro "nreset" de manière à réaliser la synchronisation. Le circuit de détection 90 reçoit, en outre, le signal usbVbus via le circuit 30. Il fournit à la machine d'états 92 les trois signaux suivants: - Vbus-rise correspondant à la détection d'un front montant, - Vbus-fall correspondant à la détection d'un front descendant, - Vbus-dd correspondant à la détection d'un front montant ou d'un front descendant. Il reçoit de la machine d'états 92 un signal clr-event qui indique que le signal Vbus-rise ou Vbus-fall a été pris en compte et peut être remis à zéro. Le circuit de détection 92 fournit les trois signaux définis ci-dessus: set-Vbusint, reset-vbusstat et set- vbusstat. Le compteur 94 mesure la durée qui s'écoule après la détection du front montant ou du front descendant à compter de l'apparition d'un signal "count-en" correspondant à un changement d'état de la borne VBUS. Lorsque le compteur a atteint une certaine valeur prédéterminée, cela signifie que le changement d'état est stable et qu'il peut être pris en compte par la machine d'états 92 qui reçoit alors le signal end-count. La machine d'états 92 fonctionne conformément à l'organigramme de la figure 8. L'état 100 correspond à un état d'attente de la machine. Dès que le circuit de détection 90 fournit un signal Vbus-rise = 1 ou Vbus- fall = 1, la machine d'états passe à un état 102 de remise à l'état "0" des différents circuits. Dans le cas o il s'agit d'un signal Vbus-fall = 1, la machine passe à l'état 104 (Vbus-reset) qui indique un front descendant vers un niveau bas. Si ce niveau bas est confirmé par le signal end-count = 1 du compteur 94, la machine passe à l'état 106 qui fournit le signal de sortie "reset-vbusstat" de mise à l'état "0" de la bascule 80 du registre d'états 68. Dans le cas o il s'agit d'un signal Vbus-rise = 1, la machine passe à l'état 108 (Vbus-set) qui indique un front montant vers un niveau haut. Si ce niveau haut est confirmé par le signal end-count = 1 du compteur 94, la machine d'états passe à l'état 110 qui fournit le signal de sortie "set-vbusstat" de mise à l'état "1" de la bascule 80 du registre d'états 68. Dans les deux cas traités ci-dessus, la machine d'états 92 passe de l'un des états 106 et 110 à l'état 112 qui fournit le signal set-vbusint appliqué à la bascule 76 du registre des états d'interruption 62. Dans ces deux cas, la machine d'états revient de l'état 104 à l'état 102 si le signal Vbus-dd = 1, c'est-à-dire si un signal Vbus-rise = 1 apparaît, et de l'état 108 à l'état 102 si le signal Vbus-dd = 0, c'est-àdire si un signal Vbus-fall = 1 apparaît. Le circuit logique 70 réalise la fonction logique définie par la table de vérité de la figure 4 entre les deux variables binaires déterminées par les états des bascules 80 et 36, c'est-à-dire les valeurs de vbusstat et PDWN. Cette table de vérité montre que le régulateur 26 n'est en marche que si la borne VBUS est alimentée par le câble de la liaison USB. R E V E N D I C A T IONS 1. Dispositif de pilotage automatique de la tension appliquée (Vcc) à l'un des deux conducteurs (DP, DM) d'un cable de liaison série de type USB dans un appareil périphérique (B) connecté en amont à un autre appareil (A), ledit appareil périphérique (B) comportant une source de tension d'alimentation propre (26) qui fournit ladite tension appliquée (Vcc) audit conducteur de données (DP ou DM) et étant susceptible de recevoir sur un autre conducteur une tension d'alimentation (VBus), caractérisé en ce qu'il comprend: - un circuit de détection (30, 60) de la présence ou de l'absence de ladite tension d'alimentation (VBus), - un circuit de mémorisation (80) de l'état de présence ou d'absence de ladite tension d'alimentation (VBus), et - un circuit logique de commande (70) de la source d'alimentation produisant la tension (Vcc) pour mettre en marche ladite source d'alimentation (26) uniquement20 en présence de ladite tension d'alimentation (VBus). 2. Dispositif selon la revendication 1, caractérisé en ce que le circuit de détection (30, 60) de la présence ou de l'absence de la tension d'alimentation (VBus) fournie par le cable de connexion comprend: - un dispositif électronique (30) du type "trigger de Schmitt" dont la borne d'entrée est connectée à la borne d'alimentation du câble, - un circuit de détection (90) du front montant ou du front descendant du signal fourni par le circuit de basculement (30) et qui fournit des signaux correspondants du front montant et du front descendant (Vbus-rise et Vbusfall), - un compteur (94) de la durée de maintien en l'état des signaux de front montant et de front descendant (Vbus-rise, Vbus-fall) et qui fournit un signal de fin de comptage (end-count) lorsque la durée de maintien est atteinte, - une machine d'états (92) qui change d'état en fonction des signaux de front montant et de front descendant (Vbus-rise, Vbus-fall) et du signal de fin de comptage (end-count) et qui fournit les signaux d'état (set-Vbusstat, reset-Vbusstat) de présence et d'absence de ladite tension d'alimentation (VBus) ainsi qu'un signal (set-Vbusint) signalant le changement d'état de (VBus). 3. Dispositif selon la revendication 1 ou 2, caractérisé en ce que le circuit de mémorisation est une bascule (80) d'un registre d'états (68, SR) du microcontrôleur (MC) de communication. 4. Dispositif selon la revendication 1, 2 ou 3, caractérisé en ce que le circuit logique de commande (70) de la source d'alimentation produisant la tension (Vcc) comprend: - un circuit inverseur (74) dont la borne d'entrée reçoit le signal d'état de présence ou d'absence de ladite tension d'alimentation (VBus), et - un circuit OU inverseur (72) dont une des bornes d'entrée est connectée à la borne de sortie du circuit inverseur (74) et dont l'autre borne d'entrée reçoit un signal d'état (PDWN =0) indiquant que l'appareil périphérique (B) a une source d'alimentation propre. 5. Dispositif selon l'une des revendications 1 à 4, caractérisé en ce qu'il comprend, en outre, un circuit d'interruption du microcontrôleur (MC) comprenant: l1 - une bascule (76) du registre d'états d'interruption (62, ISR) du microcontrôleur (MC) dans laquelle est enregistré le changement d'état (Vbusint-ITVBUS) de la borne d'alimentation (VBus), et - une bascule (78) du registre de masques d'interruption (64, IMR) du microcontrôleur dans laquelle est enregistré par ce dernier l'état de masquage (ITVBUSM) du changement d'état (ITVBUS), et - un circuit ET 66 dont une des deux bornes d'entrée reçoit le signal de changement d'état (ITVBUS) et dont l'autre borne d'entrée reçoit le signal d'état de masquage (ITVBUSM), de sorte que le microcontrôleur (MC) ne reçoit un signal de requête d'interruption (IR) que s'il y a eu un changement d'état (ITVBUS = 1) et que le signal d'état de la bascule de masquage a la valeur "1" (ITVBUSM = 1). 6. Appareil périphérique (B) connecté à un appareil (A) en amont par un cable de liaison série de type USB, caractérisé en ce qu'il comprend un dispositif de pilotage selon l'une des revendications 1 à 5.