0% ont trouvé ce document utile (0 vote)
90 vues10 pages

Résumé Système Embarqué

Résumé du liaison série

Transféré par

firancemafutaweb
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
90 vues10 pages

Résumé Système Embarqué

Résumé du liaison série

Transféré par

firancemafutaweb
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

Résumé système embarqué

2/2

ChatGPT

Liaison RS232

Présentation

La liaison RS-232 est une norme pour une voie de communication série, souvent appelée port série. Sur
les systèmes d’exploitation MS DOS et Windows, les ports RS-232 sont nommés COM1, COM2, COM3,
etc. Ces liaisons sont couramment utilisées dans l'industrie pour connecter divers appareils
électroniques (automates, appareils de mesure, etc.) et pour exploiter certains réseaux sans fil comme
le Bluetooth, le GSM et le Wi-Fi.

Fonctionnement

L'hôte (ordinateur) sélectionne l'esclave (périphérique série) avec lequel il souhaite communiquer pour
établir une connexion entre les deux. Une fois la connexion établie, l'hôte ou l'esclave peut envoyer des
données à tout moment.

Signaux

La liaison RS-232 utilise deux signaux logiques :

RXD (RX pour le microcontrôleur) : Receive data

TXD (TX pour le microcontrôleur) : Transmit data

Support de transmission

Le support de transmission est le câble série ou tout autre câble muni de trois ou deux fils, avec une
longueur maximale de 15 mètres pour une vitesse de transmission de 9600 bits/seconde.
Topologie

La topologie utilisée par la liaison RS-232 est du type étoile. Tous les microcontrôleurs esclaves se
connectent au PC, qui est considéré comme le maître.

Codage

Le codage utilisé est le NRZ (no return to zero). Les niveaux de tension sont :

De -25 à -3 volts pour le niveau logique 1

De 3 à 25 volts pour le niveau logique 0

Avec l’UART, les niveaux de tension sont 0 et 5 volts respectivement pour les niveaux logiques 0 et 1.

Interface de ligne

L’interface de ligne utilisée est le circuit intégré MAX232, dont le rôle principal est de convertir le niveau
RS-232 en UART et vice versa. Les connexions sont les suivantes :

Rx est connecté à RiO

Tx est connecté à TiI

RiI est connecté à TXD

TiO est connecté à RXD

C1 et C2 sont connectés à des condensateurs électrolytiques de capacité 1-10 µF

Vs- est connecté à l'électrode négative du condensateur électrolytique de capacité 1-10 µF (l'autre
borne est connectée à VCC)

Vs+ est connecté à l'électrode positive du condensateur électrolytique de capacité 1-10 µF (l'autre borne
est connectée à la masse).

Couche Liaison

Mode d'accès
Le mode d'accès au bus RS-232 est le mode "selecting", c'est-à-dire que le maître (l'ordinateur) doit
sélectionner l'esclave (le microcontrôleur) avec lequel il souhaite communiquer.

Trame

La norme RS-232 utilise souvent des UART qui découpent le flux en trames d’un caractère constituées de
:

1 bit de départ : START

7 à 8 bits de données : DATA

1 bit de parité optionnel : PARITY

1 ou 2 bits d’arrêt : STOP

Le bit de départ a un niveau logique "0" tandis que le bit d’arrêt est de niveau logique "1". Le bit de
donnée de poids faible (LSB) est envoyé en premier, suivi des autres.

Liaison RS-232 en MikroPascal

Bibliothèques UART

UART (Universal Asynchronous Receiver Transmitter) est un module intégré dans de nombreux
microcontrôleurs. MikroPascal offre un travail confortable avec le mode asynchrone (full duplex). Vous
pouvez facilement communiquer avec n'importe quel appareil via le protocole RS-232 (par exemple un
PC).

Les différents signaux d'une liaison UART pour un microcontrôleur PIC sont :

TX, porté par la broche RC6 (pour PIC16F887 et PIC18F4550)

RX, porté par la broche RC7 (pour PIC16F887 et PIC18F4550)

Routines de la bibliothèque UART

UARTx_Init(a: longint) : Initialise le module UART à une vitesse de transfert a. La lettre x spécifie le
numéro du module UART (si plusieurs sont présents). Exemple :
pascal

Copier le code

UART1_Init(9600);

UARTx_Data_Ready(): byte : Vérifie si la mémoire tampon de réception est pleine. Retourne 1 si pleine,
sinon 0. Exemple :

pascal

Copier le code

var recu: byte;

if UART1_Data_Ready() = 1 then

recu := UART1_Read();

UARTx_Tx_Idle(): byte : Vérifie si la mémoire tampon d'émission est vide. Retourne 1 si vide, sinon 0.
Exemple :

