Qu'est-ce que la communication série ?
Le port série fait généralement référence à une interface série asynchrone (port série), principalement utilisée pour la transmission de données série bit par bit. Le port série est un élément indispensable pour nous dans l'industrie embarquée.Lorsque nous avons commencé à apprendre les microcontrôleurs, la première interface de communication que nous avons apprise était USART (Universal Synchronous/Asynchronous Receiver/Transmitter) - Universal Synchronous/Asynchronous Serial row receiver/transmitter.
De plus, la communication série est principalement divisée en trois méthodes de communication : RS232, RS422 et RS485. Elle a été expliquée systématiquement auparavant (Introduction à l'interface de communication série RS485/RS232/RS422), et Xiaoyi ne la présentera pas en détail ici.
Comme mentionné ci-dessus, le port série joue un rôle très important dans notre développement quotidien, et nous rencontrons souvent de nombreux problèmes et souffrons de diverses tortures.Parlons ensuite des problèmes courants et des solutions dans la communication série habituelle.
Habituellement, lorsque nous rencontrons des problèmes de débogage de la communication série, nous devons utiliser un outil tel que USB vers TTL, ligne DuPont (fil), etc. Tout d'abord, nous devons nous assurer que nos outils sont normaux, et nous pouvons nous auto-tester et dépannez les problèmes de communication série à l'aide des méthodes suivantes :
1. Court-circuitez le TX et le RX de l'USB vers TTL avec un fil Dupont ou un capuchon de cavalier, ouvrez les outils de débogage du port série, tels que XCOM, SSCOM, etc., et ajustez le débit en bauds, le bit d'arrêt, le bit de contrôle et d'autres paramètres aux paramètres requis du module de communication, puis envoyer des données à volonté.Habituellement, l'auteur préfère utiliser l'hexadécimal pour envoyer et recevoir, afin de s'assurer qu'il y a des données au milieu ou à la fin des données qui ne peuvent pas être vues visuellement à l'aide de valeurs ASCII, telles que des données. Il y a 0x00, 0x0a, etc. à la fin. Après vous être assuré qu'il n'y a aucun problème avec vos outils et vos câbles, vous pouvez continuer à résoudre les problèmes de communication.
2. Il s'avère que TX et RX ont été inversés entre l'USB vers TTL et le module sans fil, mais il n'y a pas de réponse après l'envoi de commandes au module.
Solution : lorsque vous rencontrez les problèmes ci-dessus, vous devez d'abord vérifier vous-même l'outil, puis vérifier si les deux côtés partagent le même terrain. GND fournit un niveau de référence 0. S'il n'y a pas de terrain d'entente, il est très probable qu'il y aura Ensuite, vérifiez les deux côtés Si les paramètres du port série sont cohérents, la communication par port série est un protocole de communication facile à développer et à vitesse réglable, dont nous utiliserons pour la plupart UART - Universal Asynchronous Transmission Receiver/Transmitter, port série la communication asynchrone peut également être appelée communication asynchrone start-stop , est directement transmise en unités de caractères, il n'y a pas d'exigence de temps fixe entre les caractères et chaque bit de chaque caractère est transmis à un moment fixe. Cela signifie que si vous utilisez un débit en bauds relativement élevé pour communiquer avec un débit en bauds relativement faible, il est très probable que l'appareil à faible débit en bauds ne sera pas en mesure de lire les informations de transition du signal inactif. Ici, j'utilise un exemple plus extrême pour illustrer:
Produits connexes :
module série vers BLE -- E104-BT5032A
module de port série sans fil--E280-2G4T12S
Lorsque les bits de données des paramètres des deux ports série sont de 8 bits, le bit d'arrêt est de 1 bit et le bit de parité est de 0 bit, mais le débit en bauds du périphérique A est de 9600 et le périphérique B est de 921600, la situation suivante se produira :
Lorsque l'appareil B envoie un octet de données à l'appareil A, le temps nécessaire à l'appareil B de l'envoi à la fin est de 1/921600*(8+1+1)=10.8us, et le même appareil A envoie/ reçoit un Le temps d'un octet est (8 + 1 + 1) / 9600 = 1,04 ms. Permettez-moi de demander, si la différence de temps est plusieurs fois comme celle-ci, lorsqu'un débit en bauds élevé est envoyé à un périphérique à faible débit en bauds, il est très probable que le faible débit en bauds L'appareil ne pensera jamais que le flux de données envoyé est une chaîne de données, car il ne peut pas du tout être analysé.
Par conséquent, la communication du port série doit garantir que le débit en bauds, le bit d'arrêt et les autres paramètres des deux parties sont cohérents. Inversement, l'envoi de données à un débit en bauds faible vers un débit en bauds élevé sera considéré comme une donnée erronée, c'est ce que l'on appelle le code brouillé.
3. Il s'avère que les deux parties ont utilisé les mêmes paramètres pour la communication, mais il existe toujours des problèmes de communication, tels que la réception de caractères brouillés.
Solution : Tout d'abord, vous devez d'abord réduire le baud pour vous assurer qu'il n'y a pas de problème avec le module et l'USB vers TLL, et également vous assurer que le module n'est pas dans des cas particuliers tels que la transmission transparente. Vous pouvez également utiliser la logique analyseurs et autres outils pour vérifier.De nombreux analyseurs logiques sont maintenant Avec sa propre analyse de données, il peut être utilisé pour s'assurer que le module est normal. En fait, la plupart du temps lorsque vous rencontrez ce genre de problème, il est plus recommandé de vérifier d'abord si l'USB vers TLL prend en charge le mode de fonctionnement actuel.