Analyse du protocole UART

1. Base de l'accord

1.1. Présentation de l'accord

UART est "Universal Asynchronous Receiver/Transmitter", abréviation de Universal Asynchronous Transceiver. Dans les années 1860, pour résoudre le problème de la communication entre ordinateur et téléimprimeur, Bell a inventé le protocole UART, qui convertit les signaux d'entrée parallèles en signaux de sortie série. En raison de sa nature simple et pratique, UART est devenu un protocole de communication très largement utilisé. Les ports série auxquels nous sommes exposés quotidiennement, RS232, RS485 et autres bus, l'utilisation interne est essentiellement le protocole UART.

Afin de mieux comprendre et analyser la relation entre les protocoles et les bus, nous divisons généralement une spécification de communication complète en couches physiques, couches de protocole et couches d'application. La couche physique définit uniquement les véritables caractéristiques du signal (telles que la tension, le courant, la capacité d'entraînement, etc.) et la correspondance entre le signal électrique et les signaux logiques 0 et 1 ; La couche de protocole ne se soucie pas de la façon dont les 0 et 1 sous-jacents sont implémentés, mais spécifie uniquement les spécifications de protocole des signaux logiques et le processus de communication (comme le début, les données et la fin, etc.) ; La couche d'application ne se soucie pas de la manière dont les données sont obtenues, mais définit uniquement la signification de la représentation des données et la manière de mettre en œuvre la logique métier spécifique.

L'application la plus simple du protocole UART, généralement la couche physique n'a besoin que de deux lignes de transmission, une pour la transmission et une pour la réception, réalisant ainsi une communication en duplex intégral. Pour les transmissions unidirectionnelles, vous pouvez également utiliser une seule ligne de transmission. L'exemple le plus typique d'une telle application est les ports RX/TX du microcontrôleur connectés les uns aux autres, permettant une communication UART basée sur le niveau TTL. Pour différentes distances de transmission et exigences de fiabilité, le remplacement de différentes implémentations de couche physique peut obtenir nos bus de communication RS232, RS485 et autres communs.

1.2. Différentes implémentations de la couche physique

Étant donné que l'entrée de la couche de protocole UART est un signal logique 0/1, le signal logique 0/1 peut être distingué par différentes normes de niveau dans la couche physique. Pour différents besoins de communication, différentes couches physiques peuvent être utilisées. Par exemple, une simple communication embarquée ou des scénarios de débogage d'appareils courants, la communication du protocole UART entre deux appareils peut être effectuée à l'aide d'un simple niveau LVTTL/TTL.

Le port série universel utilise le niveau RS232, qui peut augmenter la distance de transmission et résister à un certain degré d'interférence de signal. Le coût est que la puce de traduction de niveau correspondante est nécessaire au niveau de la couche physique pour atteindre, l'émetteur doit convertir le signal interne de haut et bas niveau en un signal de tension +/- tension plus élevée, et l'extrémité de réception doit convertir le +/ - signal de tension en un signal interne de niveau haut et bas.

Dans le cas de la communication industrielle, afin d'améliorer encore la distance de transmission et d'améliorer la fiabilité du signal, la norme de niveau RS485 est généralement utilisée. Les signaux ordinaires de niveau haut et bas sont convertis en une paire de signaux différentiels à l'extrémité d'émission, et les signaux différentiels sont convertis en signaux ordinaires de niveau haut et bas à l'extrémité de réception. De plus, le RS485 permet de connecter jusqu'à 128 émetteurs-récepteurs sur le bus, tandis que TTL ou RS232 sont des connexions point à point.

1.2.1. Communication UART basée sur TTL

La communication UART basée sur TTL est le cas d'utilisation le plus simple pour les applications de protocole UART. C'est-à-dire que les niveaux haut et bas de la sortie E/S numérique sont directement transmis en tant que signal physique réel. En termes de connexion physique, seul l'appareil doit être mis à la terre et la communication unidirectionnelle de l'appareil peut être effectuée via une ligne de signal. Si un duplex intégral bidirectionnel est requis, deux lignes de signal sont utilisées.

Pour comparer les différences dans la mise en œuvre des différentes couches physiques, nous pouvons observer comment les signaux réels des différentes couches physiques diffèrent lorsque les mêmes données sont envoyées. Ici, en prenant le caractère de transmission 'D' comme exemple, à travers l'oscilloscope en pierre, observez directement le signal transmis par le TTL (la borne de terre de la sonde est connectée à l'extrémité de masse commune de l'appareil, et l'extrémité du signal de la sonde est connectée à la ligne de signal bleue dans la figure ci-dessus), et la forme d'onde du signal illustrée à la figure 1-4 peut être obtenue. Comme on peut le voir sur la forme d'onde, lorsqu'il n'y a pas de transmission de données, le signal UART restera à un niveau élevé (l'amplitude spécifique du signal est déterminée par la tension d'alimentation de l'E/S), le signal sautera pendant la transmission des données , et le signal reviendra à l'état de niveau haut inactif une fois la transmission terminée.

1.2.2. Communication UART basée sur RS232

Afin d'améliorer la capacité du lecteur à augmenter la distance de transmission et la fiabilité, le bus RS232 utilise un signal de tension bipolaire pour la transmission physique. Avant que le signal ne soit envoyé/reçu, le signal interne et le signal de bus sont convertis l'un à l'autre au moyen d'une puce de décalage de niveau. La méthode de connexion est exactement la même que le niveau TTL, et toute la couche physique n'est qu'une couche supplémentaire de traduction de niveau.

En utilisant également le caractère de transmission « D » comme exemple, la sonde de l'oscilloscope Pushi est connectée à l'extrémité du signal et la forme d'onde réelle illustrée à la Figure 1-6 peut être capturée. On peut voir que la forme d'onde RS232 est une tension négative au repos, et lorsqu'il y a une transmission de données, le signal commence à sauter entre les tensions positives et négatives, et revient à l'état de tension négative au repos une fois la transmission terminée.

1.2.3. Communication UART basée sur RS485

Le RS485 est conçu pour les environnements industriels complexes, et la plus grande caractéristique du bus RS485 est l'utilisation de la transmission de signal différentiel par rapport aux couches physiques des autres protocoles UART. Avant que le signal ne soit envoyé, le signal asymétrique est converti en un signal différentiel par l'émetteur-récepteur de RS485, puis envoyé au bus pour transmission ; Également avant la réception, le signal différentiel sur le bus est converti par l'émetteur-récepteur en un signal asymétrique, puis envoyé au contrôleur UART pour réception. Sur le bus RS485, deux paires de lignes de signaux différentielles (c'est-à-dire 4 lignes de signaux) sont nécessaires pour une communication bidirectionnelle en duplex intégral. Si seule une communication bidirectionnelle semi-duplex est effectuée, seule une paire de signaux différentiels est requise.

