Astuces, Outils et Applications pour l’Industrie Electronique en Europe.

Posté le 6 mars 2017 17:27:40 par Claude Massebeuf

Plus de flexibilité, un équipement de test programmable dernier cri pour l’I2C et le SPI

I2C et SPI, voici deux bus série particulièrement populaires qui continuent de survivre, mais des évolutions importantes sont apparues dans les équipements de test et de mise au point utilisés par les ingénieurs systèmes.

Philips a développé le bus I2C (serial Inter-IC bus) dans les années 1980, et Motorola, il y a longtemps, a développé le bus SPI (Serial Peripheral Interface), tous deux formant une liaison simple de données entre processeurs et dispositifs esclaves. I2C utilise 2 fils, alors que SPI en utilise 4 (Figures 1 et 2). I2C est plus compact et permet de connecter de multiples maitres à de multiples esclaves en utilisant seulement les 2 fils mais est moins performant en vitesse. De son coté le SPI offre des débits de données bien plus élevés mais des liaisons individuelles sur 4 fils sont nécessaires pour des esclaves multiples. Les deux protocoles sont simples, SPI offrant un débit plus élevé, mais des lignes individuelles sont nécessaires pour des esclaves multiples. En fait, les deux protocoles sont simples, il fonctionnent bien et sont omniprésents dans toute sorte de systèmes enfouis – depuis les processeurs et périphériques jusqu’aux mémoires non volatiles comme les EEPROM et les Flash en passant par les capteurs et les dispositifs E/S à faible vitesse.

En fait, l’omniprésence a son revers. La plupart des gens pensent que mettre au point des systèmes utilisant ces standards est aussi simple qu’élémentaire. Pas si sur… En fait, ils sont si courants que les concepteurs doivent penser que des instruments rudimentaires et à bas de prix seront « suffisants » pour de tels bus modestes.

La vérité est toute autre, les évolutions d’aussi bien du SPI que de l’I2C nécessitent de meilleurs outils pour mettre au point les nouvelles évolutions. Une instrumentation en réseau ou déportée est devenue nécessaire dans un environnement moderne d’études et de mise au point. La gestion des données/évènements automatisée dans le style « si ceci, alors cela » des deux bus I2C et SPI requière des équipements sophistiqués pour isoler les données/événements et mettre au point ces systèmes complexes enfouis multi esclaves et complexes. Et malgré la prépondérance des E/S hautes vitesses série comme PCI Express Les bus SPI et I2C sont toujours présent dans les derniers SoCs, MCUs et périphériques.

Adeptes de la vitesse?

Dans un environnement numérique, qui pourrait considérer 1 kHz comme “Rapide“ ? Pourtant, les horloges I2C sont proches de 1 kHz alors que le SPI commence à 31 kHz. Ces basses vitesses brident le Maitre qui envoie des signaux sur le bus et la vitesse à laquelle l’Esclave répond et/ou renvoie les données. Plus l’horloge sera rapide, plus grande sera la quantité de données qui pourront être transmises par cycle. Les équipements de test conçus pour fonctionner sur des bus SPI et I2C doivent suivre les évolutions des spécifications – ou du moins s’en rapprocher. En effet, essayer de mettre au point un système dont la vitesse excède celle de l’instrumentation est problématique.

I2C_bus.png

Figure 1: L’I2C utilise une interface 2-fils ou les lignes sont partagées par le Maitre et de multiples Esclaves et débite à un maximum de 1 MHz.
 
SPI_bus.pngFigure 2: Le bus SPI utilise une interface à 4 fils qui nécessite une ligne séparée pour chacun des esclaves. Les horloges vont jusqu’à 8 MHz.
 

Un exemple de l’état de l’art actuel en Adaptateurs d’Hôte est le Aardvark I2C/SPI qui supporte les Maitres et Esclaves I2C à 800 kHz, ou un SPI Maitre à 8 MHz et un SPI Esclave à 4 MHz. TotalPhase offre aussi l’Adaptateur d’Hôte Cheeetah SPI, un appareil Maitre uniquement, capable de programmer des vitesses jusqu’à 50 MHz.

