Description de l'interface Uart en russe. Explorer le port série UART. Parallèle ou série

L'hystérie a soulevé de nombreuses questions sur la façon de connecter la carte à un ordinateur. Et beaucoup de gens ne comprennent même pas ce qu'est un UART. Et j'ai décidé de vous dire ici à quel point il s'agit d'un outil puissant.

Le routeur se transforme en ordinateur si vous connectez un clavier et y affichez via UART

Du port CW au port COM

Le protocole UART (Universal asynchronous Receiver/Transmitter) ou, en russe, UART (Universal Asynchronous Receiver/Transmitter) est aujourd'hui le plus ancien et le plus répandu. protocole physique transfert de données. Le plus célèbre de la famille UART est le protocole RS-232 (communément appelé port COM, le même que celui de votre ordinateur). C'est probablement le plus ancien interface informatique. Il a survécu jusqu'à ce jour et n'a pas perdu de sa pertinence.

Il faut dire que l'interface UART est initialement apparue aux États-Unis comme moyen de transmission de messages télégraphiques, et qu'elle comportait cinq bits de travail (comme dans le code Morse). Utilisé pour la transmission appareils mécaniques. Puis vinrent les ordinateurs et les codes ASCII nécessitant sept bits. Au début des années 60, le célèbre 8 bits Tableau ASCII, puis le format de transmission a commencé à occuper un octet complet, plus trois bits de contrôle.

En 1971, alors que le boom des microcircuits avait déjà commencé, Gordon Bell pour les ordinateurs PDP de la société Numérique occidental J'ai fabriqué une puce UART WD1402A. Au début des années 80, National Semiconductor a créé la puce 8520. Dans les années 90, un tampon pour l'interface a été inventé, ce qui a permis de transférer des données vers davantage de données. vitesses élevées. Cette interface, n'ayant subi pratiquement aucune modification, a survécu jusqu'à ce jour.

Physique de l'interface

Pour comprendre ce qui rend les différentes interfaces UART similaires et différentes, examinons le principe de fonctionnement du protocole le plus populaire et le plus apprécié, le RS-232. Je ne décrirai pas minutieusement toutes les subtilités de son travail. Plus d'une douzaine de mégaoctets d'articles ont été écrits à ce sujet, et si vous savez utiliser Google, vous pouvez facilement tout trouver informations nécessaires. Mais je vais vous dire les bases, heureusement avec elles, vous pouvez déjà tout diriger de manière cool, et toutes sortes d'astuces sont très rarement utilisées.

Nos principales lignes opérationnelles sont RXD et TXD, ou simplement RX et TX. La ligne de transmission est TXD (Transmise Data) et le port RXD (Received Data) est celui de réception.
Ces lignes de port COM sont utilisées pendant la transmission sans contrôle matériel du flux de données. Avec un flux matériel, des lignes d'interface supplémentaires sont utilisées (DTS, RTS, etc.). La sortie TX de l'émetteur est connectée à l'entrée RX du récepteur et vice versa. Principe électrique Le fonctionnement RS-232 diffère de la logique TTL standard de 5 volts. Dans ce protocole, le zéro logique se situe respectivement entre +3 et +12 volts et un entre -3 et -12. La plage de -3 à +3 volts est considérée comme une zone d'incertitude. Veuillez noter que toutes les tensions sont indiquées par rapport au boîtier de l'ordinateur ou à la masse. Maintenant je pense que tu comprends pourquoi unité informatique Il existe deux tensions d'alimentation à la fois : -12 et +12 volts. Ils ont été introduits spécifiquement pour le fonctionnement du port COM.


Réception du signal via RS-232 (extrait du livre « PC Hardware Interfaces » de M. Guk)

Une telle amplitude de tensions de fonctionnement, jusqu'à 24 volts, est principalement nécessaire pour l'immunité au bruit des lignes de communication. Selon la norme, la longueur du câble à travers lequel nous transportons les données peut être de 15 m, même si dans la pratique, les gens ont réussi à le faire fonctionner même à 25 m. Paramètres électriques RS-232 est caractéristique principale, ce qui le distingue des autres protocoles de la famille UART.

Les caractéristiques suivantes (format de message et taux de transfert de données) sont pleinement applicables à tous les types d'UART et garantissent leur compatibilité grâce à des schémas d'interface simples.

Un message standard prend 10 bits. Mais cette règle ne s'applique qu'à paramètres standards Port COM. En principe, il peut être reconfiguré pour qu'il comprenne même l'interface One-Wire. En mode veille, lorsque la ligne ne transmet rien, elle est dans un état logique, soit -12 volts. Le début d'une transmission est indiqué par la transmission d'un bit de départ, qui est toujours égal à zéro. Vient ensuite la transmission de huit bits de données. L'envoi est complété par un bit de parité et un bit de stop. Le bit de parité vérifie les données transmises. Le bit de démarrage nous indique que le transfert de données est terminé. A noter que le bit STOP peut occuper 1, 1,5 et 2 bits. Ne pensez pas qu'il s'agit de bits fractionnaires ; ce nombre ne parle que de sa durée. Le bit d'arrêt, comme le bit de départ, est nul.


Signal UART sur l'écran de l'oscilloscope. Le bit de démarrage, les données et le bit d'arrêt sont visibles. Merci à DIHALT pour la photo

Vitesse de fonctionnement

