Utiliser des UART dans des applications de haut niveau
Azure Sphere prend en charge les émetteurs récepteurs asynchrones universels (UART) pour la communication en série. Un UART est un type de circuit intégré utilisé pour envoyer et recevoir des données sur un port série sur un ordinateur ou un périphérique. Les UART sont largement utilisés et connus pour leur simplicité. Toutefois, contrairement à SPI et I2C, les UART ne prennent pas en charge plusieurs appareils subordonnés.
Note
Cette rubrique explique comment utiliser des UART dans une application de haut niveau. Pour plus d’informations sur l’utilisation d’UART dans les applications RTApp , consultez Utiliser des périphériques dans une application compatible temps réel .
Les applications de haut niveau Azure Sphere peuvent communiquer avec les UART en appelant les API UART des bibliothèques d’applications. L’exemple UART_HighLevelApp montre comment communiquer avec des UART sur un appareil MT3620.
Conditions requises pour 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 de matériel 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 UART_STRUCTS_VERSION
préprocesseur avant d’inclure le fichier d’en-tête. Cela spécifie la version de struct utilisée par l’application.
Remplacez « path-to-your-target-hardware.h » par le chemin d’accès au fichier d’en-tête de votre matériel.
Paramètres du manifeste d’application
Les paramètres UART dans le manifeste de l’application répertorient les UART auxquels l’application accède. Une seule application peut utiliser un UART à la fois. Pour configurer ces paramètres, ajoutez la Uart
fonctionnalité 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 traduit ces valeurs en valeurs brutes lorsque vous générez l’application.
Par exemple, voici un extrait d’un manifeste d’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 le Kit de démarrage Avnet MT3620 :
"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],
Configurer et ouvrir un UART
Avant d’effectuer des opérations sur un UART, vous devez configurer les paramètres et ouvrir l’UART. Lorsque vous ouvrez un UART, un descripteur de fichier est retourné que vous pouvez passer à des fonctions qui effectuent des opérations sur l’UART.
Pour configurer les paramètres, appelez la fonction UART_InitConfig Function pour initialiser le struct UART_Config Struct . Après avoir initialisé le struct UART_Config, vous pouvez modifier les paramètres UART dans le struct.
Pour ouvrir l’UART et appliquer les paramètres, appelez la fonction UART_Open et 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 et d’é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 MT3620
Cette section décrit les options UART qui s’appliquent uniquement lors de l’exécution d’Azure Sphere sur un MT3620.
Les spécifications UART pour le MT3620 sont répertoriées dans État de prise en charge mt3620. Le guide de l’utilisateur de la carte de développement MT3620 décrit la disposition des broches et les fonctions de câblage.
Le dossier HardwareDefinitions du répertoire d’installation du Kit de développement logiciel (SDK) Microsoft Azure Sphere contient les définitions des 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 master pour mt3620, MT3620 RDB, ainsi que d’autres matériels MT3620. L’emplacement par défaut du dossier HardwareDefinitions est C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions
sur Windows et /opt/azurespheresdk/HardwareDefinitions
sur Linux.
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 :
- Lorsque vous configurez la carte de développement MT3620, vous pouvez utiliser n’importe quel port ISU comme interface UART. Lorsque vous utilisez un port ISU comme interface UART, vous ne pouvez pas utiliser le même port qu’une interface I2C ou SPI.
- Débit en bauds : 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 11520000, 15000000 et 20000000.
- Bit de données : 5, 6, 7 et 8.
- Bit d’arrêt : 1 et 2.
- Parité : impair, pair et aucun.
- 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.
Lors de l’utilisation d’un UART dans une application de haut niveau, seules 4 des 5 broches de blocs périphériques ISU disponibles sont utilisées. La broche inutilisée peut être utilisée comme broche GPIO par la même application de haut niveau. Consultez Périphériques d’E/ S pour obtenir la liste des broches ISU inutilisées qui peuvent être réutilisées pour GPIO.