Utiliser des UART dans les applications de haut niveau
Important
Il s’agit de la documentation Azure Sphere (héritée). Azure Sphere (hérité) prend sa retraite le 27 septembre 2027 et les utilisateurs doivent migrer vers Azure Sphere (intégré) pour l’instant. Utilisez le sélecteur de version situé au-dessus du TOC pour afficher la documentation Azure Sphere (intégrée).
Azure Sphere prend en charge les UART (Universal Asynchronous Receiver Transmitter, émetteur-récepteur asynchrone universel) pour les communications série. Un UART est un type de circuit intégré qui est utilisé pour envoyer et recevoir des données via un port série sur un ordinateur ou un périphérique. Les UART sont couramment utilisés et connus pour leur simplicité. Cependant, contrairement aux bus SPI et I2C, les UART ne prennent pas en charge l’utilisation de plusieurs appareils subordonnés.
Remarque
Cette rubrique décrit comment utiliser des UART dans une application générale. Pour plus d’informations sur l’utilisation des UART dans les applications temps réel, consultez Utiliser des périphériques dans une application prenant en charge le temps réel.
Les applications générales Azure Sphere peuvent communiquer avec les UART en appelant les API UART des bibliothèques d’application. L’exemple UART_HighLevelApp montre comment communiquer avec des UART sur un appareil MT3620.
Configuration requise des UART
Les applications qui communiquent avec les UART doivent inclure les fichiers d’en-tête appropriés et ajouter des paramètres UART au manifeste de l’application.
Toutes les applications doivent définir leur matériel cible et inclure le fichier d’en-tête de définition matérielle correspondant.
Fichiers d'en-tête
#define UART_STRUCTS_VERSION 1
#include <applibs/uart.h>
#include "path-to-your-target-hardware.h"
Déclarez la définition du préprocesseur UART_STRUCTS_VERSION
avant d’inclure le fichier d’en-tête. Cette entrée spécifie la version de struct qui est utilisée par l’application.
Remplacez « path-to-your-target-hardware.h » par le chemin du fichier d’en-tête de votre matériel.
Paramètres de manifeste de l’application
Dans le manifeste de l’application, les paramètres UART listent les UART qui sont accessibles par l’application. Un UART peut être utilisé par une seule application à la fois. Pour configurer ces paramètres, ajoutez la fonctionnalité Uart
au manifeste de l’application, puis ajoutez chaque UART à la fonctionnalité. Le manifeste d’application Azure Sphere contient plus de détails sur le manifeste de l’application.
Dans votre code, utilisez les constantes définies pour votre matériel afin d’identifier les UART. Le compilateur convertit ces valeurs en valeurs brutes lorsque vous générez l’application.
Par exemple, voici un extrait du manifeste d’une application qui cible une carte de développement de référence (RDB) MT3620 et configure deux UART sur un MT3620.
"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],
L’extrait suivant montre comment spécifier les mêmes UART dans une application qui cible Avnet MT3620 Starter Kit :
"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],
Configurer et ouvrir un UART
Avant d’effectuer toute opération sur un UART, vous devez configurer les paramètres et ouvrir l’UART. Lorsque vous ouvrez un UART, un descripteur de fichier est retourné. Vous pouvez passer ce descripteur aux fonctions qui effectuent les opérations sur l’UART.
Pour configurer les paramètres, appelez la fonction UART_InitConfig pour initialiser le struct UART_Config. Une fois que vous avez initialisé le struct UART_Config, vous pouvez changer les paramètres UART du struct.
Pour ouvrir l’UART et appliquer les paramètres, appelez la fonction UART_Open, puis passez le struct UART_Config.
Effectuer des opérations de lecture et d’écriture sur un UART
Vous pouvez utiliser les fonctions POSIX pour effectuer des opérations de lecture-écriture sur un UART. Pour effectuer une opération de lecture sur un UART, appelez la fonction read(). Pour effectuer une opération d’écriture sur un UART, appelez la fonction write().
Fermer un UART
Pour fermer l’UART, appelez la fonction POSIX close().
Prise en charge de la carte MT3620
Cette section décrit les options UART applicables uniquement lors de l’exécution d’Azure Sphere sur une carte MT3620.
Pour la carte MT3620, les spécifications UART sont listées dans État de la prise en charge du MT3620. Le guide de l’utilisateur pour la carte de développement MT3620 décrit la disposition des broches et leurs fonctions pour le câblage.
Le dossier HardwareDefinitions du répertoire d’installation du Kit de développement logiciel (SDK) Microsoft Azure Sphere contient des définitions pour les cartes de développement, modules et puces Azure Sphere courants. Il contient des fichiers d’en-tête et JSON qui définissent les interfaces principales pour la base de données RDB MT3620, MT3620, ainsi que d’autres matériels MT3620. L’emplacement par défaut du dossier HardwareDefinitions se trouve C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions
sur Windows et /opt/azurespheresdk/HardwareDefinitions
sur Linux.
Le référentiel d’exemples Azure Sphere sur GitHub contient des fichiers d’en-tête et JSON qui définissent des interfaces principales SPI pour la puce MT3620 et MT3620 RDB, ainsi que d’autres matériels MT3620.-->
Les paramètres UART suivants sont pris en charge : 8N1 (8 bits de données, 1 bit d’arrêt et aucune parité) est le paramètre par défaut :
- Quand vous configurez la carte de développement MT3620, vous avez la possibilité d’utiliser n’importe quel port ISU comme interface UART. Si vous utilisez un port ISU comme interface UART, vous ne pouvez pas utiliser le même port comme interface I2C ou SPI.
- taux de baud : 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 50000, 576000, 9216000, 1000000, 11520000, 15000000 et 2000000.
- Bit de données : 5, 6, 7 et 8.
- Bit d’arrêt : 1 et 2.
- Parité : impaire, paire et aucune.
- Mode de contrôle de flux : RTS/CTS, XON/XOFF et aucun contrôle de flux.
- Mémoire tampon de réception matérielle : 32 octets.
Lorsque vous utilisez un UART dans une application de haut niveau, seuls 4 des 5 broches de bloc périphérique ISU disponibles sont utilisées. L’épingle inutilisée peut être utilisée comme épingle GPIO par la même application de haut niveau. Consultez les périphériques d’E/S pour obtenir la liste des broches ISU inutilisées qui peuvent être réutilisées pour GPIO.