Aardvark_cheetah.pngFigure 3: Des équipements économiques connectées par USB représentatifs de l’instrumentation d’adaptation hôte Aardvark I2C/SPI et Cheetah SPI.

 

Des améliorations qui font évoluer le SPI

Depuis son introduction il y a une trentaine d’année, le SPI a été utilisé à des vitesses progressivement plus rapides et à des niveaux de tension plus bas. Aujourd’hui, les mémoires dernier cri fonctionnent avec des horloges allant jusqu’à 133 MHz et avec des tension aussi basses que 0,9 Volt. Pour aller plus loin dans l’évolution du standard en dehors des évolutions des horloges et des tension du SPI standard, Intel est en train de pousser un remplaçant au bus à faible nombre de broches LPC (pour Low Pin Count) de la société, le bus eSPI (Enhances Serial Peripheral Interface). L’interface eSPI utilise moins de broches, lorsque comparé au LPC (toujours un plus sur un circuit intégré) et fonctionnera jusqu’à 66 MHz sous une tension réduite à 1,8 V DV. Le bus eSPI diffère aussi de son prédécesseur SPI par la définition d’un signal Alert# qui est utilisé par un eSPI esclave pour demander un service de la part du master eSPI.

Comme le SPI, l’eSPI peut être utilisé comme un périphérique de bus pour communiquer avec des capteurs dans la mouvance de l’internet des objets (IoT pour Internet of Things). Le bus SPI et ses variantes offrent un moyen des plus puissants pour communiquer avec des mémoires non volatiles comme les EEPROM ou les mémoires Flash, plus courantes. Les instruments les plus populaires sur le marché ne supportent pas encore le bus eSPI, ainsi les techniciens et ingénieurs devront les mettre à niveau quand le eSPI débarquera chez eux. “Mettre à jour“ veux dire dans ce cas là ; mettre le vieux matériel à la poubelle et s’équiper avec du nouveau.

Si l’on se réfère à Wikipédia, l’I2C, qui a été très populaire et est maintenant stable depuis son introduction en 1982, a aussi évolué et s’est amélioré depuis ses origines:

  • In 1982, le système de bus original I2C a été créé à 100 kHz en tant que simple bus système interne afin de construire l’électronique de contrôle des différentes puces Philips.

  • En 1992, la Version 1 a rajouté une mode rapide : Fast-mode (Fm) à 400 kHz et un mode d’adressage 10 bit afin d’accroitre la capacité à 1008 nœuds. C’était la version rst standardisée.

  • En 1998, la Version 2 a rajoutée un mode Hs, haute vitesse à 3,4 MHz, avec la nécessité d’économiser la tension et le courant.

  • En 2007, la Version 3 ajoute alors le “Fast-mode Plus“ Fm+ à 1 MHz et un mécanisme d’identification composant (ID).

  • En 2012, la Version 4 ajouta le mode “Ultra Fast-mode“ UFm à 5 MHz pour les nouvelles lignes USDA et USCL, qui utilisent une logique “push-pull“ sans résistances de “pull-up“ et a rajouté une table d’identification (ID) dédiée au fabricant.

Bien que maintenant une partie des spécifications I2C sont maintenues par NXP (qui a racheté la ligne de produits I2C originale), ce ne sont pas tous les adaptateurs hôtes I2C et les instruments de mesure qui supportent FM+, UFm, ou Hs, en plus, ils risquent d’être limités aux vitesses I2C les plus basses (dites “standards“).Un autre point important concernant les vitesses I2C : L’interface simplifié à 2 fils d’interface et le protocole Data/Ack conduit naturellement à des vitesses plus rapides. Il est courant de constater que des versions I2C propriétaires fonctionnent à des vitesses pus rapide, limitées seulement par l’intégrité du signal au niveau des fils et connexions. Une instrumentation capable de s’accommoder à ces vitesses nos standards et plus rapides est hautement attendue, de plus elle deviendra dépassé dans un temps très éloigné, si cela arrive.

Programmation des Flash