Même si vous n'avez jamais eu à travailler avec un port COM auparavant, au moins, dans le modem vous devez connaître les vitesses nominales de fonctionnement : 9600, 28800, 33600, 56000, etc. Combien de bits par seconde s'échappent de notre port ? Écoutez, disons que notre vitesse est de 9 600 bits par seconde. Cela signifie que l’envoi d’un bit prendra 1/9600 de seconde et que l’envoi d’un octet prendra 11/9600. Et cette vitesse pour un octet n'est correcte que si le bit de stop occupe un bit. S'il occupe deux bits d'arrêt, alors la transmission sera 12/9600. Cela est dû au fait qu'en plus des bits de données, davantage morceaux spéciaux: bit de démarrage, d'arrêt et de parité. La plage de vitesse du port COM est standardisée. En règle générale, tous les appareils fonctionnent à trois vitesses standard : 9600, 19200, 115200. Mais d'autres options sont possibles, même en utilisant des vitesses non standard ou des vitesses qui changent dans le temps - je suis tombé sur cela lors du débriefing de l'appareil suivant.

Un protocole tellement différent

Il existe de nombreux types d'UART. Je ne citerai pas leurs noms, car si vous parlez anglais, vous pourrez les rechercher vous-même sur Google. Mais les plus importants ne peuvent être ignorés ! Permettez-moi de vous rappeler que la principale différence entre les interfaces réside dans l'environnement et la méthode de transfert de données. Les données peuvent même être transmises via fibre optique.

La deuxième interface la plus courante après le RS-232 est le RS-485. Il s'agit d'un standard industriel et la transmission s'effectue sur des câbles à paires torsadées, ce qui lui confère une bonne immunité au bruit et vitesse accrue transfère jusqu’à 4 mégabits par seconde. La longueur du fil ici peut atteindre 1 km. Généralement, il est utilisé dans les usines pour contrôler diverses machines.

Il faut dire que l'IRDA, ou communication infrarouge, intégrée à la plupart des téléphones et PDA, est aussi essentiellement un UART. Seules les données sont transmises non pas par des fils, mais par rayonnement infrarouge.

Dans les cartes SMART (SIM, télévision par satellite, cartes bancaires) - les appareils mêmes que tout phreaker qui se respecte rêve de voler - utilise également notre bien-aimé UART. Certes, il existe une transmission de données semi-duplex et la logique de fonctionnement peut être de 1,8/3,3 et 5 volts. Il semble que RX soit soudé avec TX à une extrémité et à l'autre - en conséquence, l'un transmet, l'autre écoute à ce moment-là, et vice versa. Ceci est réglementé par la norme des cartes à puce. De cette façon, nous savons exactement combien d'octets nous enverrons et combien la carte nous répondra. Le sujet mérite un article séparé. De manière générale, rappelez-vous que l'UART est présent presque partout.


Appareils intégrant UART, dans le sens des aiguilles d'une montre : souris, lecteur d'émulateur de carte SMART, PDA Palm m105, carte de débogage pour le microcontrôleur ATtiny2313 (ou AT89C2051), modem.

Couplage d'interfaces

J'ai déjà fait mal aux yeux différentes interfaces, mais comment travailler avec eux ? Eh bien, c'est clair avec le RS-232 ordinaire, mais, disons, avec une alimentation de 5 volts ? C'est simple : il existe différentes puces de conversion prêtes à l'emploi. En règle générale, ils contiennent les chiffres « 232 » dans les marquages. Si vous voyez un petit appareil avec ces numéros sur le schéma, rassurez-vous : il s'agit très probablement d'un convertisseur. Toutes les interfaces UART sont interfacées via de tels microcircuits avec une petite connexion. Je ne parlerai pas des interfaces industrielles, mais je parlerai de ces convertisseurs qui nous intéressent principalement.

Le convertisseur d'interface le plus connu est un microcircuit développé par MAXIM, qui tire une partie de son nom (max232). Il nécessite quatre condensateurs de 0,1 microfarad à 4 microfarads et une alimentation de 5 volts. Étonnamment, ce circuit intégré de 5 volts génère une tension négative pour interfacer l'UART de 5 volts au RS-232.

Il existe des microcircuits Couplage USB avec UART, par exemple, puce ft232rl. Ubuntu dispose déjà de pilotes intégrés pour cette puce. Pour Windows, vous devrez les télécharger depuis le site officiel. Après avoir installé les pilotes, un port COM virtuel apparaîtra dans le système et vous pourrez déjà conduire avec lui divers appareils. Je vous conseille de ne pas accepter ces microcircuits comme les seuls possibles. Il existe un grand nombre d'analogues moins chers et plus intéressants, alors effectuez une recherche sur Google et vous comprendrez que le monde de l'UART est cool.

En général, les microcircuits sont assez chers et on peut parfois se débrouiller avec des circuits plus complexes mais moins chers utilisant une paire de transistors.

Qu'est-ce que cela nous donne ?

Comme vous le comprenez, l'interface UART est présente dans de nombreux appareils contenant une sorte de processeur ou de contrôleur. Je dirai même plus : s'il y a un contrôleur là-bas, alors la terre est absolument là (mais elle ne peut pas toujours être utilisée). En règle générale, cette interface est utilisée pour configurer et vérifier le fonctionnement de l'appareil. Souvent le constructeur passe sous silence la présence de cette interface dans le produit, mais elle n'est pas difficile à trouver : il suffit de télécharger le manuel du processeur et vous saurez où se trouve l'interface. Après avoir obtenu un accès physique au matériel via notre interface, vous pouvez le personnaliser à votre guise ou même le faire fonctionner selon vos besoins, et non comme le fabricant l'avait prévu. En général, pour tirer le meilleur parti d’un appareil modeste. Connaître ce protocole permet également d'écouter ce qui se passe dans les lignes d'échange entre différents processeurs, car les fabricants organisent souvent des réseaux UART entiers dans leur appareil. En général, il existe de nombreuses applications, l'essentiel est de comprendre intuitivement comment le faire.

Mettons à jour le routeur

