Microcontrôleurs Iset de Nabeul Mr Nizar TOUJENI 65 Leçon N°7 COMMUNICATION SER
Microcontrôleurs Iset de Nabeul Mr Nizar TOUJENI 65 Leçon N°7 COMMUNICATION SERIE I- INTRODUCTION Les nouveaux microcontrôleurs exigent dans certains cas, la mise en œuvre des communications en série pour établir le transport de données avec d'autres appareils tels que des mémoires, des capteurs, des ordinateurs, et même d'autres microcontrôleurs. Afin d'effectuer des communications série, certains microcontrôleurs ont des modules série comme I²C, SPI, USART et USB. Chacun de ces formats de communication permettent la communication avec les différents modules. Le module I²C est idéal pour communiquer avec des mémoires série comme 24LC64, 24LC128, 24LC512, etc. Le protocole SPI permet la communication avec les périphériques de stockage de masse tels que la mémoire SD. Le module USART est l'un des plus utilisés ; Ce module permet la communication avec des dispositifs tels que des capteurs, la transmission et la réception des modules XBee, ordinateurs personnels, les modules GPS, et d'autres microcontrôleurs. Le module USB, construit autour de quelques microcontrôleurs comme le 18F2550 et 18F4550, permet la communication avec un ordinateur personnel par l'intermédiaire d'un port USB. II- LE MODULE USART Le USART est un module de communication série standard, de manière asynchrone. Il nécessite un seul support de transmission pour envoyer des informations et ne nécessite pas un moyen pour l'horloge. Le signal d'horloge ou de synchronisation doit prendre, indépendamment l'un de chacun des éléments, l'émetteur et le récepteur. Un autre avantage de ce module est qu'il a une communication full-duplex, ce qui signifie qu'il peut transmettre et recevoir des informations en même temps. A cet effet, deux moyens de transmission dédiés sont utilisés, un pour émettre et un pour recevoir. Remarque : en général, une communication comprend 4 phases : - Etablissement d’un circuit entre 2 correspondants - Initialisation de la transmission - Transmission proprement dite - Libération de la transmission La transmission étant du type asynchrone (pas d'horloge commune entre l'émetteur et le récepteur), des bits supplémentaires sont indispensables au fonctionnement : bit de début de mot (start), bit(s) de fin de mot (stop). Ce protocole est utilisé par les ordinateurs personnels et d'autres dispositifs, et est connu comme RS232, pour le cas spécifique des niveaux de tension sont différents au microcontrôleur. Le protocole RS232 représente la valeur d'un 0 logique à une tension de +12 volts, et la valeur d'un 1 logique à -12 Microcontrôleurs Iset de Nabeul Mr Nizar TOUJENI 66 volts. Les ordinateurs personnels et autres appareils qui mettent en œuvre le port RS232 à l'aide d'un connecteur DB9, qui dispose de 9 broches, qui sont identifiés dans la figure suivante : Figure 1 Pin Nom 1 DCD 2 RXD 3 TXD 4 DTR 5 GND 6 DSR 7 RTS 8 CTS 9 Non utilisé Aux fins de connexions de communication asynchrones doivent être configurés comme suit : Figure 2 Pour établir et joindre une communication PIC avec un dispositif RS232, il faut utiliser un convertisseur connu comme MAX232. La mise en œuvre de cela, il doit être comme indiqué dans la figure suivante : Microcontrôleurs Iset de Nabeul Mr Nizar TOUJENI 67 Figure 3 Pour utiliser ce protocole de communication du mikroC PRO, la bibliothèque UART est disponible dans les librairies et la palette a les fonctions suivantes pour l'utilisation : UART1_Init (const unsigned long BAUD_RATE) : cette fonction initialise le module USART et établit la vitesse de communication défini dans le paramètre : BAUD_RATE. char UART1_Data_Ready( ) : cette fonction détermine s'il y a des données prêtes à être lues à l'arrivée du module de mémoire tampon, la fonction renvoie 1 si les données peuvent être lues, sinon pas de nouvelles données dans la mémoire tampon. char UART1_Tx_Idle ( ) : cette fonction permet de définir si le tampon de transmission est occupé à envoyer des données, car il renvoie 1 si le tampon est occupé, ou 0 si le module est disponible pour envoyer de nouvelles données. char UART1_Read ( ) : cette fonction retourne la valeur de la mémoire tampon d'entrée qui est utilisé pour lire une entrée. UART1_Read_Text (char *Sortie, char *x, char y) : cette fonction lit une chaine de caractères. Microcontrôleurs Iset de Nabeul Mr Nizar TOUJENI 68 UART1_Write (omble de _data) : transmet les données saisies dans le paramètre d'entrée pour le USART. UART1_Write_Text (char *UART_text) : transmet une chaîne de texte terminée par le caractère nul ou une chaîne de texte nulle est fournie par le paramètre UART_text. Pour l'exemple suivant doit être mis en œuvre dans ISIS, le circuit avec les appareils suivants : 16F877A PIC et l'instrument virtuel : TERMINAL VIRTUEL. Avec ces deux éléments, le circuit suivant est construit: Figure 4 L'outil terminal virtuel, est une communication série de simulateur et dispose d'un outil similaire pour le comportement de Windows HyperTerminal. Cet outil vous permet de modifier les fonctions de communication telles que: le nombre de bits de données, la vitesse de transmission, le nombre de bits d'arrêt, entre autres. Cependant, l'instrument est configuré avec un taux de défaut de 9600 bps, et prêt à utiliser avec des fonctionnalités PIC USART. Pour vérifier le fonctionnement de ce module, vous pouvez compiler et simuler l'exemple suivant: void main( void ) { //Declaración de variables. char DATO; UART1_Init(9600); //Inicio del módulo USART. //Se transmite el texto: de bienvenida. UART1_Write_Text("Bienvenido al simulador:"); Microcontrôleurs Iset de Nabeul Mr Nizar TOUJENI 69 UART1_Write(13); //Se transmite el ASCII del ENTER. UART1_Write(10); //Se transmite el ASCII del retroceso del carro. //Se trasmite el texto de pulsar tecla. UART1_Write_Text("Pulse una tecla!..."); UART1_Write(13); //Se transmite el ASCII del ENTER. UART1_Write(10); //Se transmite el ASCII del retroceso del carro. while(1)//Bucle infinito. { //La sentencia if evalúa si un dato está listo para leer. if(UART1_Data_Ready()==1) { //Se lee el DATO del bufer. DATO = UART1_Read(); //Se imprime el texto de realimentación. UART1_Write_Text("Usted pulso la tecla: "); UART1_Write(DATO); //Se transmite el DATO recibido. UART1_Write(13); //Se transmite el ASCII del ENTER. UART1_Write(10); //Se transmite el ASCII del retroceso del carro. } } } Pendant la simulation, l'utilisateur peut envoyer des données à travers le terminal virtuel et voir les commentaires que le PIC, il émet. III- LE MODULE I²C SERIE Certains microcontrôleurs ont ce module et de la même manière MikroC PRO dispose d’une bibliothèque pour une utilisation facile de cette bibliothèque de protocole. Cette bibliothèque a 7 fonctions principales pour le fonctionnement du module. I2C1_Init (const unsigned long clock) : initialise broches de communication dans le PIC et ajuste la vitesse de communication. unsigned short I2C1_Start (void) : cette fonction génère la condition de démarrage et renvoie 0 si aucune erreur dans la transmission, une autre forme retourne une valeur autre que 0. void I2C1_Repeated_Start (void) : cette fonction génère début de répétition. unsigned short I2C1_Is_Idle (void) : cette fonction est utilisée pour déterminer si le bus de données est occupé, et renvoie 1 si le bus est disponible ou retourne 0 si elle est occupée. Microcontrôleurs Iset de Nabeul Mr Nizar TOUJENI 70 unsigned short I2C1_Rd (unsigned short ack) : cette fonction lit des données de bus de données et envoie la confirmation ack pour le bus. Si ack=1 la confirmation est positif et si ack=0 la confirmation est négatif ou NO ACK. unsigned short I2C1_Wr (unsigned short data) : cette fonction envoie les données via le bus de données et renvoie 0 si la transmission a réussi, ou quelque chose autre que 0 si des erreurs se produisent. void I2C1_Stop (void) : génère la condition finale dans le bus de communication. Figure 5 Le programme de simulation correspondant de code est le suivant : void main( void ) { unsigned short DIRECTION; unsigned short DATA; //Configuration des ports. ADCON1 = 6; TRISE = 7; TRISB = 0; PORTB = 0; Microcontrôleurs Iset de Nabeul Mr Nizar TOUJENI 71 I2C1_Init(100000); while(1) { DIRECTION = (~PORTA)&0x0F; I2C1_Start(); I2C1_Wr(0b10100000); I2C1_Wr(DIRECTION); I2C1_Repeated_Start(); I2C1_Wr(0b10100001); DATO=I2C1_Rd(0); I2C1_Stop(); PORTB = DATA; delay_ms(100); if( Button( &PORTA, 4, 50, 0) ) { DATA = ~PORTD; I2C1_Start(); I2C1_Wr(0b10100000); I2C1_Wr(DIRECTION); I2C1_Wr(DATA); I2C1_Stop(); delay_ms(50); } } } Après l'édition et la simulation dans ISIS, vous pouvez voir les valeurs spécifiées dans la direction de l'ADRESSE DIP-SWITCH sur les LEDs. Lorsque le bouton REC est pressé, la valeur du DIP- SWITCH, DATA est enregistré dans le sens du courant. Broches d'horloge et de données pour ce PIC, sont déjà prédéfinis par le fabricant pour le RC3 broches et RC4, respectivement. uploads/Management/ chapitre-7-communication-serie.pdf
Documents similaires










-
46
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Sep 20, 2022
- Catégorie Management
- Langue French
- Taille du fichier 0.1661MB