En plus d’être utilisé pour surveiller les bus SPI et I2C à des fins de mise au point, le SPI est devenu une interface de facto pour la programmation des mémoires non volatiles. Les Flash SPI sont disponible auprès de la plupart des fabricants comme Micron et Spansion, et sont aussi utilisées dans les modules Flash ou dans les interfaces de microcontrôleurs pour en faciliter la programmation. L’instrumentation SPI est le moyen le plus populaire et le plus économique utilisé pour programmer ces mémoires, même en production (fabrication). Mais comment imaginer qu’un appareil de test mono utilisateur puisse être utilisé en production ?

L’inconvénient de l’utilisation de la plupart des programmeurs SPI, à bas prix, en production, est le besoin qu’ils ont d’être reliés à un hôte PC à travers une liaison USB 1.1. Le faible débit du port USB peut être compensé en le remplaçant par une liaison USB 2.0 (480 Mops), mais chaque boitier d’instrumentation SPI aura besoin de sa propre instance du logiciel de programmation tournant sur son propre PC. Bien que plusieurs instances du logiciel puissent fonctionner sur un même PC, il faudra, sur le lieu de production, de nombreux PC pour tout contrôler localement (et manuellement). Même si on les met en réseau, chaque PC devra faire fonctionner une machine virtuelle contrôlée à distance par le responsable du test via le LAN. De plus, des distances longues par USB risquent de créer des problèmes de dégradation du signal. Un contrôle des PC à proximité de la station de programmation va encombrer l’environnement du site de test.

Il y a encore une autre inconvénient à utiliser de « simples » programmeur SPI dans ce scénario : Chaque instrument nécessite son propre “driver ». La marque “A“ aura son propre logiciel tournant sur le PC, qui sera certainement différent de celui de la marque B. La gestion et la maintenance de ces programmeurs – associés à a mise à jour des « firmwares » nécessaire pour la programmation des nouvelles mémoires, des nouvelles densité de celles ci risquent de conduire à des problèmes de gestion inextricables. De plus, il est nécessaire d’avoir une image disque du PC pour assurer la compatibilité. Ce ne sont pas des problèmes insurmontables, car ce sont des conditions de configuration courante dans bien des productions mais c’est une approche qui mérite bien mieux.

Alors est ce que votre instrumentation est à la hauteu?

Comme mentionné précédemment, SPI et I2C sont des technologies éprouvées qui ont été appliquées dans d’innombrables dispositifs Maitres et Esclaves. Leur simplicité les a rendu populaires, mais le manque de standard rigoureux et de certification d’interopérabilité ont laissé une grande latitude aux fabricants ce qui leur a permis de créer leur propre variation du protocole et de niveaux de tension. Ce dernier point – la tension – est partiellement du à une flexibilité dans la conception et également à l’évolution des circuits qui sont passés du TTL 5 VDC au 3,3 VDC et même en dessous. Ainsi, Intel propose un eSPI a 1,8 VDC : et même, certains composants commencent à accepter des tensions aussi basses que 0,9 VDC.

Le problème, c’est que tous les instruments de test et mesure ne sont pas capable de traiter les différentes tensions rencontrées par les Maitres et les Esclaves. Si la cible (Esclave) fonctionne en 3,3 VDC, mais que l’instrumentation d’adaptation Hôte travail en 5V DC, il faut que le technicien de test ajuste avec une carte d’adaptation les niveaux. Bine que cette opération soit réalisable assez facilement, elle rajpoute de la complexité à l’ensemble qui a départ était un simple environnement de test et de mises au point. L’adaptation des niveaux des signaux rajoute malheureusement aussi un retard dans les signaux, cela risque aussi de dégrader la qualité des signaux au niveau de l’intégrité et peut aussi créer des erreurs sur les données et les E/S du fait des impédances de terminaison et des changements de phase et autres problèmes injectés. Il est donc hautement souhaitable d’avoir un instrument de test et mesure supportant des niveaux multi-tensions, ou même des niveaux programmables afin de s’adapter aux dispositifs esclaves de demain.

Des caractéristiques à l’épreuve du temps