Encore une fois, en utilisant le caractère de transmission « D » comme exemple, la forme d'onde réelle illustrée à la figure 1-8 peut être acquise à l'aide de deux sondes de canal (communément référencées) des sondes de l'oscilloscope Pushi, qui sont connectées aux extrémités A/B. de l'un des signaux différentiels. On peut voir que la forme d'onde à l'extrémité A/B est complémentaire. La forme d'onde de la borne A est en logique directe (tension positive au repos) et la forme d'onde de la borne B est en logique inverse (tension négative au repos).

2. Spécifications du protocole

2.1. Structure de trame UART

Dans l'introduction de la section précédente, nous avons observé la forme d'onde UART réelle à travers l'oscilloscope en pierre, alors comment exactement cette forme d'onde est-elle reconnue avec précision comme le caractère « D » et pas autre chose ? Cela implique la définition de la structure de trame du protocole UART. Comme le montre la figure 2-1 :

Lorsque deux appareils doivent communiquer via le protocole UART, ils doivent se mettre d'accord en même temps sur les points suivants :

  • Durée par signal T (débit en bauds = 1/T)
  • Le nombre spécifique de bits dans chaque élément de la structure de trame
  • S'il y a un chiffre de contrôle, et le mécanisme du chiffre de contrôle (impair/pair/…). )

Avec ces conventions, le dispositif de réception n'a qu'à attendre l'arrivée du bit de départ, puis à échantillonner la forme d'onde suivante à intervalles réguliers pour obtenir les informations spécifiques transmises. Prenant la forme d'onde du caractère 'D' comme exemple, le processus de résolution est illustré à la Figure 2-2 :

2.1.1. Débit en bauds

Le débit en bauds est un concept très important du protocole UART, ou de tous les protocoles série asynchrones, c'est-à-dire le nombre de bits pouvant être représentés par unité de temps (1 seconde), ou il peut également être exprimé comme l'inverse de la largeur de bit . Par exemple, une forme d'onde UART avec un débit en bauds de 115200 115200 signifie qu'elle peut prendre en charge 8.68 XNUMX bits par seconde, ce qui signifie que chaque bit de données représente environ XNUMX uS de temps.

Les protocoles série asynchrones tels que UART, afin de simplifier la connexion physique des signaux et de réduire les coûts de communication, n'ont généralement qu'une seule ligne de signal et ne peuvent pas transmettre les données et les signaux d'horloge en même temps. Pour que l'émetteur-récepteur/transmetteur résolve correctement la forme d'onde, il doit être au même réglage de débit en bauds. La même forme d'onde utilisant différents débits en bauds peut obtenir des informations complètement différentes. Pour le dispositif de réception, seul le bit de départ peut être utilisé comme point de synchronisation d'une trame de données, et les autres données sont déterminées par le débit en bauds pour déterminer l'emplacement d'échantillonnage spécifique.

Encore une fois, en utilisant la forme d'onde du caractère 'D' comme exemple, comme illustré à la Figure 2-4, s'il est reçu au mauvais débit en bauds, vous pouvez obtenir des informations de données complètement erronées.

2.1.2. Bits inactifs

Lorsque les données ne sont pas transférées entre les périphériques, un niveau élevé soutenu indique une oisiveté. Plus la durée du bit inactif est longue et plus l'intervalle entre deux trames de données est long, moins il y a de données transmises par unité de temps.

2.1.3. Bit de départ

Le récepteur UART détectera toujours le changement de niveau sur la ligne de signal, et lorsque les données sont transmises, l'expéditeur tirera la ligne de signal du niveau haut à la fin du niveau bas à l'état inactif, et maintiendra un peu de temps. Lorsque le récepteur détecte un changement de niveau haut-bas, il commence à recevoir des signaux.

2.1.4. Bits de données

Le bit de données contient les données réelles transmises, qui ont une longueur de 5 à 8 bits si la parité est utilisée, et de 5 à 9 bits si la parité n'est pas utilisée. En général, les bits de données sont de 8 bits et les données sont envoyées en premier à partir du bit le moins significatif, les bits de poids fort venant en second.

2.1.5. Chiffres de contrôle

Les chiffres de contrôle peuvent être utilisés pour améliorer la fiabilité de la transmission. Si le signal est erroné en raison d'interférences dans le processus de transmission et provoque une erreur dans le niveau de certaines positions, il peut être déterminé si les données reçues et le chiffre de contrôle correspondent en calculant si les données reçues et les chiffres de contrôle correspondent, donc afin de fournir des informations valides à la couche application pour décider d'accepter/de rejeter les données correspondantes.

2.1.6. Bit d'arrêt

Le bit d'arrêt représente la fin d'une trame de données et le signal réel est une période de temps élevée. La longueur du bit d'arrêt peut être définie sur un bit d'arrêt de 1, 1.5 ou 2 bits. Dans la plupart des cas, un bit d'arrêt de 1 bit est utilisé.

Parce que UART est un protocole asynchrone, le début de chaque trame peut être synchronisé avec un front de saut, mais le bit d'arrêt ne peut calculer la position relative que par le débit en bauds, et si un niveau bas est reconnu à la position d'arrêt, une erreur de trame est généré. Dans le processus de communication, afin de réduire le problème causé par l'erreur du débit en bauds, différentes longueurs de bit d'arrêt peuvent être définies pour s'adapter.