pascal

Copier le code

if UART1_Tx_Idle() <> 0 then

begin

...

end;

UARTx_Read(): byte : Lit un octet via l’UART. Vérifier d'abord si la mémoire tampon de réception est
pleine. Exemple :

pascal

Copier le code

var recu: byte;


if UART1_Data_Ready() = 1 then

recu := UART1_Read();

UARTx_Read_Text(var a, b: array[255] of byte; c: byte) : Lit une chaîne de caractères délimitée par la
chaîne b ou ayant une longueur c, affectant le résultat à la variable a. Exemple :

pascal

Copier le code

UART1_Init(4800);

Delay_ms(100);

while TRUE do

begin

if UART1_Data_Ready() = 1 then

begin

UART1_Read_Text(output, 'OK', 10);

UART1_Write_Text(output);

end;

end;

UARTx_Write(a: byte) : Envoie l’octet a via l’UART. Vérifier d'abord si la mémoire tampon d'émission est
vide. Exemple :

pascal

Copier le code

var data: byte;

data := 0x1E;

UART1_Write(data);

UARTx_Write_Text(var a: string) : Envoie la chaîne de caractères a via UART. Exemple :


pascal

Copier le code

UART1_Init(4800);

Delay_ms(100);

while TRUE do

begin

if UART1_Data_Ready() = 1 then

begin

UART1_Read_Text(output, 'OK', 10);

UART1_Write_Text(output);

end;

end;

UART_Set_Active(read_ptr: ^Tread_ptr; write_ptr: ^Twrite_ptr; ready_ptr: ^Tready_ptr; tx_idle_ptr:


^Ttx_idle_ptr) : Active le module UART pour utiliser les routines de la bibliothèque en spécifiant les
adresses des fonctions et procédures. Exemple :

pascal

Copier le code

UART1_Init(9600);

UART2_Init(9600);

RS485Master_Init();

UART_Set_Active(@UART1_Read, @UART1_Write, @UART1_Data_Ready, @UART1_Tx_Idle);

RS485Master_Send(dat, 1, 160);

UART_Set_Active(@UART2_Read, @UART2_Write, @UART2_Data_Ready, @UART2_Tx_Idle);

RS485Master_Send(dat, 1, 160);
Exemple de système embarqué

Un système embarqué qui lit une chaîne provenant du PC et change l'état d'une LED connectée à une
broche du port B si la chaîne est "sammy", avant de la renvoyer via la liaison UART :

pascal

Copier le code

program exempleUART;

var recu: byte;

chaine, tmp: array[20] of char;

begin

osccon := 113;

ansel := 0;

anselh := 0;

c1on_bit := 0;

c2on_bit := 0;

trisb := 0;

portb := 0;

UART1_Init(9600);

Delay_ms(100);

UART1_Write_Text('PRET');

while (TRUE) do

begin

if (UART1_Data_Ready() <> 0) then

begin

uart1_read_text(chaine, #13#10, 20);

tmp := 'sammy';
if memcmp(@chaine, @tmp, 5) = 0 then portb := not portb;

uart1_write_text(chaine);

end;

end;

end.

Du côté PC, nous aurons l’interface suivante :

Avec les codes pour l’envoi (procedure Button2Click), la réception (procedure Timer1Timer), la
connexion (procedure Button1Click), et la déconnexion (procedure Button3Click) :

pascal

Copier le code

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

if OpenCom(2, 9600, NOPARITY, ONESTOPBIT, true) then

Color := clGreen;

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

sendbyte(StrToInt([Link]));

end;

procedure TForm2.Timer1Timer(Sender: TObject);


var x: string;

begin

x := readstring();

if x <> '' then [Link] := x;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

closecom(2);

Color := clRed;

end;

end.

Le tableau ci-dessous montre la correspondance entre les routines de la bibliothèque UART et son
équivalent dans la bibliothèque SLBCOM :

UART SLBCOM

Uart_init(a) OPENCOM(a, b, c, d, e): boolean

Uart_read() READBYTE (a: integer): string

Uart_write(a) SENDBYTE(a: integer; b: string)

Uart_read_text(a, b, c) READSTRING (a: integer): string

Uart_write_text(a) SENDSTRING(a: integer; b: string)

Avec le même principe, on peut exploiter les faisceaux hertziens en utilisant :

Le module HC-12 pour la liaison UART sans fil

Le module HC-06 pour la liaison Bluetooth

Le module DT-06 pour la liaison Wi-Fi


Le module SIM800 pour la liaison GSM

ChatGPT peut faire

Vous aimerez peut-être aussi