Comme nous avons pu le voir, en dépit de l’apparence simplicité des bus SPI et I2C, et de leur historique de plus de 10 ans, ces deux bus continuent à évoluer (Vitesse, tension, protocoles, spécificités propriétaires, etc.) L’instrumentation de test et mesure a besoin de rester suffisamment souple pour s’accommoder des évolutions de peur que l’utilisateur se retrouve obligé de disposer d’une multitude d’adaptateur hôtes correspondant à la variété des éléments à tester. De plus, il est prévisible que l’I2C et le SPI vont continuer à évoluer puisque les fabricants prévoient d’introduire de nouveaux protocoles et de nouvelles commandes de bus.TotalPhase-Promira.jpg

Et puis, il y a des composants qui réclament des interruptions, une possibilité qui n’est pas couverte par la ligne SS (Slave-Select) contrôlée par le Maitre SPI. Dans un SPI classique, le Maitre réalise tous les contrôles et communique avec l’esclave quand il le désire. En plus, maintenant, le SPI offre un mécanisme souple et élégant permettant le transfert de données en continue (Streaming) de capteurs, de composants audio, de convertisseur A/D et d’une foultitude de composants E/S.

Il serait particulièrement pratique que l’Esclave puisse interrompre le Maitre ou alors qu’il offre un certain mécanisme de « feedback » (contrôle du flot) grâce à une interruption. L’instrumentation de test et mesure conçue pour du SPI « Standard » n’est pas capable de s’adapter à des protocoles SPI personnalisés ou a une ligne d’interruption en plus. Un peu dans le style de la façon dont fonctionne la prise « jack » d’un casque de bien des téléphones, comme une ligne d’interruption, est utilisée pour stopper le CODEC audio quand le casque est enlevé. Mais, quel instrument de test et mesure en tant qu’adaptateur hôte est capable de tester et de mettre au point de tels comportements ?

Une flexibilité grâce aux FPGA

Jusqu’ici, nous avons vu que la plupart des outils de test et mesure adaptateurs d’hôte peuvent réaliser les fonctions de base – mettre au point et programmer des capteurs, MCU et mémoires non volatiles – avec d’énormes possibilités d’amélioration. Dans la plupart des scenarios, que ce soit pour une installation mono utilisateur d’atelier, ou une en réseau en fabrication ou une version plus rapide ou non standard des bus série, il y a la place pour l’adjonction de nombreuses fonctionnalités à l’instrumentation.

TotalPhase, déjà un fournisseur leader en outils de développements pour I2C, SPI, USB et CAN est en train de changer de modèle en introduisant des solutions basées sur FPGA, extrêmement programmables pour I2C et SPI. Appelée Plateforme série Promira (du latin « en avant » et « miraculeux »), cet appareil couvre toutes les déficiences décrites ci dessus et est ouvert à de nouveaux challenges.

Afin d’améliorer les débits entre l’adaptateur hôte et le PC hôte, il supporte à la fois l’USB 2.0 et Ethernet 10/100/1000. Comme indiqué ci dessus, un USB à 480 Mops (et des paquets de données doubles de 512 O) réduit les délais de transmission et améliore énormément le nombre de paquets transmis entre l’appareil de test et mesure et le PC. Ceci permettant des mises au point plus rapide et offrant un téléchargement de/vers la mémoire de la plateforme Promira supérieure à 1 Gbit. C’est cependant la connexion LAN qui est remarquable ? Mis à part la rapidité de connexion – qui permet une programmation ultra rapide des mémoires non-volatiles – il n’y a plus besoin d’hôte PC en local pour configurer et réduire la productivité.

Ceci en fait l’outil idéal en terme de performance, de vitesse et d’utilité pour la programmation des mémoires sur site de production. Un kit de montage sur rail DIN optionnel permet l’installation de multiples programmeurs dans des racks industriels au lieu de les fixer au Velcro à proximité du site de programmation. Ainsi on obtient une vitesse de programmation de 80 MHz en SPI, 2 ou 4 entrées sorties et en eSPI.

Level_shifting_GUI.png

Figure 5: Le changement de niveau est réalisé à travers un menu.

 

Une connectivité LAN élimine aussi le besoin d’images PC locales et de driver USB et facilite les mises à jour du firmware.

