Affichage des articles dont le libellé est H-Télémécanique XBT-A70101. Afficher tous les articles
Affichage des articles dont le libellé est H-Télémécanique XBT-A70101. Afficher tous les articles

mardi 1 juillet 2014

TELEMECANIQUE XBT-A70101 (SUITE) & D.P. BUS PIRATE

Après avoir décodé les signaux de l'afficheur de ce terminal Télémécanique (voir sujet plus bas), et à peu près déterminé les séquences à envoyer au contrôleur d'affichage grâce à ma carte à base de processeur NXP LPC1114FN28 (voir aussi plus bas), je souhaitais en savoir plus sur le protocole de commande pour me permettre, par exemple, de faire clignoter certains caractères.

Ce complément d'information ne m'est pas nécessairement très utile, mais j'y voyais l'occasion de tester ce très populaire outil qu'est le Bus Pirate, édité par Dangerous Prototypes.

L'outil en question en version 3.6 :


Le câblage entre le Bus Pirate et le terminal Télémécanique se résume à sa plus simple expression puisque seulement un signal de donnée et un signal d'horloge sont nécessaires. La synchronisation du transfert avec le contrôleur d'affichage est réalisée par un octet particulier de démarrage, et un autre de fin de transmission. Entre ces deux bornes, une 'syntaxe' particulière est utilisée pour configurer l'interprétation du message à afficher.

Le système de test :

La liaison noire est la masse, la jaune les données, et la rouge l'horloge.
A l'affichage, le message généré par le Bus Pirate. A noter que les deux étoiles clignotent à environ un hertz, effet difficile à présenter sur une image statique!

L'utilisation du Bus Pirate est très simple. Après s'y être connecté à l'aide d'un terminal TTY classique en 115200 bauds 8 N 1, il suffit de le configurer dans le bon mode, dans mon cas le mode SPI (choix 5).


La configuration des paramètres du bus SPI se fait dans la foulée et, pour être en mesure de communiquer correctement avec le processeur de l'afficheur du terminal, ils doivent être positionnés de la façon suivante :

- Speed : 30KHz
- Clock polarity : Idle high
- Output clock edge : Idle to active
- Input sample phase : Middle
- CS : /CS *default (non utilisé dans cette application)
- Select output type : Normal (H=3.3V, L=GND)

A noter que de la même façon que pour ma carte à processeur LPC1114FN28, les signaux fournis par le Bus Pirate sont en 3,3V. Cela ne pose pas de problème au contrôleur d'affichage dont les seuils, compatibles au niveau TTL, s'accommodent très bien de ces niveaux.

Le gros avantage du Bus Pirate est qu'il est possible d'envoyer en chaîne et de façon dynamique une série d'octets sur le bus SPI. La série envoyée sera la suivante : 0x8d,0xc2,0xc2,0xcd,0xcd,0xe2,0x2a,0x42,0x55,0x53,0x20,0x50,0x49,0x52,0x041,0x54,0x45,0x2a,0xbf

Et le processus sur le Bus Pirate :


Il a suffit d'effectuer un copier/coller depuis un Wordpad de base dans la fenêtre de l'émulateur de terminal pour que la série d'octets soit prise en compte par le Bus Pirate et envoyée de suite sur le bus SPI à destination de l'afficheur. Le résultat de cette commande correspond à l'affichage *BUS PIRATE* avec les deux caractères '*' clignotants, comme présenté sur le système de test.

Explication du protocole d'affichage :

- Premier octet : 0x8D => le digit de poids faible est la vitesse de clignotement. En dessous de 8, modifie l'intensité d'affichage. 0x8F fera clignoter à peu près au Hertz.

- Paire d'octets suivants : 0xC2, 0xC2 => Zone de clignotement du deuxième caractère au... deuxième caractère.

- Paire d'octets suivants : 0xCD, 0xCD => Zone de clignotement du treizième caractère au... treizième caractère.

- L'octet 0xE2 : fait démarrer le message à partir de la position du digit de poids faible, soit la troisième position, 0..1..2!

- Les octets suivants représentent le message *BUS PIRATE*

- Le dernier octet, 0xBF, indique la fin de transmission.

Voilà, c''est tout et cela a été très facile à déterminer avec le Bus Pirate!

En complément, un lien intéressant sur la configuration et l'utilisation du Bus Pirate sur Skyduino .