3. Analyser la communication UART à l'aide d'un analyseur logique

3.1. Oscilloscope vs analyseur logique

En tant que principal instrument de test et de mesure à usage général, les oscilloscopes ont un avantage naturel dans l'observation des détails des signaux analogiques. Par exemple, un fonctionnement en temps réel, avec un taux de rafraîchissement de forme d'onde élevé, peut facilement observer des signaux anormaux soudains ; Par exemple, lors de l'évaluation du bruit et de l'optimisation de la qualité du signal, l'oscilloscope peut comparer les similitudes et les différences de signaux sur le même bus et différents nœuds pour trouver des problèmes d'intégrité de signal cachés.

Cependant, l'oscilloscope a aussi naturellement quelques endroits gênants, en plus des quelques canaux, l'écran est généralement petit, le fonctionnement n'est pas ordinateur + souris façon souple et contrôlable ces problèmes morphologiques, pour l'acquisition et l'analyse des signaux numériques, le plus gros problème de l'oscilloscope est que la profondeur de stockage est trop faible. Un oscilloscope de plusieurs centaines de milliers de yuans peut également avoir une profondeur de stockage de quelques centaines de Mpts seulement. Dans le même temps, en raison de la limitation de la profondeur de stockage, lorsqu'il est nécessaire d'effectuer une acquisition de temps légèrement plus longue, le taux d'échantillonnage réel de l'oscilloscope chutera fortement, ce qui empêchera la forme d'onde collectée de restaurer le signal réel, perdant le l'importance de l'analyse.

Les analyseurs logiques sont des instruments de test et de mesure spécialement conçus pour l'acquisition et l'analyse de signaux numériques, et les résultats de forme d'onde collectés ne sont que des niveaux haut et bas (c'est-à-dire des 0 et 1 logiques). Cependant, il compense le manque d'oscilloscopes pour l'acquisition et l'analyse des signaux numériques.

  1. 1. La plupart des analyseurs logiques fonctionnent sur un PC, avec les performances puissantes des processeurs de bureau et l'expérience interactive des systèmes d'exploitation matures, ce qui améliore considérablement la commodité et l'efficacité de l'analyse du signal numérique.
  2. 2. Le nombre de canaux d'analyseur logique est important, l'analyseur logique DSLogic d'entrée de gamme dispose de 16 canaux qui peuvent être collectés en même temps, et l'utilisateur peut également obtenir des produits d'analyseur logique avec des dizaines voire des centaines de canaux à un prix très raisonnable. Coût.
  3. 3. La profondeur de stockage de l'analyseur logique est plus grande, par exemple, DSLogic peut atteindre une profondeur de stockage de 16G en mode flux, et en même temps maintenir une fréquence d'échantillonnage assez élevée, dépassant de loin la capacité d'acquisition de la plupart des oscilloscopes.
  4. 4. Les analyseurs logiques fournissent généralement des fonctions de décodage de protocole riches, qui peuvent effectuer une analyse approfondie des signaux numériques. Par exemple, DSLogic prend actuellement en charge plus de 100 protocoles de décodage. La plupart des oscilloscopes ont des capacités de décodage limitées et la plupart nécessitent l'achat séparé des plug-ins correspondants.

Ensuite, nous nous concentrerons sur l'utilisation des analyseurs logiques pour l'acquisition et l'analyse des signaux UART dans diverses situations.

3.2. Établir un environnement de test pour les analyseurs logiques

3.2.1. Connexion à DSLogic

DSLogic est un analyseur logique portable basé sur la connectivité USB. L'hôte DSLogic est responsable de l'acquisition et de la mise en cache du signal, puis transmet les données via USB au logiciel de l'ordinateur hôte DSView sur le PC. DSView est responsable du traitement, de l'affichage, de l'analyse des données de forme d'onde et des fonctions d'interaction homme-ordinateur correspondantes.

Lors de l'utilisation, connectez simplement l'hôte DSLogic directement au port USB de la carte PC via un câble de données USB, ouvrez le logiciel DSView et confirmez que l'INDICATEUR sur l'hôte DSLogic devient permanent. À ce stade, la connexion et l'initialisation de l'analyseur logique sont terminées. Comme le montre la Figure 3-4, le nom du périphérique actuel dans le coin supérieur gauche et l'état de connexion correspondant peuvent être observés sur le logiciel DSView.

3.2.2. Connexion des signaux UART

Pour toutes les mesures, l'équipement de test et le signal à mesurer doivent être basés sur un plan de référence commun, communément appelé mise à la terre, afin que le signal mesuré puisse être correctement acquis et mesuré. Dans certains cas, il n'y a pas de mise à la terre explicite, mais les résultats de mesure ne semblent pas poser de problème, c'est parce que l'équipement de mesure et le signal mesuré sont connectés à la terre par d'autres moyens, comme la même alimentation utilisée ou la référence la terre est connectée à la borne de terre du secteur en même temps. Cependant, lors de mesures rigoureuses, l'équipement de mesure doit être mis à la terre en fonction du signal testé. Plus la zone de boucle de la borne de mise à la terre du signal du signal mesuré à l'appareil de mesure est grande, plus il est facile d'interférer avec le signal, ce qui entraîne des erreurs de mesure ou même des erreurs de mesure.

Pour les signaux UART, lors de l'accès à l'analyseur logique, le cas le plus simple ne nécessite que de connecter 2 fils, un à la masse de référence et un au signal mesuré. Pour les différentes implémentations de couche physique du protocole UART que nous avons mentionnées précédemment, la manière dont les signaux sont connectés sera légèrement différente.

Par exemple, pour le signal UART au niveau TTL, en plus de connecter la masse de référence, il suffit de connecter le signal (TX ou RX) à tester à l'entrée de canal correspondante de l'analyseur logique.