L'autre jour, j'ai installé un routeur WiFi WL-520GU et, après avoir lu l'article de Step « Mise à niveau pour un point d'accès » (][ #106), j'y ai installé avec succès Linux. Mais j'ai des problèmes pour monter la partition d'échange disque dur. Il est donc devenu nécessaire de consulter le journal de démarrage du point d'accès - que la partition soit montée ou non - et, comme on dit, à la volée, afin d'apporter immédiatement les modifications nécessaires. Avec un sixième sens, je soupçonnais que mon routeur devait simplement avoir un UART. J'ai pris un tournevis cruciforme et j'ai commencé à le démonter. C'est une question triviale, mais il y a un hic : les vis cachées sont situées sous les pieds en caoutchouc (si vous décidez de répéter l'opération, n'oubliez pas que si vous le démontez, vous perdrez votre garantie). Ce qui est apparu sous mes yeux était une planche plutôt ennuyeuse, où tout était « chip-in-one » : un Processeur, qui comprend le tout, une RAM externe, une clé USB, un convertisseur de puissance et une rangée de connecteurs avec boutons. Mais la carte n'était pas soudée plage de contact, plus précisément, des trous pour les aiguilles. Ils étaient quatre. Ici c'est UART, c'est évident ! Même sans multimètre, vous pouvez voir sur le tableau que les aiguilles les plus extérieures sont à +3,3 volts et que la seconde est à la masse. Les contacts du milieu sont respectivement RX et TX. Lequel est celui qui est facilement déterminé par un sondage scientifique (graver l'interface est très problématique).
Je voudrais tout de suite noter que l'interface UART est différente dans chaque routeur. Dans la plupart des cas, ce ne sont pas des trous soudés sur la carte. Certes, dans un routeur ASUS, j'ai même trouvé un connecteur entièrement signé.

Assemblage du convertisseur

Pour connecter le routeur à un ordinateur, vous devez coupler les interfaces RS-232 avec l'UART du routeur. En principe, vous pouvez vous connecter à l'USB à l'aide de la puce FT232RL mentionnée ci-dessus - c'est ce que j'ai fait lors de la première vérification du routeur. Mais ce microcircuit est dans un boîtier assez difficile à souder, nous en reparlerons donc plus des solutions simples. À savoir la puce MAX232. Si vous comptez être alimenté par un routeur, il y aura très probablement 3,3 volts, il est donc préférable d'utiliser le MAX3232, que l'on trouve généralement dans les PDA (le schéma de câblage est facile à trouver sur Internet). Mais mon routeur avait une alimentation de +5 volts à l'entrée, et j'ai une grande variété de ces microcircuits, donc je ne m'en suis pas soucié. Pour l'assemblage, nous aurons besoin de condensateurs de 0,1 uF (4 pièces) et du microcircuit lui-même. Nous soudons tout schéma traditionnel, et nous commençons les expériences.


Sources pour l'assemblage

J'ai immédiatement installé un connecteur mâle 9 broches en sortie afin de pouvoir connecter facilement un câble null modem. Si vous vous en souvenez, à l'époque de DOS, de tels câbles étaient utilisés pour créer un réseau de deux ordinateurs et les couper à Dyuknyukem. Le fil pour nos besoins n'est pas difficile à assembler. Certes, il ne s’agira pas d’un null modem complet et vous ne pourrez pas jouer grand-chose grâce à lui, mais piloter un point d’accès sera exactement ce qu’il vous faut ! Vous aurez besoin de deux connecteurs femelles à 9 broches, de leurs boîtiers et d'un fil, par exemple d'une vieille souris ou d'un vieux clavier (l'essentiel est qu'il ait trois fils). Nous connectons d'abord les masses - il s'agit de la cinquième broche des connecteurs ; Prenez simplement n'importe quel fil et soudez-le à la 5ème broche des deux côtés. Mais avec RX et TX, vous devez faire quelque chose de plus astucieux. D'une extrémité du fil, nous le soudons au 3ème contact et de l'autre au 2ème. De même avec le troisième fil, nous soudons seulement d'une extrémité au 2ème contact, de l'autre - au 3ème. Le fait est que TX doit transmettre à RX. Nous cachons les connecteurs soudés dans le boîtier - et le câble null modem est prêt !


Broches soudées sur la carte du routeur.

Pour faciliter l'installation, j'ai soudé un connecteur à broches dans la carte mère du routeur et un connecteur inversé dans le montage avec MAX232 et j'ai inséré le carton comme s'il s'agissait d'un emplacement. RX et TX du routeur sont sélectionnés expérimentalement.


Tableau assemblé

Nous devons maintenant alimenter la puce du convertisseur. Nous avons déjà un fil commun directement dans le connecteur de la carte mère du routeur. Mais le + 5 volts se trouve juste à l’entrée d’alimentation du routeur, à l’endroit où est connecté l’adaptateur. Nous déterminons le point 5 volts avec un voltmètre en mesurant différents nœuds par rapport à la masse du routeur.
Connectez l'alimentation. Nous allumons et commençons nos expériences malveillantes.


Faites un trou pour que les fils sortent


Port COM soudé


Tout est assemblé. Veuillez noter que le fil d'alimentation rouge va au connecteur de l'adaptateur du routeur. Le nœud à l'intérieur est réalisé afin d'arracher les fils soudés d'un coup sec.

Configuration du terminal

Nous devons mettre en place un programme de terminal. Sous Windows, tout est assez simple : lancez Hyper Terminal, désactivez la vérification des données logicielles et matérielles, réglez la vitesse sur 115200 et un bit d'arrêt. Mais sous Linux, les choses sont un peu plus délicates. J'ai Ubuntu et je vais vous en parler. Tout d’abord, déterminez comment s’appelle le port COM dans votre assembly. Dans mon cas, COM1 était ttyS0 (si vous utilisez la puce FT232 par exemple, elle s'appellera ttyUSB0). Pour travailler avec, j'ai utilisé le logiciel minicom.

Exécutez-le avec les paramètres : minicom -l -8 -c on -s. Sélectionnez ensuite « Paramètres » port série»:
Port série /dev/ttyS0

* Baud/parité/bits 115200 8N1
* Contrôle matériel flux - non
* Contrôle logiciel flux - non

Enregistrez les paramètres. Le logiciel tentera d’initialiser le modem – n’y prêtez pas attention. Pour ouvrir le menu, appuyez sur . Là, vous pouvez modifier les paramètres, par exemple : activer/désactiver l'écho - E.
Paramètres

Je ne recommande pas de connecter la puce du convertisseur au routeur afin de vérifier sa fonctionnalité. Il est uniquement permis d'en prendre de la nourriture. Le test est très simple : vous devez relier RX avec TX. Tout d'abord, vous reliez les 2e et 3e contacts dans le port COM - vérifiez les paramètres du terminal. Vous écrivez quelque chose sur le clavier : si les caractères reviennent, alors tout va bien. Vous vérifiez également le câble, les mêmes contacts. Ensuite, vous connectez le microcircuit, et placez un cavalier à sa sortie. Je le signale car, par exemple, j'ai eu des problèmes et rien n'a fonctionné jusqu'à ce que je vérifie tout et trouve un bug.

Après tous les paramètres, vous pouvez le connecter en toute sécurité au routeur et rechercher RX-TX sur le routeur, en coupant périodiquement l'alimentation. Si tout est fait correctement, lorsque l'alimentation est appliquée, vous verrez le journal de démarrage du routeur. Félicitations, vous disposez désormais d'une racine matérielle complète, comme si vous étiez assis devant un moniteur avec un clavier de routeur.


Journal de démarrage du routeur dans le programme Minicom

Natation autonome

D'accord, faire la même chose via un programme de terminal qui est plus pratique à faire via SSH n'est pas de la glace. Je voulais transformer le routeur en un ordinateur Linux autonome, doté de sa propre architecture intelligente. Pour ce faire, il est nécessaire que les données du clavier soient transmises via UART et affichées sur le moniteur via celui-ci. Souder et développer l’appareil était paresseux. C'est alors qu'est née l'idée d'utiliser à ces fins le PDA, qui prenait la poussière et restait inactif. En fait, l'ordinateur de poche jouera le rôle de clavier et de contrôleur d'affichage, et servira également d'interface pour les interfaces.

J'ai d'abord essayé l'ancien Palm m100. Mais apparemment il a un très petit mémoire tampon, et la quantité de données provenant du routeur le rendait malade. J'en ai pris un autre - un PDA industriel, avec un port COM normal et un terminal. Je l'ai connecté, je l'ai inséré dans le dock et, par conséquent, j'ai obtenu un petit ordinateur Linux. En principe, au lieu d'un PDA industriel coûteux, la plupart des ordinateurs de poche exécutant le système d'exploitation WinCE feront l'affaire ; l'essentiel est de trouver un logiciel de terminal approprié.


Ordinateur Linux :)

Résultats

J'ai donc montré un petit exemple d'utilisation d'UART. Si vous vous lancez dans ce protocole, alors croyez-moi, vous deviendrez simplement le maître de divers éléments matériels. Il est disponible presque partout et grâce à lui, vous pouvez connecter des choses apparemment complètement différentes. Par exemple, vers le même routeur lorsque petits réglages se connecte téléphone mobile selon Ewart, - et distribue Internet à partir de là. En général, il existe de nombreuses applications. N'ayez pas peur d'expérimenter, de vous renseigner et de concrétiser vos idées.

Cet article est une version éditée pour Habr de mon article dans Hacker n°05/09 » Outil principal freakeur."

Littérature:
1. Mikhail Guk « PC Hardware Interfaces » est tout simplement la bible de l'étudiant sur les ordinateurs personnels.

UART - Récepteur-émetteur asynchrone universel, ou en russe Récepteur-émetteur asynchrone universel - UART. Utilisé pour organiser la communication entre un ordinateur et divers appareils numériques en électronique. L'interface convertit les données transmises en code série afin qu'elles puissent être transmises une par une ligne numérique autre appareil électronique. Description directe Il existe toujours un protocole UART, mais sa description indirecte peut être consultée dans les normes bien connues protocoles physiques RS-232, RS-422, RS-423, RS-485

Quelle est la différence entre ces interfaces. Dans une interface série, les données sont envoyées sur un fil de manière séquentielle, l'une après l'autre, tandis qu'une interface « parallèle » possède un bus composé de plusieurs fils, le long desquels des parties du message sont transmises en parallèle.

Le principal avantage de la transmission parallèle est qu’un groupe de bits est envoyé en même temps. De plus, la transmission de données parallèle est également utilisée à l'intérieur du microcontrôleur, aucune conversion supplémentaire n'est donc requise. Mais il existe également des inconvénients importants. Le principal est que les bits le long des fils peuvent ne pas arriver en parallèle et que des solutions de circuits supplémentaires sont nécessaires pour recevoir des messages précis. Cela limite la vitesse de transfert.

Pour transmission série bits transmis Les données doivent d'abord être converties en code parallèle, ce qui nécessite du temps supplémentaire. Mais il n'est alors pas nécessaire de synchroniser la séquence de bits pour chaque fil séparé qu'est-ce qu'il y a dedans dans ce cas, augmente les possibilités de transfert de données à grande vitesse.

L'émetteur-récepteur asynchrone universel - UART est utilisé depuis le début des années 60 du siècle dernier et a depuis subi une sérieuse modernisation. Même au 21ème siècle, les protocoles série UART représentent toujours l'une des principales méthodes d'échange de bits entre différents appareils numériques sur Internet. longues distances.

L'UART est la base de ce qui était si largement utilisé dans le passé. Dans le très sous forme simple L'interface UART se compose de trois fils : transmission, réception et masse.


Un inconvénient majeur d'un émetteur-récepteur asynchrone universel réside dans le fait qu'il n'existe aucun moyen de déterminer lequel des deux appareils numériques qui est le leader et qui est l'esclave (maître/esclave). Généralement, cela détermine que celui qui conçoit le circuit peut nommer ce fil TX et spécifier le fonctionnement de l'appareil, selon la figure ci-dessous :


Dans ce cas, le microcontrôleur reçoit et transmet des données. Et vous pouvez procéder comme ceci :


Conformément à ce schéma, le microcontrôleur transmet toujours (TX) au récepteur (RX) et vice versa. Lequel des deux schémas est toujours correct ? Il s'avère que tout dépend uniquement du fabricant de la puce et de l'appareil numérique fini.

Attention, les TX connectés aux TX et RX-RX brûleront la puce dans la plupart des cas, c'est donc un bon exemple de lecture de la documentation avant de connecter les puces via UART, car il existe plusieurs méthodes de connexion.

Si le récepteur et l'émetteur sont sur le même circuit imprimé, alors le niveau du signal pendant la réception et la transmission est presque égal au niveau de tension d'alimentation du microcontrôleur. Disons que le niveau logique est "1" qui sera transmis avec un potentiel de 3,3 V et zéro, avec un potentiel ne dépassant pas 0,5 Volt. Avec la transmission du signal sur de longues distances, des problèmes commencent à apparaître sous forme de distorsion du signal et augmentent, des erreurs de transmission apparaissent, jusqu'à un arrêt complet.

Afin d'éliminer de tels problèmes, des tampons supplémentaires sont ajoutés aux lignes de transmission et de réception, qui amplifient le signal. Ils peuvent ensuite être transmis sur des dizaines de mètres sans perte d'information. Mais en continu, une tension de -3V..-15V est utilisée pour transmettre le niveau d'une unité logique, et pour "0" - +3V à +15V.


Au lieu de la synchronisation, l'UART utilise ce qu'on appelle un « bit de démarrage » qui prépare circuit numériqueà transmettre un message. Après le bit de démarrage, il y a des données, puis un « bit d'arrêt » est envoyé à la ligne, indiquant la fin du transfert d'informations. Ensemble, il y a 10 bits : le premier est le bit de démarrage, 8 bits de données et le dernier bit d'arrêt, voir l'oscillogramme de transfert de données via le protocole d'interface UART dans la figure ci-dessous.


Les bits sont transmis depuis certaine vitesse transmission, qui est mesurée en bits par seconde ou en bauds. Ainsi, 9 600 bauds équivaut à 9 600 bps. Et comme nous transmettons 10 bits par message, cela signifie qu'à cette vitesse nous pouvons transmettre 960 messages en une seconde.

La valeur du débit en bauds n'est pas transmise avec le message, des débits en bauds égaux doivent alors être prédéfinis dans le récepteur et l'émetteur. L'interface UART permet jusqu'à 5 % de désynchronisation du timer. Dans cet intervalle, il peut recevoir et recevoir des données d'information correctes.

Nous pouvons affirmer avec certitude à 100 % que chaque microcontrôleur moderne comprend un interface série-UART. En sachant travailler avec ce port, vous pourrez coordonner le travail de l'ancien et du moderne appareils électroniques, transmettre ou recevoir des données vers divers appareils électroniques.

Dans les microcontrôleurs modernes, au lieu d'une interface UART, ils utilisent une norme USART entièrement compatible (émetteur-récepteur asynchrone/synchrone universel).

USART est plus flexible en termes de configuration UART avec fonctions supplémentaires. L'USART vous permet d'ajuster la longueur du mot avec plus grand intervalle(5 à 9) que dans UART (8 à 9). Dans USART, la transmission de données synchrone et asynchrone est possible (dans UART, seule la transmission asynchrone est effectuée). Pour la transmission synchrone, en plus de deux lignes - données et alimentation, un bus supplémentaire (XCK) avec un signal d'horloge est utilisé. Avec ce paramètre, l'USART croise déjà Interface SPI et il peut être utilisé comme « maître » dans l'interface SPI.

Considérons le cas classique où l'interface est asynchrone (c'est-à-dire avec une ligne de synchronisation manquante).

