Mesures sur la liaison UART

ComplémentCompléments sur la liaison UART

  • Le shield dispose d'une sortie RS232, mais le signal généré par la carte Rpi, et qui pilote le MAX232, est de type UART.

  • Le niveau de repos de ce signal est un niveau haut de 3,3V.

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éthodeMesures

  • 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émentMesures attendues

Interface graphique Qt de l'application RS232 : dans cet exemple la carte Rpi envoie "Bonjour", le PC répond "Hello".

A noter : il faut répondre assez rapidement sur le clavier du PC pour que l'analyseur puisse capturer les 2 échanges en une fois.

Mesures affectuées avec l'analyseur Logic 4 Saleae

Liaisons par grippe-fil ou par insertion directe, comme ici.

Mesures avec SQ100

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 :

Mesures avec Analog Discovery 2

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émentModification 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émentRé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.