Mesures sur la liaison UART
Complément : Compléments sur la liaison UART
A noter : Le MAX232 ne fonctionne pas correctement sous 3,3V donc sur le shield il est alimenté par le 5V du GPIO, et fournit donc des signaux compatibles avec cette tension.
Cependant les broches Tx et Rx du GPIO génèrent et sont censées recevoir des signaux compatibles avec 3,3V.
Une solution aurait été d'utiliser un level-shifter (nécessite de rajouter 2 transistors MOS et 4 résistances). Mais il se trouve qu'un MAX232 alimenté sous 5V interprète correctement les signaux 0-3,3V provenant du Tx du GPIO. Si l'inverse est vrai également (les signaux 0-5V issus du MAX232 sont bien interprétés par l'entrée Rx de la carte Rpi) rien ne dit que le BCM283x supporte longtemps cette tension trop élevée. Donc un pont diviseur (2 résistances seulement pour cette solution) a été intercalé, permettant de ramener le potentiel de 5V à 3,3V.
Comme les échanges sur UART se font à des fréquences relativement faibles, il n'y a pas de risque de déformation du signal, sinon la solution du level-shifter aurait finalement été retenue.
Méthode :
Les mesures qui suivent sur la liaison série asynchrone UART ne concernent pas l'afficheur, les mesures peuvent donc être effectuées sur le shield seul. Attention cependant à remettre les écrous après avoir retiré l'afficheur, afin de ne pas les perdre.
Les mesures peuvent être effectuées par exemple entre 2 cartes Rpi, ou bien entre la carte Rpi équipée du shield et un PC, c'est cette solution qui est illustrée dans les documents qui suivent.
Les éléments nécessaires à cette mise en œuvre seront :
Un ordinateur disposant d'un émulateur de terminal de type Tera Term, PuTTY, RealTerm ou autre. Ce programme sera configuré pour une communication compatible avec celle définie dans l'application : 8 bits, 9600 bps, 1 bit de stop, pas de bit de parité, ni de contrôle de flux.

Un adaptateur USB RS232 sub DB9

Un élément de raccordement entre les 2 DB9 mâles. Il existe au moins 3 possibilités :
un adaptateur Null Modem H-H (le plus simple et selon le modèle le moins volumineux),
un câble NULL Modem DB9 femelle-femelle,
3 fils de liaison (wire jumper) femelle-femelle. Les signaux Rx et Tx devront être croisés, et les 0V reliés. A noter : c'est ce qu'il y a de moins cher, mais il faut un peut forcer pour que cela rentre, et ça fait un peu "bidouille".
Méthode : Mesures
Relier l'analyseur aux signaux Rx et Tx du BUS ainsi qu'au 0V commun
Configurer l'interpréteur pour qu'il déclenche lors de l'envoie d'une donnée.
Capturer une trame lors d'un échange entre l'application Rpi et l'ordinateur.
Interprétation
Identifier les 2 messages dans la trame.
Vérifier la vitesse de transmission.
Complément : Mesures attendues
Configuration du protocole d'une part, et du déclenchement d'autre part :
Petite illustration des possibilités d'affichage du flux de données :
Illustration de :
la configuration de la liaison,
des possibilités d'affichage du flux de données,
des mesures possibles (durée, fréquences)
Complément : Modification de l'application
On souhaite afficher sur l'interface graphique les données provenant d'un compteur EDF disposant d'une sortie de téléinformation (documentation [pdf]), compteur associé à une passerelle (documentation [pdf]) effectuant une démodulation et une adaptation au format RS232.
Effectuer les adaptations nécessaires sur l'application.
Associer le compteur et la passerelle puis les raccorder à la carte Rpi, ou bien (si vous ne disposez pas du matériel), simuler depuis l'émulateur de terminal le flux de données issues de l'association "compteur + passerelle".
Visualiser et analyser les données transmises.
Complément : Réponses attendues
Dans le cas du compteur EDF avec sortie de téléinformation, le flux de données est unidirectionnel, donc sur l'application Qt la fenêtre de saisie des données peut être éventuellement supprimée.
Le format de transmission est :
1200bits/sec,
7 bits de données,
1 bit de parité paire,
1 bit de stop.
Ces modifications doivent être prises en compte dans la méthode "void CIhmAppRs232c::on_pbOuvrir_clicked()" du fichier cihmapprs232c.cpp
m_rs->initialiser(QSerialPort::Baud1200,
QSerialPort::Data7,
QSerialPort::EvenParity,
QSerialPort::OneStop,
QSerialPort::NoFlowControl);
Visualisation des données :
Les paramètres de l'analyseur logique doivent aussi prendre en compte ces nouvelles valeurs :
A noter : un simple optocoupleur SFH620 associé à 2 résistances (voir ci-dessous avec un shield "maison" dédié) peut permettre de raccorder directement une sortie de téléinformation à l'entrée Rx d'une carte Rpi, sans passer par une liaison RS232. Dans ce cas l'application Qt appRs232c (la version disposant des modifications effectuées précédemment) peut-être utilisée telle quelle.