La transmission des données dans l'interface UART s'effectue bit par bit à intervalles de temps égaux. Cette période est définie par la vitesse de l'UART et pour un type de connexion spécifique est indiquée en bauds, ce qui correspond au nombre de bits par seconde. En électronique, il existe une gamme généralement acceptée de vitesses typiques : 300 ; 600 ; 1200 ; 2400 ; 4800 ; 9600 ; 19200 ; 38400 ; 57600 ; 115200 ; 230400;460800; 921 600 bauds ;

La vitesse (S, bauds) et la durée des bits (T, secondes) sont liées par la formule bien connue

Les octets de données sont envoyés par paquets (le premier bit vient avant l'octet de données et le deuxième bit vient après, le nombre de bits est facultatif)


Pour recevoir et transmettre des données, l'interface UART utilise uniquement deux lignes de données et une masse :

bus de données de transmission (TXD ou TX);
ligne de réception de données (RXD ou RX);
masse (GND).

Les niveaux logiques un et zéro sont similaires aux niveaux TTL typiques :

enregistrer. "1" - +5 Volts ;
enregistrer. "0" 0 Volt.

Un type d'interface UART - RS-485

Les réseaux construits sur la base des interfaces RS-485 et RS-422 sont des émetteurs-récepteurs connectés à l'aide de câbles à paires torsadées. RS-485 est basé sur le principe de transmission de données différentielle (équilibrée). Sa base repose sur la transmission d'un signal sur deux fils. De plus, le premier fil (A) de l'interface transporte le signal original, et le deuxième fil transporte sa copie inverse. En mots simples, si sur A il y a "1", alors sur B "0" et vice versa, c'est-à-dire qu'entre les deux fils d'une paire torsadée il y a toujours une différence de potentiel : au niveau "1" elle est positive, à "zéro « C'est négatif.

Dans cette leçon, je parlerai de l'interface UART dans les microcontrôleurs AVR et de la façon de l'utiliser dans . UART est un émetteur-récepteur asynchrone universel. L'interface elle-même est assez courante et est disponible dans presque tous les Microcontrôleurs AVR, les seules exceptions sont le microcontrôleur Attiny13 et quelques autres. La transmission des données s'effectue bit par bit à intervalles de temps égaux, cette période de temps est spécifiée par le débit en bauds, par exemple des vitesses standard : 4800 bauds, 9600 bauds, 19200 bauds, 38400 bauds, etc. Il convient également de noter que la vitesse doit être la même des deux côtés de la connexion. À propos, le récepteur et l'émetteur fonctionnent indépendamment. Connexion UART réalisé selon trois lignes : RXD - réception, TXD - transmission et GND - commun (moins). Vous devez connecter l'UART, pour ainsi dire, « en sens inverse » RXD à TXD et TXD à RXD comme dans l'image ci-dessous :

En utilisant UART, vous pouvez également connecter un microcontrôleur et un ordinateur, mais il y a un problème : l'interface UART a des niveaux logiques de 0 et +5 volts, et dans un ordinateur, les niveaux logiques de l'interface RS-232 peuvent aller de -25 à -3 volts et de +3 à +25 volts. Un convertisseur de niveau nous aidera à résoudre ce problème : il peut être assemblé à l'aide de transistors, ou il est préférable d'utiliser un microcircuit spécial MAX232. Voici le schéma de connexion du MAX232 le plus courant :

Travailler avec UART dans BASCOM-AVR

Tout d'abord, avant de commencer à travailler avec UART, vous devez spécifier le débit en bauds, cela se fait avec la commande : $bauds =(vitesse). Par exemple: $bauds = 9600.N'oubliez pas non plus d'indiquer la fréquence réelle du générateur d'horloge avec la commande $cristal =(vitesse Hz), sinon la vitesse du programme ne correspondra pas à la vitesse du microcontrôleur et, par conséquent, la réception ou la transmission des données sera incorrecte. Exemple d'écriture d'une commande $cristalà une fréquence de 8 MHz : $cristal = 8000000. À propos, il est logique d'ouvrir la fenêtre des paramètres dans BASCOM-AVR (Options>Compilateur>Communications) :

Dans cette fenêtre de paramètres, vous pouvez spécifier la vitesse UART, fréquence d'horloge générateur d'horloge et voir le pourcentage d'erreurs à la fréquence d'horloge sélectionnée. Mais il est préférable de spécifier la vitesse et la fréquence d'horloge directement dans le programme lui-même. À propos, le pourcentage d'erreurs à une fréquence d'horloge de 4 MHz est très faible (0,16 %), mais toujours là. Si vous souhaitez que le pourcentage d'erreurs soit nul, vous devez sélectionner une fréquence d'horloge qui sera un multiple de la vitesse de l'UART. Par exemple, avec une fréquence d'horloge de 3,6864 MHz et une vitesse UART de 115 200 bauds, le taux d'erreur sera nul.

Ainsi, après avoir spécifié la fréquence d'horloge et la vitesse de l'UART, vous pouvez commencer à travailler avec l'interface elle-même. Pour envoyer quelque chose à l'UART, il existe une commande Imprimer(variable ou texte entre guillemets), voici un exemple de son utilisation : Imprimez « Bonjour tout le monde ! ». En plus du texte entre guillemets, vous pouvez également afficher des variables, plusieurs à la fois séparées par des points-virgules, par exemple : Imprimer "Poids :" ; un; "kg" ou alors Imprimez "Bonjour" ; "monde!". Vous pouvez également le recevoir depuis UART, cela se fait avec la commande Saisir(texte ou variable entre guillemets pour l'envoi) , (variable où écrire les données reçues). Comme vous pouvez le voir, tout est très simple : on écrit d'abord le texte entre guillemets qui sera transmis à l'UART, puis on indique la variable dans laquelle seront écrites les données reçues de l'UART. Voici un exemple : Saisissez « Poids : », un

Travailler avec UART en pratique

Eh bien, essayons maintenant de "piloter" l'UART en pratique, nous allons d'abord assembler un circuit simple :

Ensuite, nous composerons un programme simple, (en utilisant les connaissances acquises) et compilez-le. La voici :

$ crystal = 8 000 000 $ bauds = 9 600 Dim A As Byte Print "Bonjour tout le monde !" Imprimer "Bonjour http://site" Entrée "Taille :" , A Imprimer "Taille=" ; UN ; "octets" Fin

Et ce programme fonctionnera comme ceci : il enverra d'abord du texte à l'UART, puis il attendra de recevoir des données (dans ce cas, des nombres) qui seront écrites dans une variable. un et enverra plus tard le texte avec la modification. Pour ceux qui sont trop paresseux pour compiler, les fichiers de la leçon ont firmware prêt. Nous flashons le microcontrôleur, connectons les broches du microcontrôleur RXD, TXD (connectez-vous comme je l'ai écrit ci-dessus) et GND à Port COMà ordinateur (via un convertisseur de niveau) ou vers USB (adaptateur USB - UART), ouvrez un programme sur l'ordinateur pour travailler avec les ports COM, par exemple : Terminal by Bray, Hyper Terminal ou Émulateur de terminal dans BASCOM-AVR, indiquez le port COM auquel vous vous êtes connecté, indiquez le débit en bauds, regardez la fenêtre du programme, alimentez le microcontrôleur et réjouissez-vous. Il faut également prendre en compte qu'après le flashage du microcontrôleur, il est nécessaire de régler les bits de fusible sur la fréquence d'horloge du générateur dont nous avons besoin, dans ce cas (pour le programme ci-dessus) à 8 MHz. À 8 MHz, vous pouvez utiliser le générateur d'horloge interne du microcontrôleur et régler les bits de fusible comme ceci (pour ).

Articles et astuces

De nombreux utilisateurs s'intéressent à tout ce qui concerne la connexion de la carte à un PC. En même temps, ils se demandent quels sont les paramètres UART du téléphone. Notre article est consacré spécifiquement à cet outil, ainsi qu’à son application dans le domaine des technologies mobiles.

Qu'est-ce que l'UART dans un téléphone et pourquoi devez-vous le configurer ?

AVEC langue anglaise UART, ou récepteur-émetteur asynchrone universel, peut être traduit par un moyen asynchrone universel de réception et de transmission. DANS moment présent ce n'est pas seulement le plus célèbre, mais aussi tout à fait ancien protocole transfert d'informations.

Le protocole UART le plus courant est RS-232, c'est-à-dire un port COM installé sur ordinateur de bureau. Sa particularité réside dans le fait qu'aujourd'hui encore, il ne perd pas sa pertinence et est activement utilisé. La norme industrielle RS-485 est également largement connue.

Ajoutons que UART1 et UART2 sont utilisés pour la connexion câble du micrologiciel, ainsi que pour la connexion à un ordinateur. Au connecteur système de notre appareil cellulaire les ports tels que UART1, UART2 et USB sont affichés. Ajoutons que le port infrarouge est, en fait, aussi un UART. La seule différence réside dans la méthode de transmission des données (non filaire, mais infrarouge). Les cartes SIM utilisent également ce protocole, bien qu'elles offrent une méthode de transmission d'informations semi-duplex.

Attention particulière mérite une demande d’appairage d’interface. Il existe aujourd'hui des microcircuits spéciaux pour cela. Un bon exemple est une puce ft232rl conçue pour interfacer UART avec USB. Il ne faut cependant pas s'y attarder, car il existe des moyens d'interfaçage analogiques moins chers, mais très intéressants.

Pourquoi l'interface UART est-elle nécessaire ? En règle générale, c'est avec lui que nous pouvons vérifier et ajuster les performances de notre appareil.

Souvent les fabricants technologie mobile ne vous concentrez pas sur la prise en charge de ce protocole. Pour en être sûr, il est recommandé de télécharger le manuel du processeur doté d'un UART. Nous pourrons non seulement accéder physiquement à l'appareil à l'aide de notre protocole, mais également configurer son fonctionnement à notre propre discrétion - souvent pas du tout comme le fabricant l'avait prévu.

Nous avons donc découvert ce que c'était cette interface. Cependant, comprendre ce que sont les paramètres UART d'un téléphone ne peut que nous donner instructions détaillées en définissant.

Instructions pour Configuration UART au téléphone

Pour configurer le protocole, appelez menu d'ingénierie téléphone en composant la combinaison *#3646633#, après quoi nous passons au menu suivant. Pour ce faire, allez dans « Appareil » > « Définir UART » > « Paramètres UART ».

Nous voyons des éléments tels que « PS Config » et « TST Config ». Le premier point est chargé d'échanger des informations avec un PC via un câble USB, et le second est nécessaire au débogage du logiciel, grâce auquel les développeurs identifient les dysfonctionnements.

Chaque élément contient des paramètres permettant de rediriger le flux vers l'appareil (UART 1-3 ou USB) et la vitesse de ce flux. Nous n'avons pas besoin du port de test, c'est-à-dire « TST Config », et nous n'y touchons pas. Concernant "PS Config", vous devez vous occuper de certains paramètres. Définissez la valeur sur « UART1 ». Le pilote d'un PC indique généralement le débit binaire (par exemple, 115 200). Réglez la même vitesse pour UART1 (ou « Auto »).

De plus, au lieu d'UART1, vous pouvez définir « Port USB », cependant, dans ce cas, lors de la connexion d'un câble USB, il n'est pas garanti que Mode USB sera affiché. Redémarrez l'appareil et essayez à nouveau la connexion.

Vous vous souvenez de l'époque où les imprimantes, les souris et les modems avaient des câbles épais avec ces connecteurs énormes et encombrants ? Ceux qu’il fallait littéralement visser dans l’ordinateur ? Peu de gens savent que ces composants UART étaient utilisés pour communiquer avec votre ordinateur. Presque complètement remplacé ces anciens câbles et connecteurs Technologie USB. Les interfaces UART décrites dans cet article n'appartiennent pas au passé. Ils sont utilisés dans de nombreux projets électroniques de bricolage pour Connexions GPS, modules Bluetooth et lecteur Cartes RFIDà Pi, Arduino ou autres microcontrôleurs.

Interface UART : description

UART signifie Récepteur/Émetteur Asynchrone Universel. Ce n'est pas protocole de communication, tels que SPI et I2C, et le circuit physique du microcontrôleur. Le but principal est de transmettre et de recevoir des informations. L’un des avantages de la technologie est qu’elle n’utilise que deux fils.

Une interface UART est constituée de deux appareils qui communiquent entre eux. La source d'envoi convertit les informations d'un périphérique de contrôle, tel qu'un processeur, sous forme série, les transmet dans un ordre série à l'UART de réception, qui convertit les valeurs pour le périphérique de réception. Seuls deux fils sont nécessaires pour transférer des informations entre deux appareils.

Introduction à la communication UART

L'UART RS485 transmet les données de manière asynchrone, ce qui signifie qu'il n'y a aucun signal pour synchroniser la sortie de bit de l'appareil émetteur vers l'appareil récepteur. Au lieu d'un signal d'horloge, l'UART émetteur ajoute les bits de début et de fin du paquet transmis. Ces paramètres définissent le début et la fin du document.

Lorsque l'UART récepteur détecte le bit de départ, il commence à lire les bits entrants à une certaine fréquence, appelée débit en bauds. Le débit de données est une mesure de vitesse exprimée en unité de bits/s. Les deux appareils doivent fonctionner à peu près à la même vitesse de transfert. La vitesse de transmission entre les appareils d'envoi et de réception peut différer de 10 %.

Les deux appareils doivent également être configurés pour envoyer et recevoir la même structure de paquets.

UART - qu'est-ce que c'est et comment ça marche ?

L'UART qui va transmettre les informations les reçoit du bus de données. Il est utilisé pour envoyer des informations à un autre appareil tel qu'un processeur, une mémoire ou un microcontrôleur. Une fois que l'UART émetteur a reçu des données parallèles du bus de données, il ajoute un bit de démarrage, un bit de parité et un bit d'arrêt pour créer un paquet de données. Ensuite, le paquet est émis séquentiellement, par parties. L'UART récepteur lit un bit de données sur sa broche. L'UART de réception reconvertit les informations sous forme parallèle et supprime les bits de démarrage et d'arrêt. Enfin, l'UART récepteur transmet le paquet de données en parallèle au bus de données du côté réception.

La ligne de transmission est généralement tenue à haut niveau tension lorsqu’il ne transmet pas d’informations. Pour commencer, l'UART tire la ligne de transmission de haut en bas en un cycle d'horloge. Lorsque l'UART récepteur détecte une transition de tension haute-basse, il commence à lire les bits de la trame de données au débit en bauds.

Caractéristiques techniques

Le système UART de base offre une communication full duplex fiable, à vitesse modérée, avec trois signaux : Tx (données série transmises), Rx (données série reçues) et masse. Contrairement à d'autres protocoles tels que SPI et I2C, aucun signal d'horloge n'est requis car l'utilisateur le fournit. matériel L'UART a requis des informations temporelles.

Un signal de données typique dans une description d'interface UART est simplement une tension qui passe entre la logique basse et la logique haute. Le récepteur ne peut convertir correctement ces états logiques en données numériques que s'il sait quand échantillonner le signal. Cela peut être facilement réalisé en utilisant un signal d'horloge séparé. Par exemple, l'émetteur met à jour le signal de données à chaque front montant, puis le récepteur échantillonne les données à chaque front descendant.

Termes clés

Le bit de départ est le premier bit d'un transfert sur un seul octet. Cela indique que la ligne de données sort de l'état inactif. L'état inactif est généralement logique haut, donc le bit de démarrage est logique bas.

Le bit de départ est un peu d’informations sur le service. Cela signifie qu'il facilite la communication entre le récepteur et l'émetteur, mais ne transmet pas de données significatives.

Arrêtez un peu - dernier morceau transfert sur un seul octet. Son niveau logique est le même que l'état de repos du signal, c'est-à-dire le maximum logique.

Procédure étape par étape

Pour signaler l'achèvement d'un paquet de données, l'UART émetteur connecte la ligne de données de basse tensionà haute tension pendant une durée de deux bits.

Description de l'interface UART :

    L'UART émetteur reçoit des données en parallèle du bus de données et ajoute peu de démarrage, bit de parité et bit(s) d'arrêt dans la trame de données.

    Le paquet entier est envoyé séquentiellement de l'émetteur à l'UART de réception, qui échantillonne la ligne de données à un débit de données préconfiguré.

    L'UART de réception supprime le bit de démarrage, le bit de parité et le bit d'arrêt de la trame de données, reconvertit les données série en parallèle et les transfère vers le bus de données du côté réception.

    Convertit les octets reçus d'un ordinateur en circuits parallèles en un seul flux binaire série pour la transmission sortante.

    Lors d'une transmission entrante, convertit le flux binaire série en octets que l'ordinateur traite.

    Ajoute un bit de parité (si sélectionné) aux transmissions sortantes, vérifie la parité des octets entrants (si sélectionné), supprime le bit de parité.

    Ajoute des séparateurs de début et de fin pour les transmissions sortantes et les supprime des transmissions entrantes.

Avantages et inconvénients

Pas parfait, mais les UART sont plutôt bons dans ce qu’ils font. Voici quelques avantages et inconvénients pour vous aider à décider s’ils répondent aux besoins de votre projet :

Avantages :

    Seuls deux fils sont utilisés.

    Aucun signal de synchronisation.

    Possède un bit de parité pour la vérification des erreurs.

    La structure du paquet de données peut être modifiée si les deux côtés sont configurés pour cela.

    Méthode bien documentée et largement utilisée.

Défauts:

    La taille de la trame de données est limitée à 9 bits maximum.

    Ne prend pas en charge plusieurs esclaves ou plusieurs maîtres.

De plus, le débit en bauds de chaque interface Arduino UART doit être inférieur à 10 % l'un de l'autre.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :