Brevet FR3006097A1 — publié le 20141128

B12688 - 13-R0-0433 1 MECANISME D'ECRITUPE D'UNE MEMOIRE EEPROM SUR BUS 12C Domaine La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits incluant une ou plusieurs mémoires EEPROM connectées à un bus I2C. Exposé de l'art antérieur Un bus I2C est un bus bifilaire normalisé (UM10204 I2C-bus specification and user manual Rev.4 - 13 February 2012). Les mémoires EEPROM font partie des dispositifs susceptibles d'être raccordés à un bus I2C pour stocker des données provenant d'autres dispositifs connectés au bus ou fournir des données à ces dispositifs. Un dispositif souhaitant écrire des données dans une mémoire EEPROM présente, sur le bus, une série de données avec l'adresse de leur écriture dans la mémoire. La mémoire reçoit ces données, les parallélise, et programme les cellules correspondantes. Tant que l'écriture n'est pas terminée, la mémoire n'envoie pas de signal d'acceptation de sorte qu'elle refuse de communiquer avec le bus, le libérant pour d'autres périphériques éventuellement disponibles. Une fois l'écriture de la série terminée, une série suivante est présentée sur le bus par le dispositif. B12688 - 13-R0-0433 2 Résumé Un objet d'un mode de réalisation est de pallier tout ou partie des inconvénients des systèmes comportant une mémoire EEPROM sur un bus I2C. Un autre objet d'un mode de réalisation est d'accélérer l'écriture de données dans une mémoire EEPROM connectées à un bus I2C. Un autre objet d'un mode de réalisation est de proposer une solution qui soit compatible avec les bus I2C 10 existants et qui ne nécessite aucune modification du protocole I2C côté dispositif accédant à la mémoire. Un autre objet d'un mode de réalisation est de proposer une solution plus particulièrement adaptée à des mémoires EEPROM dont l'adressage dans la mémoire utilise au 15 moins un bit d'un champ d'adresse de sélection du circuit esclave. Selon un premier aspect, un objet d'un mode de réalisation est de proposer une solution compatible avec le fonctionnement actuel des bus I2C. 20 Selon un deuxième aspect, un objet d'un mode de réalisation est de proposer une solution qui ne modifie pas le cheminement des données dans la mémoire. Pour atteindre tout ou partie de ces objets ainsi que d'autres, on prévoit un procédé d'écriture de données dans une 25 mémoire EEPROM connectée à un bus I2C, dans lequel les données à écrire sont transmise par trames dont la taille correspond à la taille d'une demi-page physique de la mémoire, la programmation d'une page de donnée dans la mémoire s'effectuant pendant qu'une autre page est reçue. 30 Selon un mode de réalisation, la mémoire accuse réception des données d'une demi-page pendant qu'une autre demi-page est en cours de programmation. Selon un mode de réalisation, la mémoire est divisée en deux groupes de cellules adressables séparément. B12688 - 13-R0-0433 3 Selon un mode de réalisation, chaque groupe est sélectionné alternativement. Selon un mode de réalisation, un bit de poids fort de l'adresse d'écriture dans la mémoire sélectionne alternativement 5 chaque groupe. On prévoit également un circuit de mémoire EEPROM, adapté à la mise en oeuvre du procédé selon l'une quelconque des revendications précédentes. Selon un mode de réalisation, des multiplexeurs 10 sélectionnent alternativement chaque groupe. Brève description des dessins 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 15 relation avec les figures jointes parmi lesquelles : la figure 1 est une représentation schématique d'un système comportant des dispositifs électroniques connectés à un bus I2C ; la figure 2 illustre, de façon très schématique, une 20 trame de communication sur un bus I2C ; la figure 3 est une représentation, sous forme de blocs, d'un mode de réalisation d'une mémoire selon un premier aspect ; la figure 4 illustre, de façon très schématique, un 25 mode de mise en oeuvre du procédé d'écriture dans une mémoire EEPROM selon le premier aspect de la figure 3 ; les figures aA et 5B illustrent, de façon très schématique, des exemples de trames adaptées à la mémoire de la figure 3, selon un mode de réalisation ; 30 les figures 6A. et 6B illustrent, de façon très schématique, des exemples de trames adaptées à la mémoire de la figure 3, selon un autre mode de réalisation ; la figure 7 est une représentation, sous forme de blocs, d'une mode de réalisation d'une mémoire selon un deuxième 35 aspect ; B12688 - 13-R0-0433 4 la figure 8 illustre, de façon très schématique, un mode de mise en oeuvre du procédé d'écriture dans une mémoire EEPROM selon le deuxième aspect de la figure 7 ; les figures 9A et 9B illustrent, de façon très 5 schématique, des exemples de trames adaptées à la mémoire de la figure 7, selon un mode de réalisation ; et les figures 10A et 10B illustrent, de façon très schématique, des exemples de trames adaptées à la mémoire de la figure 7, selon un autre mode de réalisation. 10 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. Par souci de clarté, seuls les éléments utiles à la compréhension des modes de réalisation qui vont être décrits ont été représentés et seront détaillés. 15 En particulier, le fonctionnement d'un bus I2C n'a pas été détaillé, les modes de réalisation décrits étant compatibles avec le fonctionnement usuel et ne nécessite aucune modification du protocole I2C. La figure 1 est une représentation schématique d'un 20 système comportant plusieurs dispositifs ou circuits électroniques connectés à un bus 1, de type I2C. Le système peut être un téléphone (mobile, DECT ou autre), un équipement de radio ou télédiffusion, un ordinateur, et plus généralement n'importe quel équipement traitant des données numériques. 25 Un bus I2C comporte deux conducteurs SDA et SCL, respectivement destinés à véhiculer des données et un signal de synchronisation. Le protocole I2C est normalisé. Plusieurs dispositifs électroniques devant communiquer entre eux sont connectés au bus 1. Le plus souvent, ces 30 dispositifs incluent un microcontrôleur 12 et divers circuits ou dispositifs 14 (DEV1), 16 (DEV2), par exemple des mémoires volatiles ou non, des décodeurs, des processeurs de traitement, des capteurs, etc. B12688 - 13-R0-0433 Dans les applications visées par la présente description, un ou plusieurs circuits 3 de mémoire non volatile reprogrammable (EEPROM) sont connectés au bus 1. Dans la représentation de la figure 1, seuls les 5 conducteurs du bus 1 ont été représentés. En pratique, le système comporte généralement d'autres constituants et les circuits 12, 14, 16 et 3 peuvent être connectés à divers conducteurs d'alimentation, et à d'autre bus d'adresses, de données et de commande qui n'ont pas été représentés. La figure 2 représente un exemple usuel de trame 2 de transmission de données depuis un dispositif ou circuit maître vers une mémoire 3 (circuit esclave). On fera par la suite référence à un microcontrôleur 22 comme circuit maître, mais ce qui va être décrit s'applique plus généralement à tout circuit adapté à communiquer sur un bus I2C. D'après la norme I2C, une trame commence par une condition de démarrage 21 (S), suivie d'un octet de sélection 22 dont une première partie 221 (SLAVE ADDRESS) sur 7 bits, identifie le dispositif destinataire et dont une deuxième partie 222 généralement sur un bit, identifie l'opération à effectuer sur ce dispositif esclave, à savoir récupération (ou lecture) de données (R) ou un envoi (ou écriture) de données (W). Pour une mémoire EEPROM, l'état 0 ou 1 (en niveau logique) de ce bit 23 identifie une lecture ou une programmation. Chaque octet transmis sur le bus I2C est suivi d'un bit 23 (A) positionné par le récepteur et dont l'état indique au microcontrôleur la réception ou non de l'octet par la mémoire. En fait, ce bit est au repos dans un état (N) indicateur d'une absence de réception et, quand elle a reçu l'octet, la mémoire change l'état de ce bit vers un état (A) que le microcontrôleur décode comme un accusé-réception. Une fois le circuit esclave sélectionné (adressé), un ou deux octets 24 (ADD) qui suivent servent à identifier l'adresse de lecture ou d'écriture dans ce circuit. Puis, les données sont transmises par octet 25 (DATAi, avec i compris entre 1 et m). Un bit d'accusé-réception 23, généré par B12688 - 13-R0-0433 6 le dispositif recevant les données, suit chaque octet d'adresse ou de données transmis. La fin de la trame est repérée par une condition d'arrêt 26 (P) positionné par le microcontrôleur. En prenant l'exemple d'une mémoire EEPROM 3 d'une 5 capacité de 1 mégabit, la trame 2 comporte deux octets 24 d'adresse et typiquement 256 octets 25 de données (m = 256) correspondant à la taille maximale d'une page. Un problème que l'on rencontre avec les mémoires EEPROM usuelles fonctionnant sous bus I2C est qu'elles ne 10 peuvent pas recevoir des données pendant qu'elles en programment d'autres. En d'autres termes, l'écriture dans une mémoire EEPROM se décompose en une phase de réception des données à écrire, sous la forme de la réception d'une trame I2C, puis d'une phase de programmation pendant laquelle les cellules du réseau 15 matriciel de la mémoire EEPROM sont programmées (écrites). Cela se traduit par le fait que la mémoire ne peut d'habitude pas recevoir de données tant que la programmation d'une trame n'est pas terminée. Cela conditionne la durée d'une opération d'écriture. 20 Côté bus I2C, il ne faut pas que le microcontrôleur 12 ne renvoie de données pendant que la mémoire n'est pas libre, car la mémoire ne pourrait pas les traiter et elles seraient perdues. Selon la configuration du microcontrôleur, soit il 25 envoie périodiquement (à la suite les unes des autres) des tentatives d'écriture jusqu'à ce que la mémoire réponde (mode dit polling), soit il attend une temporisation déterminée (applicable si le microcontrôleur connait a priori le temps nécessaire à la programmation par la mémoire) avant d'envoyer 30 une nouvelle trame de demande de lecture ou d'écriture. Dans le premier cas, le microcontrôleur 12 envoie, après la condition d'arrêt 26, une ou plusieurs tentatives d'écriture en initiant une trame 29 avec une condition de démarrage 21, l'adresse 221 de la mémoire et un bit 222 demandant une écriture (W). Tant que 35 la mémoire est occupée, elle n'envoie pas d'accusé-réception 23' B12688 - 13-R0-0433 7 (le bit reste dans l'état de repos). Une fois que la mémoire a répondu en positionnant le bit 23' d'accusé-réception (A), le microcontrôleur renvoie une trame 2 d'écriture en recommençant depuis le début. Il serait souhaitable de raccourcir la durée d'une opération d'écriture. On pourrait penser augmenter la fréquence d'horloge du bus afin d'accélérer le rythme de transmission des données dans la mémoire. Toutefois, un bus I2C est, de par sa nature, limité en fréquence. En pratique, il est difficile de gérer un bus I2C à une fréquence supérieure au MHz. De plus, cela introduit des contraintes sur les composants, qui augmentent leurs prix de revient. Selon la présente description, on prévoit que la 15 mémoire EEPROM accepte des données du bus I2C pendant qu'elle est en train d'écrire d'autres données dans ses cellules. Ainsi, on adjoint à la mémoire EEPROM une fonction tampon (virtuelle ou réelle) permettant, en écriture, de recevoir des données alors que les cellules sont en train d'être programmées. 20 On pourrait penser intercaler, entre la connexion du circuit de mémoire EEPROM et le bus, une mémoire vive servant de mémoire tampon. Toutefois, cela ne ferait que transposer le problème à la connexion entre cette mémoire vive et la mémoire EEPROM, la mémoire vive devant alors attendre que la mémoire 25 EEPROM ait fini de programmer ces cellules pour lui envoyer de nouvelles données. Une contrainte est que, pour que la mémoire fonctionne correctement sur le bus I2C, les modifications apportées à celle-ci et à son mode opératoire doivent être transparentes 30 pour le bus, c'est-à-dire que l'on doit respecter la structure de la trame I2C. L'octet 24 ou les deux octets 24 d'adresse de la trame I2C conditionne la capacité d'adressage de la mémoire (1 octet limite à 16 kbits, 2 octets limitent à 512 kbits). On peut 35 cependant étendre cette capacité d'adressage jusqu'à 4 Mbits en B12688 - 13-R0-0433 8 utilisant de 1 à 3 bits de l'octet 22 de sélection du dispositif esclave (du champ 221 d'adresse de dispositif esclave). Les mémoires EEPROM fonctionnant sous bus I2C peuvent donc être réparties en deux grandes catégories : les mémoires dont la capacité requiert d'utiliser, en plus des un ou deux octets d'adresse 24 de la trame I2C, un ou plusieurs bits de l'octet de sélection 22, et les mémoires pour lesquels les un ou deux octets d'adresse 24 de la trame I2C suffisent. En pratique, la première catégorie concerne les mémoires de plus de 2 kbits (4 kbits et plus) si on utilise un seul octet d'adresse 24 (mode d'adressage dit I2C) et les mémoires de plus de 512 kbits (1 Mbits et plus) si l'on utilise deux octets d'adresse 24 (mode d'adressage dit I2C étendu). L'inventeur a constaté que, pour les mémoires de la première catégorie en mode I2C étendu, c'est-à-dire les mémoires de plus de 512 kbits, la taille d'une page (déterminée par le nombre de lignes de bits (colonnes) traitées par le décodeur) est de 256 octets pour les mémoires de 1 et 2 Mbits. Pour ce qui est des mémoires en mode I2C (un seul bit d'adresse), soit les mémoires ayant une capacité d'au plus l6kbits, la taille d'une page est de 16 octets. Pour les mémoires de la seconde catégorie en mode I2C étendu, la taille d'une page est typiquement de 128 octets pour une mémoire de 512 kbits, de 64 octets pour une mémoire de 256 ou de 128 kbits, et de 32 octets pour une mémoire de 64 kbits ou de 32 kbits. Habituellement, la taille d'une trame 2 envoyée sur le bus I2C en écriture correspond à la taille d'une page. Cela optimise le chargement dans la mémoire. Selon un premier aspect, on vise à préserver la taille de page habituellement utilisée et ainsi à ne pas modifier la taille des trames côté microcontrôleur. La figure 3 est un schéma-bloc simplifié d'un mode de réalisation d'une mémoire 3 selon ce premier aspect. B12688 - 13-R0-0433 9 De façon usuelle, la mémoire comporte un plan mémoire 31 (MATRIX) formé d'un réseau matriciel de cellules mémoire (non représentées). Le plan 31 définit la capacité de la mémoire. Un décodeur 32 de rangée (ROW DEC) décode les adresses reçues pour sélectionner les cellules à programmer. Un décodeur 33 (LATCH) de colonne ou ligne de bit reçoit les données à programmer, par rangée, c'est-à-dire les états des différents bits de la rangée adressée. Les décodeurs 32 et 33 sont commandés par un circuit logique 34 (CTRL) qui reçoit les trames du bus I2C et les décode. Les octets d'adresse sont envoyés vers un registre d'adresse 35 (AREG) et les octets de données sont envoyés vers un registre de données 36 (DREG). Le circuit comporte en outre un générateur haute tension 37 (HV) pour générer, à partir d'une tension d'alimentation de quelques volts, une tension de programmation des cellules mémoire, par exemple de l'ordre de la quinzaine de volts, supérieure à cette tension d'alimentation. La structure ci-dessus correspond à un exemple usuel de mémoire EEPROM. Le registre de données 36 a pour rôle de paralléliser les octets de données qui sont reçus en série du bus I2C. En pratique, il s'agit le plus souvent d'un registre sur huit bits qui, une fois qu'il a reçu un octet du bus I2C, le transfère au décodeur 33. Le circuit 34 envoie un accusé réception 23 pour obtenir l'octet suivant. Le décodeur de colonne 33 stocke de façon temporaire ces données jusqu'à ce que la page soit complète (en fait jusqu'à réception de la condition 26 de fin de trame), puis les envoie sur les lignes de bits du plan mémoire 31. Il en résulte l'écriture en une seule passe des cellules appartenant à la rangée décodée. Le registre 35 a le même rôle que le registre 36, mais pour les adresses qu'il parallélise à destination du décodeur 32. Dans un fonctionnement usuel, la mémoire (sa logique de contrôle 34) n'envoie un bit d'accusé-réception 23' de la 35 trame 29 (phase d'attente) qu'une fois la programmation B12688 - 13-R0-0433 10 effectuée, c'est-à-dire une fois que les données ont fini d'être stockées, de façon non volatile dans les cellules mémoire, ce qui prend généralement de l'ordre de la milliseconde. Selon le mode de réalisation de la figure 3, on intercale, entre le registre de données 36 et le décodeur de colonne 33, une mémoire tampon 39 (mémoire volatile) ayant la taille d'une page du plan mémoire 32. Cette mémoire tampon permet de recevoir une page pendant qu'une page précédente est en cours d'écriture dans le plan mémoire. Ce mode de réalisation requiert de modifier la gestion de l'émission du bit d'accusé-réception par le dispositif esclave (la mémoire). Ainsi, le circuit 34 est paramétré pour changer l'état du bit 23', donc émettre un accusé-réception sur le bus, alors même que la mémoire est en programmation, c'est-à- dire que l'écriture des bits présent dans les bascules (non représentées) de lignes de bit du décodeur de colonne 33 n'est pas terminée. La figure 4 est un schéma-bloc illustrant le fonctionnement de ce mode de réalisation. La partie gauche de la figure illustre ce qui se passe côté microcontrôleur et la partie droite ce qui se passe côté mémoire. Les opérations sur le bus sont symbolisées en partie centrale. Le microcontrôleur commence (bloc 41, BEGIN) par préparer les données à envoyer à la mémoire. Il envoie une première trame FR1 sur le bus (bloc 421, SEND FR1) sous forme d'octets (BYTES) successifs séparés par des bits d'accusé-réception (A). Côté mémoire, les octets reçus sont parallélisés par les registres d'adresse, puis de données, les octets de données étant transférés à la mémoire tampon 39 (bloc 431, FR1 -> DREG -> BUFF). Une fois la page reçue, le contenu de la mémoire tampon 39 est transféré dans les bascules du décodeur de colonne 33 (bloc 44, FR1 -> LATCH). Par exemple, toutes les données sont transférées en parallèle de la mémoire tampon 39 au décodeur 33. En variante, ce transfert peut être sérialisé, par exemple par B12688 - 13-R0-0433 11 octets ou par mots de plusieurs octets, au prix d'un temps légèrement allongé, mais au bénéfice d'un circuit plus simple. Le transfert dans le décodeur s'effectue après que la mémoire a reçu une condition d'arrêt indiquant la fin de la transmission de la trame. Côté microcontrôleur, on suppose dans cet exemple qu'il se met en mode d'envoi de requêtes d'écriture successives (bloc 451, POLLING) en envoyant des trames 29 avec le bit 222 de l'octet de sélection dans l'état W. En fait, le microcontrôleur essai d'envoyer la trame suivante, mais reste bloqué au niveau du premier octet tant que la mémoire n'en accuse pas réception (bit 23'). Tant que le transfert dans le décodeur 33 n'a pas eu lieu, le bit 23' reste dans l'état N de repos. Dès que ce transfert est effectué, le circuit 34 de la mémoire peut positionner ce bit 23' dans l'état A. S'agissant de la première trame, le temps d'attente 451 est réduit car les bascules du décodeurs sont libres (il n'y a pas de programmation en cours). En variante, on pourra prévoir que la première trame ne transite pas par la zone tampon et soit directement traitée par le décodeur de colonne. S'ensuit alors, à la fois la programmation du plan mémoire 31 avec les données de la première page (bloc 461, PROG FR1) et l'envoi (bloc 422, SEND FR2) de la deuxième trame FR2 par le microcontrôleur et la mise en parallèle et le transfert des données, côté mémoire, dans la zone tampon 33 (bloc 432, FR2 -> DREG -> BUFF). Le microcontrôleur se remet alors en mode d'attente (bloc 45). La durée du mode d'attente est ici conditionnée par la durée la plus longue entre le temps nécessaire à la programmation d'une trame dans le plan mémoire et le temps nécessaire à la transmission d'une trame sur le bus. Si le temps de programmation est le plus long des deux (cas illustré par la figure 4), tant que la programmation de la mémoire n'est pas terminée (sortie NO du bloc 471, 35 FR1 WRITTEN ?), le contenu de la zone tampon 39 ne peut pas être B12688 - 13-R0-0433 12 transféré dans le décodeur 33 et le circuit 34 laisse donc le bit 23' au repos. Dès que la programmation de la page est terminée (sortie Y du bloc 471), le contenu de la zone tampon (la trame 5 ER2) est transféré dans le décodeur de colonne (bloc 442, ER2 -> LATCH), puis le circuit 34 active le bit 23' dans l'état A. Si le temps de transmission est plus long que le temps de programmation, la fin de l'envoi de la trame suivante sera 10 postérieure à la fin de la programmation de la trame courante. La condition 471 sera remplie et le "polling donnera immédiatement un accusé-réception sur le bit 23'. Ce fonctionnement se poursuit pour toutes les pages que le microcontrôleur souhaite écrire, avec pour chaque trame 15 i, son envoi (bloc 42i, SEND FRi) par le microcontrôleur et son stockage dans la zone tampon de la mémoire (bloc 43i, PRi - -> DREG -> BUFF) pendant la programmation (bloc 46i-1, PROG FRi-1) de la trame précédente, le transfert de la trame dans le décodeur de colonne (bloc 44i, FRi -> LATCH) une fois 20 l'écriture de la trame précédente terminée (bloc 47i-1, PRi-1 WRITTEN ?), et ainsi de suite ((bloc 42i+1, SEND FRi ; bloc 43i+1, PRi+1 -> DREG -> BUFF ; bloc 46i, PROG PRi ; etc.). On peut prévoir que le microcontrôleur s'assure qu'une programmation est terminée en envoyant une commande de lecture. 25 Si une programmation est en cours ou une trame est en attente dans la mémoire tampon, la mémoire refuse en laissant le bit 23' à l'état N. Par contre, sur une commande d'écriture, la mémoire peut l'accepter. Par exemple, un test de lecture est déclenché par le microcontrôleur à la fin des n trames. 30 Lors du traitement de la dernière trame FRn ((bloc 42n, SEND FRn ; bloc 43n, FRn -> DREG -> BUFF ; etc.), l'attente par le microcontrôleur (bloc 45n) est alors plus longue car il faut attendre (bloc 47n-1, FRn-1 WRITTEN ?) la fin de la programmation de la trame FRn-1 (bloc 46n-1, PROG FRn-1) pour 35 transférer (bloc 44n, FRn -> LATCH) la trame FRn dans le B12688 - 13-R0-0433 13 décodeur et commencer sa programmation (bloc 46n, PROG FRn). Le dernier bit 23' est positionné dans l'état A à la fin de la programmation de la trame FRn (sortie Y du bloc 47n, FRn WRITTEN ?). La phase d'attente est toutefois ici une phase où le microcontrôleur cherche à lire des données (bit 222 = R) plutôt qu'à en écrire, pour s'assurer que la programmation est finie. La procédure d'écriture est alors terminée (bloc 48, END). Comme décrit ci-dessus, le microcontrôleur fonctionne de préférence en mode "polling", c'est-à-dire qu'à la fin de la trame, il envoie une commande d'écriture jusqu'à ce que la mémoire réponde. En variante, on pourra soit prévoir un mode temporisé avec une temporisation nulle (dans le cas d'une durée de programmation plus rapide que la durée de transmission d'une trame), ou ajuster la temporisation à la différence de durée entre programmation et transmission. Selon un mode de réalisation destiné à la première catégorie de mémoires (utilisant un, deux ou trois bits de la partie 221 de l'octet 22 de sélection pour compléter l'octet ou les octets d'adresse 24), on utilise le bit de poids fort de la partie d'adresse contenue dans le champ 221 de l'octet de sélection 22 pour organiser la gestion de la mémoire tampon 39 et programmer le plan mémoire 31 avec les données reçues d'une page pendant que la mémoire reçoit la page suivante. On tire profit du fait que la taille de la page dépend du mode (I2C ou I2C étendu) mais ne varie pas avec la taille de la mémoire (16 octets pour le mode I2C, et 256 octets pour les mémoires de 1 et 2 Mbits). Cela est donc facilement gérable côté microcontrôleur. Le microcontrôleur débute une trame en envoyant un octet de sélection et deux octets d'adresse. Toutefois, il alterne l'état du bit de poids fort d'une trame à la suivante. Côté mémoire, les bits d'adresse, contenus dans l'octet 22 et dans les octets 24, sont transférés de façon usuelle vers le registre d'adresse. Toutefois, le circuit 34 interprète en outre B12688 - 13-R0-0433 14 le bit de poids fort de l'adresse pour gérer le registre ou mémoire tampon. Les figures 5A et 5B illustrent des exemples de trames d'écriture selon ce mode de réalisation, respectivement dans le 5 cas où la programmation d'une page est plus lente que la transmission d'une trame et inversement. Les figures 5A et 5B concernent le cas d'une mémoire de 1 Mbits. Aux figures 5A et 5B, on a identifié les périodes respectives 42, 45 et 46 d'émission des trames par le microcontrôleur, d'attente et de 10 programmation dans la matrice mémoire pour n pages (ici équivalentes à n trames) de m octets (BYTES). On retrouve la condition de démarrage 21 (S) puis, pour chaque trame, les octets de sélection 22, d'adresses 24 (add) et de données 25 (dat), séparés par des bits 23 d'accusé 15 réception (A), la trame se terminant par une condition d'arrêt 26 (P). Dans ce mode de réalisation, le contenu de l'octet de sélection 22 diffère d'une trame à l'autre et le microcontrôleur alterne la valeur A0, A2 du bit de poids fort de la partie d'adresse incluse dans le champ 221. 20 Les figures 5A et 5B illustrent le cas où la transmission de la deuxième trame est immédiate après la première trame, la zone tampon étant initialement vide (étape 451, figure 4, réduite au minimum, voire absente). Pour la suite, dans le cas de la figure 5A, il y a 25 entre chaque trame, une phase d'attente 45 constituée de trames 29 (condition 21, octet 22, bit 23' à l'état N) jusqu'à ce que le bit 23' soit positionné à l'état A par la mémoire. Dans cet exemple, le bit de poids fort de l'adresse prend alternativement la valeur AO ou A2 d'une phase d'attente à la suivante. 30 Dans le cas de la figure 5B, il n'y a pas de phase d'attente côté microcontrôleur. C'est la mémoire qui attend dans la mesure où la programmation est plus rapide que la transmission. Cela est illustré par l'absence de phase 45 et le fait que la phase 46 est plus courte que la phase 42. B12688 - 13-R0-0433 15 Pour s'assurer que la mémoire a fini de programmer, on peut effectuer des requêtes de lecture. Quel que soit le bit de poids fort de l'adresse, si les programmations (en cours et éventuellement en attente dans le tampon 39) sont finies, la mémoire enverra un bit 23' à l'état A. Selon un autre mode de réalisation, adapté aux deux catégories de mémoires (utilisant une partie de l'octet de sélection ou non), l'alternance entre une page et la suivante s'effectue directement à partir des trames, la mémoire identifiant la fin d'une page par la fin d'une trame (réception de la condition 26). Ce mode de réalisation présente l'avantage d'être compatible avec toutes les mémoires (y compris celles dont la capacité ne requiert pas d'inclure des bits d'adresse dans l'octet de sélection). On notera que, quel que soit le mode de réalisation, le microcontrôleur connaît la taille de la mémoire qu'il souhaite adresser. Il connaît donc la taille de la page, donc de la mémoire tampon. Il peut alors adapter la taille maximum de la trame pour qu'elle corresponde à la taille d'une page. Il peut toujours envoyer moins d'octets que ne compte la page. Toutefois, s'il en envoie plus, les derniers octets reçus écrasent les premiers. Les figures 6A et 6B illustrent des exemples de trames 25 d'écriture selon cet autre mode de réalisation, respectivement dans le cas où la programmation d'une page est plus lente que la transmission d'une trame et inversement. Par rapport au mode de réalisation illustré par les figure aA et 5B, une différence est que le microcontrôleur ne se 30 préoccupe pas d'alterner le bit de poids fort de l'adresse (cela est illustré aux figure 6A et 6B dans un exemple de mémoire de la deuxième catégorie, l'octet 22 ayant toujours la valeur A0). Une autre différence est que la mémoire n'a pas besoin d'interpréter ce bit de poids fort. Cela simplifie l'adressage 35 côté microcontrôleur. Un autre avantage de ce mode de B12688 - 13-R0-0433 16 réalisation est qu'il est complètement transparent pour le microcontrôleur. La gestion de l'accusé-réception de fin de trame sur la requête en lecture 29 du microcontrôleur est similaire à 5 celle du mode de réalisation des figures 5A et 5B. Quel que soit le mode de réalisation, le fonctionnement de la mémoire en lecture n'est pas modifié. Les données sont directement lues, par octet, et transférées du plan mémoire vers un registre de données de sortie non représenté. 10 Selon un deuxième aspect, on tire profit de la présence des bascules présentes au niveau du décodeur de colonne pour jouer le rôle de mémoire tampon. Par rapport au premier aspect, une différence est que les trames d'écritures on la taille d'une demi-page physique de la mémoire et non la taille 15 d'une page. La figure 7 est un schéma-bloc d'un mode de réalisation d'une mémoire 3' selon ce deuxième aspect. On retrouve les éléments 31, 32, 34, 35, 36 et 37 de la figure 3. Par contre, selon ce deuxième aspect, le décodeur 20 de colonnes 33' est divisée en deux groupes ou banques de cellules : un premier groupe 332 (BANK') de lignes de bit correspond aux adresses de rang le plus élevé et un deuxième groupe 334 (BANK2) de lignes de bit correspondant aux adresses de rang le plus faible. Le groupe est identifié par le bit de 25 poids fort de l'adresse. Par exemple, pour une mémoire de 2048 lignes de bit (page de 256 octets), les groupes 332 et 334 adressent chacun 128 octets. Trois multiplexeurs MUX, respectivement 71 entre le registre d'adresses 35 et les groupes 332 et 334, 72 entre le circuit de commande 34 et les groupes 30 332 et 334, et 73 entre le circuit d'alimentation 37 et les groupes 332 et 334 sont ajoutés. Le rôle de ces multiplexeurs 71, 72 et 73 est d'aiguiller les données et la haute tension de programmation vers l'un ou l'autre des groupes. Les signaux de sélection des multiplexeurs n'ont pas été illustrés. Ces signaux 35 proviennent en pratique du bloc de commande 34. En variante, le B12688 - 13-R0-0433 17 multiplexeur 71 est omis. Il n'est en effet pas gênant d'envoyer l'adresse aux deux groupes, pourvu que le multiplexeur 72 envoie les signaux de commande appropriés pour ne charger les données que dans un des groupes 332 et 334. Afin de préserver le fonctionnement du plan mémoire, celui-ci doit, lors de la fabrication, être divisée en deux groupes ou deux zones adressables séparément. Par rapport au premier aspect, l'adressage effectué par le microcontrôleur est par demi-page de la mémoire et non 10 par page. Ainsi, le microcontrôleur doit sélectionner en alternance l'un ou l'autre des groupes La figure 8 est un schéma-bloc illustrant le fonctionnement de ce mode de réalisation. La partie gauche de la figure illustre ce qui se passe côté microcontrôleur et la 15 partie droite ce qui se passe côté mémoire. Les opérations sur le bus sont symbolisées en partie centrale. Le microcontrôleur commence (bloc 81, BEGIN) par préparer les données à envoyer à la mémoire. Il envoie une première trame FR1 sur le bus (bloc 821, 20 SEND FR1) sous forme d'octets (BYTES) successifs séparés par des bits d'accusé-réception (A). Cette trame représente la taille d'une demi-page de la mémoire. Côté mémoire, les octets reçus sont parallélisés par les registres d'adresse, puis de données, les octets de données étant transférés (en parallèle ou 25 partiellement en série) au premier groupe de bascules du registre de colonne (bloc 831, FR1 -> DREG -> BANK1). Une fois que le microcontrôleur a envoyé sa demi-page, on suppose dans cet exemple qu'il se met en mode d'envoi de requêtes d'écriture successives (bloc 851, POLLING) en envoyant 30 des trames 29 avec le bit 222 de l'octet de sélection dans l'état W. Une fois la première demi-page reçue, le circuit 34 de la mémoire positionne le bit 23' dans l'état A. S'agissant de la première trame, le temps d'attente 851 est réduit car le 35 transfert dans le décodeur est rapide. B12688 - 13-R0-0433 18 S'ensuit alors, à la fois la programmation du plan mémoire 31 avec les données de la première demi-page (bloc 861, PROG FR1) et l'envoi (bloc 822, SEND FR2) de la deuxième trame FR2 par le microcontrôleur et son transfert, côté mémoire, dans le second groupe de bascules du registre de colonne (bloc 832, FR2 -> DREG -> BANK2). Le microcontrôleur se remet alors en mode d'attente (bloc 85). La durée du mode d'attente est ici conditionnée par la durée la plus longue entre le temps nécessaire à la programmation d'une demi-page dans le plan mémoire et le temps nécessaire à la transmission d'une trame sur le bus. Si le temps de programmation est le plus long des deux (cas illustré par la figure 8), tant que la programmation de la mémoire n'est pas terminée (sortie NO du bloc 871, FR1 WRITTEN ?), la demi-page suivante ne peut pas être reçue dans le décodeur 33 et le circuit 34 laisse donc le bit 23' au repos. Dès que la programmation de la demi-page est terminée (sortie Y du bloc 871), le circuit 34 active le bit 23' dans l'état A. Si le temps de transmission est plus long que le temps de programmation, la condition 871 est immédiatement remplie et le bit 23' est dans l'état A dès la première requête de "polling" du microcontrôleur. Ce fonctionnement se poursuit pour toutes les pages que le microcontrôleur souhaite écrire, avec pour chaque demi-page i, son envoi dans une trame (bloc 82i, SEND FRi) par le microcontrôleur et son transfert dans le groupe de bascules libre du décodeur de colonne (bloc 83i, FRi -> DREG -> BANK2), arbitrairement le groupe 2, pendant la programmation (bloc 86i-1, PROG FRi-1) de la demi-page précédente, l'envoi d'un bit 23' d'accusé-réception une fois l'écriture de la trame précédente terminée (bloc 87i-1, BANK1 WRITTEN ?), et ainsi de suite ((bloc 82i+1, SEND FRi ; bloc 83i+1, B12688 - 13-R0-0433 19 PRi+1 -> DREG -> BANK1 ; bloc 46i, PROG PRi ; bloc 87i, BANK2 WRITTEN ? ; etc.). Comme dans le premier aspect, le microcontrôleur s'assure que la programmation est terminée par l'envoi de 5 requêtes de lecture. Ainsi, lors du traitement de la dernière demi-page ou trame FRn (bloc 82n, SEND FRn ; bloc 83n, FRn -> DREG -> BANK2 ; etc.), l'attente par le microcontrôleur (bloc 85n) est plus longue car il faut attendre (bloc 87n-1, BANK1 WRITTEN ?) la fin 10 de la programmation de la trame FRn-1 (bloc 86n-1, PROG FRn-1) pour commencer la programmation de la trame FRn (bloc 86n, PROG FRn). Le dernier bit 23' est positionné dans l'état A à la fin de la programmation de la trame FRn (sortie Y du bloc 87n, BANK2 WRITTEN ?). 15 La procédure d'écriture est alors terminée (bloc 88, END). Dans cet aspect également, le microcontrôleur fonctionne de préférence en mode "polling", c'est-à-dire qu'à la fin de le trame, il envoie une commande d'écriture jusqu'à ce 20 que la mémoire réponde. En variante, on pourra soit prévoir un mode temporisé avec une temporisation nulle (dans le cas d'une durée de programmation plus rapide que la durée de transmission d'une trame), ou ajuster la temporisation à la différence de durée entre programmation et transmission. 25 Selon un mode de réalisation destiné à la première catégorie de mémoires (utilisant un, deux ou trois bits de la partie 221 de l'octet 22 de sélection pour compléter l'octet ou les octets d'adresse 24), on utilise le bit de poids fort de la partie d'adresse contenue dans le champ 221 de l'octet de 30 sélection 22 pour sélectionner le groupe 332 ou 334 de bascules du décodeur de colonne 33 et programmer le plan mémoire 31 avec les données reçues d'une demi-page pendant que la mémoire reçoit la demi-page suivante. Comme pour le premier aspect, on tire profit du fait que la taille de la page dépend du mode (I2C ou 35 I2C étendu) mais ne varie pas avec la taille de la mémoire (16 B12688 - 13-R0-0433 20 octets pour le mode I2C, et 256 octets pour les mémoires de 1 et 2 Mbits). Cela est donc facilement gérable côté microcontrôleur. Le microcontrôleur débute une trame en envoyant un octet de sélection et deux octets d'adresse. Toutefois, il 5 alterne l'état du bit de poids fort d'une trame à la suivante. Côté mémoire, les bits d'adresse, contenus dans l'octet 22 et dans les octets 24, sont transférés de façon usuelle vers le registre d'adresse. Toutefois, le circuit 34 interprète en outre le bit de poids fort de l'adresse pour gérer le groupe de 10 bascules adressé. Les figures 9A et 9B illustrent des exemples de trames d'écriture selon ce mode de réalisation, respectivement dans le cas où la programmation d'une demi-page est plus lente que la transmission d'une trame et inversement. Les figures 9A et 9B 15 concernent le cas d'une mémoire de 1 Mbits. Aux figures 9A et 9B, on a identifié les périodes respectives 82, 85 et 86 d'émission des trames par le microcontrôleur, d'attente et de programmation dans la matrice mémoire pour n demi-pages (ici équivalentes à n trames) de m/2 octets (m/2 BYTES) plus les bits 20 d'accusé-réception. On retrouve la condition de démarrage 21 (S) puis, pour chaque trame, les octets de sélection 22, d'adresses 24 (add) et de données 25 (dat), séparés par des bits 23 d'accusé réception (A), la trame se terminant par une condition d'arrêt 25 (P). Dans ce mode de réalisation, le contenu de l'octet de sélection 22 diffère d'une trame à l'autre et le microcontrôleur alterne la valeur A0, A2 du bit de poids fort de la partie d'adresse incluse dans le champ 221 pour sélectionner alternativement chacun des groupes de la mémoire. 30 Les figures 9A et 9B illustrent le cas où la transmission de la deuxième trame est immédiate après la première trame, la zone tampon étant initialement vide (étape 851, figure 4 réduite au minimum, voire absente). Pour la suite, dans le cas de la figure 9A, il y a 35 entre chaque trame, une phase d'attente 85 constituée de trames B12688 - 13-R0-0433 21 29 (condition 21, octet 22, bit 23' à l'état N) jusqu'à ce que le bit 23' soit positionné à l'état A par la mémoire. Dans cet exemple, le bit de poids fort de l'adresse prend alternativement la valeur A0 ou A2 d'une phase d'attente à la suivante. Dans le cas de la figure 9B, il n'y a pas de phase d'attente côté microcontrôleur. C'est la mémoire qui attend dans la mesure où la programmation est plus rapide que la transmission. Cela est illustré par l'absence de phase 85 et le fait que la phase 86 est plus courte que la phase 82. Pour s'assurer que la mémoire a fini de programmer, on peut effectuer des requêtes de lecture. Quel que soit le bit de poids fort de l'adresse, si la programmation est finie, la mémoire enverra un bit 23' à l'état A. Selon un autre mode de réalisation, adapté aux deux catégories de mémoires (utilisant une partie de l'octet de sélection ou non), le groupe est identifié par le bit de poids fort, qu'il soit ou non dans l'octet de sélection (par exemple, cas d'une mémoire de 512 kbits). Le microcontrôleur doit cependant toujours, selon le deuxième aspect, alternée les groupes d'une demi-page à l'autre lors de l'envoi. Comme dans le premier aspect, ce mode de réalisation présente l'avantage d'être compatible avec toutes les mémoires (y compris celles dont la capacité de requiert pas d'inclure des bits d'adresse dans l'octet de sélection). Par rapport au premier aspect, la taille maximum d'une trame que peut prendre en compte la mémoire correspond ici à la taille d'une demi-page. Les figure 10A et 10B illustrent des exemples de trames d'écriture selon cet autre mode de réalisation, 30 respectivement dans le cas où la programmation d'une page est plus lente que la transmission d'une trame et inversement. Par rapport au mode de réalisation illustré par les figure 9A et 9B, une différence est que le microcontrôleur ne se préoccupe pas d'alterner le bit de poids fort de l'adresse (cela 35 est illustré aux figure 10A et 10B dans un exemple de mémoire de B12688 - 13-R0-0433 22 la deuxième catégorie, l'octet 22 ayant toujours la valeur A.0). Une autre différence est que la mémoire n'a pas besoin d'interpréter ce bit de poids fort. Cela simplifie l'adressage côté microcontrôleur. Un autre avantage de ce mode de réalisation est qu'il est complètement transparent pour le microcontrôleur. La gestion de l'accusé-réception de fin de trame sur la requête en lecture 29 du microcontrôleur est similaire à celle du mode de réalisation des figures 9A. et 9B. Comme pour le premier aspect, quel que soit le mode de réalisation, le fonctionnement de la mémoire en lecture n'est pas modifié. Les données sont directement lues, par octet, et transférées du plan mémoire vers un registre de données de sortie non représenté. On notera que l'architecture décrite en relation avec le deuxième aspect peut être compatible avec une utilisation par page entière (groupe 1 + groupe 2). Il suffit que le circuit de commande 34 et les multiplexeurs puissent adresser les deux groupes en même temps. Dans ce cas, on perd l'avantage de rapidité lié à la transmission pendant la programmation. Toutefois, cela permet au microcontrôleur de transmettre des données par page entière de façon classique. Divers modes de réalisation ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, le choix entre le premier et le deuxième aspect et entre les différents modes de réalisation peut être dicté par la vitesse du bus et la taille de la mémoire concernée afin d'optimiser les temps d'écriture. Par exemple, pour une mémoire de 1 Mbits, on préférera une réalisation conforme au deuxième aspect. De plus, lorsque l'on fait référence à une transmission ou une programmation par page ou demi-page, on comprendra qu'il peut s'agir de moins d'une page ou moins d'une demi-page en fonction de la quantité de données que l'on souhaite stocker. De même, la transmission pourrait comporter B12688 - 13-R0-0433 23 plus d'une page ou d'une demi-page, les données en excès écrasant les premières données. En outre, la réalisation pratique d'une mémoire selon le premier ou deuxième aspect est à la portée de l'homme du 5 métier à partir des indications fonctionnelles données ci-dessus et en utilisant des techniques en elles-mêmes connues de conception et de fabrication de circuits intégrés. De même, la configuration ou programmation de la mémoire pour qu'elle traite les trames selon l'un des modes de réalisation décrits et 10 notamment positionne les bits s'accusé-réception au bon moment est également à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus. REVENDICATIONS1. Procédé d'écriture de données dans une mémoire EEPROM connectée à un bus I2C, dans lequel les données à écrire sont transmise par trames dont la taille correspond à la taille d'une demi-page physique de la mémoire, la programmation (46) d'une page de donnée dans la mémoire (3') s'effectuant pendant qu'une autre page est reçue (43). 2. Procédé selon la revendication 1, dans lequel la mémoire accuse réception des données d'une demi-page pendant 10 qu'une autre demi-page est en cours de programmation. 3. Procédé selon l'une quelconque des revendications 1 et 2, dans lequel la mémoire (3') est divisée en deux groupes (332, 334) de cellules adressables séparément. 4. Procédé selon la revendication 3, dans lequel 15 chaque groupe (332, 334) est sélectionné alternativement. 5. Procédé selon la revendication 4, dans lequel un bit de poids fort de l'adresse d'écriture dans la mémoire sélectionne alternativement chaque groupe. 6. Circuit de mémoire EEPROM (3'), adapté à la mise en 20 oeuvre du procédé selon l'une quelconque des revendications précédentes. 7. Circuit selon la revendication 6, dans lequel des multiplexeurs (71, 72, 73) sélectionnent alternativement chaque groupe.