Théorie en bref
L’un des outils pouvant aider lors du développement de cartes électroniques est l’analyseur logique. Contrairement à l’oscilloscope qui vous donne une tension en fonction du temps, l’analyseur logique sert à visualiser des états de signaux digitaux en fonction du temps. Un exemple, vous voulez observer les signaux échangé sur un bus SPI ou I2C entre votre microprocesseur et un capteur. Vous pouvez utiliser votre oscilloscope pour observer les 4 lignes CLK, MOSI, MISO et CS. Mais un oscilloscope 4 traces coûte un bras. C’est là qu’entre en action l’analyseur logique. Je n’ai pas dis de ne pas utiliser votre oscilloscope. Vous pouvez observer d’autre chose intéressante comme le temps de monté, le bruit, etc. L’analyseur complète vos possibilités de mesures et simplifie ainsi votre développement en pouvant facilement analyser le comportement de votre système.
L’openlogic sniffer en détail
Développé par l’équipe de Dangerous Prototype, le design de l’open logic snifffer est un design hardware open source. Ce design est basé sur FPGA (Spartan 3E de Xilinx). Un PIC 18F24J50 sert de pont entre l’usb du PC et la FPGA.Vous pouvez donc obtenir le schéma, l’implentation sur le PCB, le firmware de la FPGA ainsi que le firmware du PIC. Attention néanmoins, les mises à jours firmware peuvent briquer votre hardware si vous ne suivez pas scrupuleusement les recommandations.
La table ci-dessous résume les avantages/inconvénients de cette solutions.
Avantages | Inconvénients |
|
|
Pour les sondes, on ne peut pas se connecter directement sur un IC. Mais de petites sondes coûtent un bras.
En ce qui concerne la partie software sur le PC il est recommandé d’utiliser SUMP, une interface pour analyseur logique aussi en open source. Pour ceux sur Debian, il existe des paquets dans la branche expérimental. Des collègues l’utilisent sous MacOs ou Windows avec succès.
L’utilisation
Une fois les pinces connectées sur par exemple les deux lignes d’une bus i2c, SDA et SCL, branchez le sur votre pc avec un câble USB. Lancer le programme SUMP et observer les signaux comme représenté ci dessous:
Pour arriver à ce résultat il aura fallu configurer l’acquisition. J’ai choisi un échantillonnage à 5MHz pour l’I2C c’est largement suffisant. J’ai activé le trigger simple. Il suffit que les signaux correspondent à un état donné et choisi pour que l’acquisition commence. Dans cet exemple le trigger s’active quand les deux ligne sont à zéro. En effet dans le bus I2C les lignes sont au repos à l’état haut. Donc deux états bas veux bien dire que la communication a bien commencé par un START. Le trigger affiche 25% du signal avant celui-ci et 75% après comme illustré ci-dessous:
Vous allez me dire : « oulala ça va être dur de trouver une erreur dans ce flux de données ». Avez-vous déjà décodé à la main des trames de bus i2c ou spi? C’est long, fastidieux et le risque d’erreur est non nul. L’avantage de SUMP est l’intégration d’analyseur de bus. L’analyseur peut lui même identifier le type de signal. Dans mon exemple SDA est sur la ligne 0 et SCL la ligne 1. Je ne donne à l’analyseur que les lignes à analyser et il se débrouillent.