Pour les signaux de bus RS232, nous pouvons soit mesurer le signal de bus après traduction de niveau (DSLogic a une plage de tension de tenue de +-30V à l'entrée du câble, et la plage de signal +-15V de RS232 peut être directement connectée), ou nous pouvons mesurer le signal numérique interne avant translation de niveau. Sa méthode de câblage est cohérente avec le signal TTL, la seule chose à noter est que le signal RS232 inverse le niveau (tension négative au repos, c'est-à-dire niveau bas), lors du décodage du protocole UART, nous pouvons inverser le niveau de signal correspondant dans la fenêtre de réglage du décodage de DSView (l'option Inverser le signal est définie sur oui).

Le bus RS485 utilise des signaux différentiels, et lorsque nous utilisons un analyseur logique pour l'acquisition du signal, nous devons porter une attention particulière à la connexion du signal mesuré. Tout d'abord, le site de référence de l'analyseur logique doit être connecté à la masse de référence de l'émetteur-récepteur RS485 correspondant à l'essai, afin que l'analyseur logique puisse être assuré d'avoir le plan de référence de niveau correct ; Deuxièmement, pour les signaux différentiels, l'analyseur logique n'a besoin que d'acquérir des niveaux d'homopolarité élevés et bas avec le signal interne. Du point de vue des signaux numériques, la voie différentielle ne fait qu'améliorer la fiabilité de la transmission du signal, sans ajouter d'informations supplémentaires. Comme illustré à la Figure 3-7, lors du test du signal du bus 485 à l'aide d'un analyseur logique, connectez la masse de référence de l'émetteur-récepteur de l'appareil correspondant et le signal A+ sur le bus différentiel.

Bien sûr, si seul le signal B peut être collecté, nous pouvons également configurer le décodeur UART pour inverser le signal afin d'obtenir le résultat de résolution de protocole correct lors du décodage dans DSView.

3.2.3. Paramètres de seuil

Le seuil de l'analyseur logique est la tension de jugement des niveaux haut et bas, c'est-à-dire que lorsque la tension du signal d'entrée est supérieure à la tension de seuil, l'acquisition est de niveau haut ; Lorsque la tension du signal d'entrée est inférieure à la tension de seuil, l'acquisition est faible.

Pour le protocole UART, nous avons précédemment indiqué qu'il a différentes implémentations de couche physique, et différentes implémentations de couche physique ont des normes de niveau différentes. Il suffit de choisir un seuil correspondant pour distinguer les niveaux élevés et bas dans différents cas. Les seuils illustrés à la Figure 3-8 peuvent essentiellement répondre à cette exigence.

Dans certains cas, l'amplitude du signal différentiel du bus RS485 peut varier sur une large plage en raison de la configuration ou du débogage. Parce que la spécification RS485 stipule que tant que la tension différentielle entre AB est supérieure à 200 mV, elle peut être considérée comme élevée. À ce stade, nous pouvons utiliser l'oscilloscope en pierre pour observer l'amplitude réelle du niveau de signal, puis décider du réglage de seuil approprié. Vous devez seulement vous assurer que la tension de seuil que vous définissez peut raisonnablement faire la distinction entre les niveaux haut et bas.

3.3. Acquisition simple du signal UART

La plupart des signaux UART sont des signaux à faible vitesse, tels que le débit en bauds le plus couramment utilisé de 115200, indiquant que la fréquence du signal n'est que de 115.2 KHz. De tels signaux peuvent être acquis directement en utilisant les paramètres par défaut de DSLogic. Ici, en prenant l'intervalle fixe de 1 s de l'hôte et en envoyant à plusieurs reprises le caractère « D » comme exemple, il décrit comment utiliser un analyseur logique pour acquérir et analyser de tels signaux UART.

3.3.1. Acquisition de signaux

Une fois le matériel et la connexion du signal préparés, cliquez directement sur le bouton "Démarrer" du logiciel DSView pour acquérir le signal testé au réglage par défaut (temps d'acquisition de la fréquence d'échantillonnage de 1 MHz 1 s). Si vous souhaitez modifier la fréquence d'échantillonnage et la durée d'acquisition, sélectionnez directement les paramètres correspondants dans la liste déroulante correspondante. Le principe de réglage du taux d'échantillonnage est recommandé d'être 10 fois ou plus de la fréquence maximale du signal mesuré, par exemple, pour les signaux UART avec un débit en bauds de 115200 bauds, la fréquence de signal la plus rapide est de 115.2 KHz, lorsque le taux d'échantillonnage de 1 M est sélectionné, chaque signal binaire aura 8 ou 9 points d'échantillonnage, et l'erreur de phase correspondante est de +-1/8 (12.5 %) ; Lorsqu'une fréquence d'échantillonnage de 10M est sélectionnée, il y aura 86 ou 87 points d'échantillonnage par bit de signal, correspondant à une erreur de phase de +-1/86 (1.16%). Bien sûr, il n'est généralement pas recommandé d'utiliser une fréquence d'échantillonnage trop élevée, car plus la fréquence d'échantillonnage est élevée, plus le temps pendant lequel elle peut être collectée est court, et une fréquence d'échantillonnage trop élevée peut collecter plusieurs sauts sur le seul saut. front du signal lent, causant ainsi des problèmes au décodage du protocole. La figure 3-9 montre la forme d'onde du signal résultant acquise à l'aide des paramètres par défaut.

Comme le montre la Figure 3-9, le canal 0 acquiert un signal constamment élevé, mais ne détecte aucun saut. Observez attentivement la règle de temps au-dessus de la fenêtre de forme d'onde et la barre de défilement au bas de la fenêtre pour savoir que la fenêtre actuelle n'affiche qu'une partie de la forme d'onde collectée, pas tous les signaux. À ce stade, vous pouvez zoomer avec la molette de la souris ou cliquer avec le bouton droit dans la zone de forme d'onde pour afficher toutes les formes d'onde pendant toute la durée d'acquisition. Obtenez le résultat illustré à la Figure 3-10.

Sur la base de la figure ci-dessus, nous voulons regarder uniquement la partie de transition du canal 0. Vous pouvez désactiver l'affichage de la forme d'onde des autres canaux dans la fenêtre Options et régler la hauteur d'affichage du signal du canal. Pointez ensuite la souris sur la forme d'onde cible et, en même temps, utilisez la molette de la souris pour agrandir la forme d'onde de la position pointée ; Alternativement, vous pouvez sélectionner la zone de la forme d'onde que vous souhaitez agrandir en maintenant enfoncé le bouton droit de la souris dans la zone. Maintenez également enfoncé le bouton gauche de la souris pour déplacer la forme d'onde vers la gauche et vers la droite. Obtenez les détails de la forme d'onde illustrés à la Figure 3-11.

Lors de l'observation de la forme d'onde, placer la souris sur la forme d'onde d'impulsion peut afficher des informations telles que la largeur d'impulsion, la période, la fréquence et le rapport cyclique du signal actuel. En même temps, vous pouvez également ajouter un curseur en double-cliquant sur le bouton gauche de la souris, et lorsque vous déplacez le curseur, il s'alignera automatiquement sur le bord de saut à proximité.

3.3.2. Décodage UART

La forme d'onde du signal recueillie par l'analyseur logique ne change dans le temps qu'aux niveaux haut et bas (0/1), ce qui n'est pas propice à notre analyse ciblée du processus et du contenu de la transmission du signal. Bien que nous puissions utiliser l'œil nu pour traduire le contenu du protocole correspondant à la forme d'onde selon la spécification du protocole, cela réduira considérablement l'efficacité de l'analyse. Le décodeur intégré de DSView fournit un contenu de décodage de protocole riche, transformant les formes d'onde ennuyeuses en caractères, marqueurs et contenu de données significatifs. Il facilite grandement l'analyse et la compréhension des signaux par les ingénieurs pour trouver des messages d'erreur ou des données critiques.

Dans le logiciel DSView, le protocole de décodage de la forme d'onde acquise est très simple, il suffit d'ouvrir le panneau "Decode", de rechercher le décodeur correspondant (ici, nous sélectionnons 1 : protocole UART) et de définir les options de décodeur correspondantes (y compris l'affichage/canal /structure de trame/format, etc.). Une fois déterminé, le logiciel commencera à décoder le protocole de l'UART sur le canal sélectionné. Le résultat décodé est affiché dans le canal de protocole. Ceci est illustré à la Figure 3-12.

Lors de la sélection d'un décodeur, DSView fournit une fonction de recherche de protocole pratique, il suffit d'entrer des caractères clés dans la zone de recherche de protocole, DSView répertorie tous les décodeurs contenant ces caractères, où l'utilisateur peut sélectionner le bon décodeur. Comme le montre la Figure 3-13, il existe deux protocoles liés à UART 0 : UART et 1 : UART, où 0 : UART est un décodeur simplifié qui n'analyse pas les informations de bits, ni ne prend en charge l'empilement de protocoles de niveau supérieur, lorsque nous voulons uniquement obtenir les données correspondant à la forme d'onde, vous pouvez utiliser ce protocole simplifié pour réduire le temps de décodage et les ressources mémoire.

La fenêtre des paramètres du décodeur comporte de nombreuses options de réglage liées au décodage, et le contenu de la fenêtre des paramètres des différents protocoles sera différent. Il existe certaines options que tous les décodeurs doivent définir, telles que la correspondance entre les signaux de canal et de protocole. Ici, nous utilisons le signal UART saisi par le canal 0, donc le canal correspondant qui doit être décodé doit être réglé sur le canal 0.

Et les options de réglage liées au protocole que nous avons expliquées en détail dans la section sur la structure de trame, dans le fonctionnement réel peuvent également être obtenues via le logiciel de l'ordinateur hôte du port série (assistant de débogage du port série, etc.) pour obtenir ces informations. Ceci est illustré à la Figure 3-14.

Pour le contenu des données décodées, DSView prend en charge différents formats d'affichage. Par exemple, le signal UART précédemment acquis affiche le caractère 'D' sous la forme de codes ASCII, ou il peut être modifié en mode d'affichage hexadécimal (Hex), et le résultat affichera 0x44. Ceci est illustré à la Figure 3-15. Les formats d'affichage actuellement pris en charge sont : hex (hexadécimal), dec (décimal), oct (octal), bin (binaire) et code ascii.

3.4. Acquisition d'une seule transmission UART

Lorsque la forme d'onde que nous voulons capturer est un signal occasionnel, nous ne savons pas quand la forme d'onde apparaîtra, et si nous utilisons la méthode d'acquisition directe, nous ne pourrons peut-être capturer que la forme d'onde du signal inactif la plupart du temps, et nous ne pouvons pas capturer le signal au moment de la transmission réelle.

A ce moment, il peut être capturé par déclenchement. En définissant les conditions de déclenchement correspondantes, nous pouvons contrôler l'heure de début de l'acquisition du signal en fonction du changement de forme d'onde, afin de capturer avec précision la forme d'onde du signal que nous voulons voir.

3.4.1. Mode tampon

DSLogic prend en charge deux modes d'acquisition : le mode flux et le mode tampon. Les données collectées en mode Stream sont transmises au PC en temps réel puis traitées par DSView. Les données collectées en mode tampon sont d'abord mises en cache dans le cache matériel interne de DSLogic, puis transférées vers le PC une fois l'acquisition terminée et traitées par DSView.

Outre les avantages d'atteindre des taux d'échantillonnage plus élevés, le mode Buffer prend également en charge davantage d'options et de paramètres de déclenchement, tels que le déclenchement à plusieurs niveaux, le déclenchement en série et le réglage des positions de déclenchement. Le mode flux, en revanche, ne prend en charge que le déclenchement simple.

3.4.2. Paramètres de déclenchement

Pour un déclenchement simple, nous pouvons définir l'option de déclenchement directement à côté du canal. Il correspond séquentiellement au front montant, au front haut, au front descendant, au niveau bas et à tout déclenchement sur front. Conservez simplement le mode de déclenchement simple par défaut dans le panneau de déclenchement. Par exemple, pour une transmission UART qui ne sait pas quand elle se produit, on peut choisir de déclencher le front descendant. Lorsque le signal UART reste inactif, le déclencheur n'est pas satisfait. DSLogic attend que la condition de déclenchement arrive, comme illustré à la Figure 3-17.

Lorsque l'UART commence à transmettre le premier bit de démarrage, la condition de déclenchement est activée et DSLogic acquiert la forme d'onde du signal au moment du déclenchement. Ceci est illustré à la Figure 3-18.

Considérons un scénario de déclenchement plus complexe, tel que l'appareil A envoyant constamment des données à l'appareil B au hasard, et l'appareil B répondant à différentes données en fonction du contenu des données envoyées par l'appareil A. Si nous voulons savoir quelles données l'appareil A a envoyées à l'appareil B avant d'envoyer les données 0, comment définir la condition de déclenchement pour capturer la forme d'onde au moment correspondant ?

Il y a deux problèmes qui doivent être résolus ici, d'abord nous devons définir l'emplacement du déclencheur afin que nous puissions voir les données avant le déclencheur, et non les données après le déclencheur ; Deuxièmement, nous devons trouver les caractéristiques de forme d'onde de l'appareil B envoyant les données 0 et les convertir dans la condition de déclenchement correspondante.

Analyse du protocole UART

Figure 3-19 Position du déclencheur

Selon les règles de protocole de l'UART, la forme d'onde qui envoie les données 0 sera un signal d'impulsion continu de bas niveau relativement large. Si le débit en bauds de l'UART est de 115200 et que le taux d'échantillonnage que nous avons défini est de 1 MHz, la forme d'onde des données 0 est illustrée à la Figure 3-20, qui sera une impulsion de bas niveau d'environ 78.125 uS.

Pour définir le déclencheur avancé ou la position du déclencheur nécessitant la prise en charge du mode tampon, vous devez d'abord définir le « mode d'exécution » sur « mode tampon » dans les « Options », et ne pas sélectionner l'option « Compression matérielle RLE ». Réglez la condition de déclenchement avancée sur le canal 1 avec un minimum continu de 75 points d'échantillonnage (correspondant à une fréquence d'échantillonnage de 1 MHz, qui est un niveau bas de 75 us), et réglez la position de déclenchement sur 80 % pour faciliter l'observation des données avant le déclenchement. Les paramètres spécifiques sont illustrés à la Figure 3-21.

Selon cette condition de déclenchement, il est déclenché lorsque l'appareil B envoie des données 0, et la forme d'onde acquise est illustrée à la Figure 3-22.

3.4.3. Répétez la collecte

Dans certains cas, nous devons observer dynamiquement l'état de certains signaux, tels que le contenu des données envoyées par Burst à chaque fois, mais nous ne savons pas quand les données sont envoyées, et il est impossible de cliquer fréquemment sur le bouton "Démarrer". . DSView fournit un mode d'acquisition "répétitive" qui acquiert et met à jour automatiquement les formes d'onde lorsque le déclenchement est atteint. Lorsque nous déboguons certains signaux de rafale périodiques, il est très pratique d'observer les résultats de l'acquisition dynamique et de l'analyse du protocole via le mode de répétition.

Le mode de répétition peut être défini comme illustré à la Figure 3-23. L'intervalle de répétition est le temps d'attente minimum entre deux échantillons pour faciliter l'observation de la forme d'onde et le décodage des résultats de l'acquisition précédente.

3.5. Acquisition de transmissions UART à long terme

Lorsqu'il est nécessaire d'acquérir des formes d'onde ultra-longues pour l'analyse, nous pouvons utiliser le mode Stream. DSLogic peut atteindre une profondeur d'échantillonnage de 16G par canal en mode Stream. A un taux d'échantillonnage de 1MHz, le temps d'acquisition peut atteindre 16G/1M ≈ 16000s, soit plus de 4 heures.

3.5.1.Mode flux

La configuration du mode flux est illustrée à la Figure 3-24, et différentes versions de matériel DSLogic prennent en charge différentes options de canal en mode flux. Pour U3Pro16, basé sur le port USB3.0, il peut atteindre 3 canaux à une fréquence d'échantillonnage jusqu'à 1 GHz, 6 canaux à une fréquence d'échantillonnage jusqu'à 500 MHz, 12 canaux à une fréquence d'échantillonnage jusqu'à 250 MHz et 16 canaux à une fréquence d'échantillonnage jusqu'à 125 MHz.

Lorsque la quantité de données collectées est relativement importante, le protocole 0:UART peut être utilisé pour le décodage, par rapport à 1:UART, qui omet la sortie des informations de bits, ne prend pas en charge l'empilement de protocoles de haut niveau et peut raccourcir le temps de décodage et réduire l'occupation de la mémoire. Les autres fonctions sont les mêmes que 1 : UART. L'effet de décodage est illustré à la Figure 3-25.

3.5.2. La liste des protocoles s'affiche

Comme le montre la figure suivante, le résultat du décodage graphique est complètement synchronisé avec la forme d'onde acquise dans le temps, ce qui nous aide à comprendre la forme d'onde et à trouver le problème, mais en même temps, en raison de l'échelle d'affichage du temps, ce n'est pas propice à la visualisation du résultat du décodage. Les affichages de liste compensent cette lacune en facilitant la visualisation et l'analyse de grandes quantités de contenu décodé.

DSView permet de basculer entre les résultats graphiques et les résultats de liste. Cliquez sur n'importe quelle ligne dans la liste des résultats pour accéder automatiquement au résultat de la forme d'onde correspondante, et vous pouvez également choisir de zoomer automatiquement sur la forme d'onde lors du saut ou de fixer la colonne de taux de zoom actuelle de la forme d'onde. De plus, lorsque nous visualisons la forme d'onde à un certain moment, si nous voulons sauter à la position où le résultat de décodage correspondant à cette forme d'onde est affiché dans la liste, il suffit de cliquer sur le bouton de positionnement dans le coin supérieur droit de la fenêtre d'affichage de la liste.

De plus, le contenu décodé peut être exporté vers un fichier via l'affichage de la liste. Comme le montre la figure ci-dessus, en cliquant sur le bouton "Enregistrer" affiché dans la liste, vous pouvez choisir d'exporter le contenu actuellement décodé vers un fichier csv ou txt, ce qui est pratique pour un traitement de données plus tiers, comme l'entrée dans matlab pour l'analyse ou comme entrée de données pour d'autres logiciels.

3.5.3. Décoder la recherche de données

Un autre avantage de l'affichage de la liste est que les résultats décodés peuvent être utilisés comme chaînes pour les recherches de résultats, telles que la recherche d'opérations spécifiques ou d'octets de données spécifiques, qui peuvent localiser rapidement l'emplacement à afficher.

Entrez le mot-clé que vous souhaitez rechercher dans la zone de recherche, puis appuyez sur les boutons avant/arrière pour trouver le contenu décodé qui contient le mot-clé, et l'interface de forme d'onde sautera à l'emplacement approprié pour l'analyse. Si vous analysez les résultats d'un segment, vous pouvez cliquer sur une ligne dans la liste de contrôle et les boutons Avant/Arrière recherchent les correspondances précédentes et suivantes en commençant par ce comportement au lieu de recommencer à zéro.

Pour le protocole UART, DSView prend également en charge la recherche de données sur plusieurs lignes. Peut être utilisé pour trouver des résultats de chaînes contiguës qui apparaissent dans vos données. Comme le montre la Figure 3-29, une recherche de données multiligne concatène plusieurs mots-clés avec le caractère « - ».

3.5.4. Recherche de forme d'onde

DSView prend en charge non seulement la recherche de résultats décodés, mais également la fonction de recherche de la forme d'onde d'origine. Les formes d'onde peuvent être localisées rapidement dans de nombreuses scènes. Par exemple, lorsque la forme d'onde est transmise soudainement, car la période d'inactivité est relativement longue, il est impossible de voir la forme d'onde détaillée transmise plusieurs fois en même temps, vous pouvez utiliser la recherche de forme d'onde et passer immédiatement au prochain saut de forme d'onde après visualiser la forme d'onde au moment précédent pour s'assurer que le rapport de zoom est inchangé.

Vérifiez la barre d'outils "Rechercher", la boîte de recherche apparaîtra sous la fenêtre du logiciel, cliquez sur la boîte de recherche, ouvrez la fenêtre des paramètres de recherche, déterminez le bord de saut de canal, vous pouvez rechercher la forme d'onde qui répond aux critères par la gauche et la droite clés. En même temps, vous pouvez également déplacer manuellement le curseur de recherche pour déterminer où commence la recherche.

Lorsque la recherche est sélectionnée, un curseur avec une balise "S" apparaît, l'état initial est gris, si vous cliquez à gauche/droite pour rechercher et trouver une forme d'onde qui répond aux critères, le curseur deviendra bleu et se déplacera automatiquement vers l'emplacement de recherche . Si vous déplacez manuellement le curseur « S », le curseur redevient gris.

3.5.5. Utilisation du curseur

DSView prend en charge une large gamme d'opérations de curseur, permettant non seulement des mesures de synchronisation avec le curseur, mais également le marquage et le suivi de formes d'onde spéciales avec le curseur. Lorsque la forme d'onde est inactive ou que l'intervalle est long, vous pouvez insérer un curseur à chaque position d'intérêt, et lorsque vous souhaitez passer à une forme d'onde d'intérêt, il vous suffit de cliquer avec le bouton droit dans la zone de la règle, puis de cliquer sur le numéro de séquence de curseur auquel vous souhaitez accéder, qui peut accéder à la position de curseur correspondante.

Si vous souhaitez déplacer le curseur, il vous suffit de déplacer la souris près du curseur, lorsque le curseur apparaît en gras, cliquez sur le bouton gauche de la souris pour sélectionner, le curseur suivra le mouvement de la souris, déterminer la position et cliquez à nouveau sur le bouton gauche pour libérer le curseur. Lorsque vous souhaitez que le curseur s'aligne sur l'un des bords de saut d'une forme d'onde de canal particulière, il vous suffit de déplacer la souris près du bord de saut, et le curseur s'alignera automatiquement sur le bord du saut.

3.5.6. Mesures de la souris

En plus des mesures basées sur le curseur, DSView fournit des mesures de souris plus pratiques. Par exemple, les mesures de la largeur d'impulsion actuelle, de la période, du rapport cyclique et de la fréquence (il suffit de placer la souris sur l'impulsion changeante) ; Mesure du nombre de fronts (un clic sur les positions de début et de fin de la forme d'onde comptera automatiquement les sauts de fronts de cet intervalle) ; et mesure de la distance du bord (clic de la souris sur le bord de départ et déplacement vers le bord final).

Comme illustré à la Figure 3-31, déplacez la souris sur la position du bord de transition de départ, cliquez sur le bouton gauche de la souris, sélectionnez le bord de transition de départ, déplacez la souris sur la position du bord de transition de fin et la distance entre les deux les bords de transition (durée/point d'intervalle d'échantillonnage) seront affichés et le bouton gauche de la souris sera de nouveau cliqué pour terminer la mesure.

4. Questions fréquemment posées

4.1. Déterminer le débit en bauds inconnu

Lorsque nous ne pouvons pas obtenir à l'avance le débit en bauds de la forme d'onde UART, nous pouvons également deviner le véritable débit en bauds par la forme d'onde acquise. DSView fournit un décodeur « Guess bitrate » pour deviner les paramètres de débit en bauds d'une chaîne de forme d'onde arbitraire. Le principe du débit binaire Guess est de trouver tour à tour la largeur d'impulsion la plus étroite dans la forme d'onde, en tant que largeur de forme d'onde d'un bit, puis de calculer son inverse en tant que débit en bauds. Il peut donc y avoir plusieurs résultats, il suffit d'observer si l'impulsion correspondante est une largeur d'impulsion raisonnable, puis de sélectionner le résultat du débit en bauds maximum. Ceci est illustré à la Figure 4-1.

Une fois le débit en bauds obtenu, il peut être réglé sur les options du décodeur UART. Étant donné que le protocole UART resynchronise chaque bit de démarrage, l'erreur du débit en bauds ne s'accumulera que dans une trame de données, et tant que l'erreur dans une trame ne dépasse pas la limite du bit bit, le résultat de décodage correct peut être obtenu .

Bien sûr, s'il y a un petit échantillon de la forme d'onde, comme aucune impulsion d'une largeur de bit unique dans la forme d'onde, alors le débit en bauds estimé est susceptible d'être incorrect, entraînant un résultat de décodage incorrect. Lorsqu'il existe une forme d'onde qui n'est pas conforme au protocole, le décodeur UART donnera également des indications d'erreur possibles, telles qu'une erreur de trame, comme illustré à la Figure 4-2. Les ingénieurs expérimentés peuvent ajuster le débit en bauds en observant la forme d'onde et les résultats de décodage afin d'obtenir les résultats de décodage corrects.

4.2. Décryptage des signes anti-confiance

Dans la section précédente, nous avons mentionné que le protocole UART peut être transmis par différents signaux physiques, et certains signaux de couche physique peuvent avoir une relation inverse avec le signal de protocole (interchangeabilité de niveau haut et bas), comme RS232, ou le signal B dans le signal différentiel RS485. Lorsque le signal que nous collectons est inversé, le décodeur UART de DSView peut également être réglé pour obtenir le résultat de décodage correct.

L'utilisateur n'a qu'à remplacer le "Invert Signal ?" dans les paramètres du décodeur UART. L'option est réglée sur "oui". Le décodage du signal inverse est illustré dans la figure suivante.

4.3. Décodage de la communication UART multi-groupes

Le décodeur UART de DSView est délibérément conçu pour être une approche à canal unique, ce qui facilite les paramètres de canal arbitraires pour la communication multiplexée lors du décodage. Par exemple, pour une communication UART en duplex intégral, qui a à la fois un signal TX et un signal RX, il suffit d'ajouter deux décodeurs UART pour correspondre au décodage de TX et RX.

Comme le montre la figure ci-dessous, c'est le cas où trois signaux UART sont décodés en même temps.

4.4. Erreur de décodage causée par la position de départ

Pour tout processus de communication, le dispositif doit repartir de l'état initial afin de recevoir correctement le contenu de la communication, c'est-à-dire identifier et analyser correctement la trame protocolaire. Il en va de même pour les analyseurs logiques, si l'acquisition d'un signal commence exactement au milieu d'une trame de données, alors une mauvaise position de départ est susceptible de conduire à un mauvais résultat de décodage. Comme le montre la figure suivante, l'appareil continue d'envoyer la chaîne "DreamSourceLab", mais comme l'emplacement de la première capture est exactement au milieu de la trame de données, le décodage de la première forme d'onde devient brouillé.

Afin d'éviter un décodage incorrect des données, nous pouvons définir artificiellement la position de départ et la position finale du décodage, afin d'éviter les erreurs de décodage causées par des trames de données tronquées. La position de décodage peut être la position spécifiée de n'importe quel curseur, et l'opération n'a besoin que de définir les positions de début et de fin correspondantes dans les paramètres du décodeur après avoir inséré le curseur correspondant. Comme le montre la figure suivante, le réglage de la position de départ évite un décodage incorrect de la première forme d'onde tronquée.

5. Analyse avancée

5.1. Analyse de protocole multicouche

L'UART est un protocole de base très largement utilisé, et de nombreux protocoles de transmission utilisés dans les applications pratiques sont étendus sur la base de l'UART. Par exemple : DMX512, LIN, MIDI et Modbus, etc., la base de communication sous-jacente est le protocole UART. 、

Selon cette fonctionnalité, DSView prend également en charge l'empilement d'analyse des protocoles multicouches. Lorsque nous ajoutons un décodeur d'un protocole complexe, DSView construit automatiquement l'ensemble de la pile de protocoles à partir du niveau supérieur, ce qui rend les résultats de décodage plus riches et plus parfaits, ce qui est très utile pour l'analyse approfondie et la compréhension du protocole par l'utilisateur.

Prenons Modbus RTU comme exemple pour comprendre le processus d'analyse des protocoles multicouches par DSView. Basé sur la fonction de transfert d'octets UART, Modbus RTU spécifie la signification spécifique de chaque octet en détail, de sorte que la structure de trame de Modbus est formée en combinant plusieurs trames de protocole UART ensemble. Ceci est illustré dans la figure suivante.

Lorsque vous utilisez DSView pour un tel décodage de protocole, il vous suffit d'entrer le protocole correspondant dans la zone de recherche de protocole et de l'ajouter. DSView crée automatiquement la page des paramètres pour l'ensemble du protocole d'empilement, comme illustré dans la figure suivante, et l'utilisateur peut définir les paramètres correspondants.

Comme le montre la figure suivante, la structure d'empilement du protocole est clairement visible à partir du résultat de décodage du Modbus RTU. Le Modbus pour chaque trame se compose de trames de 8 octets UART. Le contenu d'une trame Modbus aura également des commentaires clairs indiquant sa signification spécifique. Lorsqu'une erreur de transmission se produit, un tel résultat de décodage peut très clairement localiser l'emplacement de l'erreur, ainsi que la cause de l'erreur (qu'il s'agisse d'un problème avec l'UART sous-jacent ou d'un problème avec la couche de protocole Modbus). Si vous ne souhaitez pas voir les détails sous-jacents, vous pouvez masquer le contenu décodé correspondant sur la page des paramètres du décodeur.

Soyez le premier à commenter

Laissez un commentaire

Votre adresse email n'apparaitra pas.


*