Le logiciel de la plateforme Promira est révisable au fil du temps et offre la possibilité d’une automatisation à distance grâce à l’utilisation d’une API standard de TotalPhase qui reste compatible avec les précédentes versions d’instrumentation non programmable. En résumé, le fait que la plateforme bénéficie d’une conception basée sur FPGA et qu’elle dispose d’un accès LAN lui permet de réaliser un nombre d’opérations actuelles et futures incommensurables, en plus, elle lui permet d’être entièrement reconfigurée pour s’adapter à un futur besoin.

Le fait de pouvoir programmer par logiciel l’outil lui offre la capacité d’adapter les niveaux des signaux. Les cartes de conversion de sont plus nécessaires puisque grâce à un simple menu déroulant dans l’interface utilisateur de la Plateforme Promira, il est possible de les ajuster de 0,9 VDC à 3,3 VDC (Figure 5). Mis à part l’avantage apporté aux techniciens par l’élimination des cartes de conversion de niveau, ils bénéficient maintenant d’une vue beaucoup plus précise des transactions de données du SPI ou de l’I2C de part son adaptabilité instrumentale.

Encore plus loin dans le futur

Le lecteur perspicace aura noté que la différence matérielle principale entre la plateforme Promira et les précédentes générations d’instrumentation I2C/SPI – y compris de la part de TotalPhase – se trouve dans l’architecture de l’instrumentation basée sur FPGA qui est entièrement programmable. Les FPGA peuvent réaliser toutes formes de logiques, processeurs, périphériques et combinaisons buffer/mémoires. Ce genre de composant comporte souvent en plus des fonctions additionnelles logiques et analogiques frontales, rendant de futurs changements aussi facile à réaliser qu’une simple recompilation du FPGA à travers le LAN avec un simple « upgrade » du firmware.

Ainsi, toute version future du SPI ou de l’I2C, telle que eSPI, SPI double/quadruple, MDIO, SDIO, de nouveaux protocoles ou même l’addition de lignes d’interruption hors standard comme mentionnée précédemment, peut être implémenté par une simple mise à jour logicielle. Ainsi, Promira risque d’être le dernier adaptateur d’hôte, ou le programmeur de Flash dont vous aurez besoin.

Une caractéristique particulièrement irrésistible d’un contrôleur I2C/SPI, « indéfiniment » programmable, réside dans la notion de « concomitance » : Ceci lui permet d’être à la fois Hôte et Esclave, ou contenir deux Maitres… simultanément.

Sous contrôle du logiciel par Ethernet ou USB, le technicien utilisateur peut simuler diverses combinaisons de fonctionnalités Maitre/Maitre, Maitre/Esclave avec un seul instrument. Ceci permet de mettre au point le logiciel avant que le matériel du Maitre ou de l’Esclave soit disponible.

Les centres des logiciels de contrôle et celui des Flash de ToltalPhase sont déjà disponibles pour le Promira. Ces API et interfaces utilisateur tableaux de bord permettent une programmation rapide et une émulation Maitre/Esclave, et offrira bientôt le reniflage et le filtrage intelligent des paquets de données correspondant à des événements sélectionnés par l’utilisateur… En plus, TotalPhase offre le pack de langage Rosetta avec l’API qui permet au technicien de créer ses propres applications en C, C++, C#, Python, VB6 et VB.Net. Grâce à un minimum de savoir faire en programmation du genre « si ceci, alors cela » il est possible de créer des scénarios permettant des stratégies de mise au point et d’émulation plus sophistiquées. Egalement on notera que ce type de programmation peut transformer la plateforme Promira en un noeud IoT capable d’envoyer intelligemment des données séries I2C ou SPI par Internet en fonction d’événements prédéfinis. Ainsi, l’appareil fonctionne un peu comme une RAM virtuelle avec des capacités de diagnostiques déportées.

On peut facilement imaginer plus de couches de sophistication alors que TotalPhase prépare les futures mises à jour applicatives, ce qui fera de la plateforme Promira un véritable joyau de votre boite (à outil) série.

  Platforme Série Promira