Sunteți pe pagina 1din 31

Chapitre 3

Les interfaces srie

Introduction

Les interfaces srie permettent la transmission dinformation en


utilisant une seule ligne (ou 2 si un ajoute ventuellement une ligne
dhorloge)
Linformation (un mot de 8, 16 ou 32 bits par exemple) est
dcompose en bits. Les bits sont ensuite transmis un un sur la
ligne
de transmission.
La vitesse
de transmission de lmetteur doit correspondre la vitesse
dchantillonage du rcepteur. Pour cela deux types de transmission
srie existent
La transmission srie synchrone
Un signal dhorloge commun est partag entre lmeteur et le rcepteur
La transmission srie asynchrone
Lmeteur et le rcepteur disposent chacun de leurs propres horloge
Il existe plusieurs interfaces de communication srie, les plus connues
sont :
UART
USB
I2C
SPI

Linterface UART
(Universal Asynchronous Receiver Transmitter)
LUART est une interface classique de communication srie en mode
asynchrone
Appele aussi ACIA (Asynchronous Communication Interface
Adapter)

LUART reoit du processeur une donne parallle sur 8 bits, la


srialise et lenvoie bit par bit sur la ligne TxD
Elle reoit sur la ligne RxD un ensemble de bits en srie, reconstitue
la donne sur 8 bits et la fournit au processeur via le bus
La transmission est asynchrone, les horloges internes de lmeteur
et du rcepteur doivent tre donc pralablement rgle la mme
cadence
Les vitesses de transmission les plus utilises sont:
300 bps 2 400 bps
19 200 bps 57 600 bps
1 200 bps 9 600 bps
38 400 bps 115 200 bps

Processeur

D0
D1

Transmission

D7

Rception

TxD
RxD

Milieu extrieur

Protocole de linterface UART

communication entre deux quipements via linterface UART doit obir un pro
1. Au repos, la ligne de transmission (TXD ou RXD) est au niveau
logique 1
2. Le dbut de communication doit toujours commencer par la mise
0 de la ligne de communication pour la dure dun bit. On appelle
ce bit, le bit Start
3. Les bits de loctet transmettre sont ensuite envoys bit par bit
4. Quad tous les bits de loctet sont envoys , un bit de parit est
eventuellement ajout
5. La transmission est enfin termine par la mise 1 de la ligne de
LUART
ncessitepour
donclaune
surcharge.
8 bits
on ce
aura
transmission
dure
dun bit Pour
2 bits.
Onutiles
appelle
bit,donc
bit
besoin
denvoyer jusqu 11 bits (12 avec le bit de parit)
Stop

Contrle de flux UART

Mme si deux UARTs sont synchronises par une mme frquence dhorloge,
(donc, elles fonctionnent la mme vitesse), ils se peut que le dispositif sousjacent ne soit pas prt pour rcuprer un caractre ds son arrive
Un nouveau caractre peut donc arriver et craser un ancien caractre avant
quil soit lu par le processeur
Pour pallier cette situation, on utilise plusieurs solutions de contrle de flux

Contrle de flux matriel


Deux lignes physiques sont ajoutes lUART
RTS : Request To Send: lmetteur informe le rcepteur grce cette ligne quil
souhaite mettre et attends la confirmation du rcepteur avant de commencer
lui
envoyer
le To
caractre
CTS
: Clear
Send: Le rcepteur informe lmetteur quil est prt recevoir. Ce
dernier envoi le caractre

Contrle de flux logiciel (Xon, Xoff)


Le contrle de flux est gr par logiciel grce des commandes envoyes sur le
srie lui-mme
Lorsque le rcepteur ne peut plus recevoir les donnes il envoie XOFF (0x11)
lmetteur (lui demandant un arrt de transmission)
Ds que l' est a nouveau prt, il envoie XON (0x13)

Utilisation dune file dattente


LUART dispose dune mmoire interne permettant de sauvegarder
temporairement les caractres reus avant quils soient lus par le processeur

Interconnexion dquipements en
liaison srie
Liaison 3 fils
Une liaison srie utilise au minimum trois fils:
Un fil pour la transmission (TxD)
Un fil pour la rception (RxD)
Un fil de masse (GND)

D0
D1

Transmission

D7

Rception
Equipement 1

TxD

TxD

RxD

RxD

GND

GND

Transmission
Rception
Equipement 2

Pas de contrle de flux matriel


Il est possible dutiliser le contrle de flux logiciel

D0
D1

D7

Interconnexion dquipements en
liaison srie
Liaison 5 fils
En plus des trois fils (TxD, RxD, GND), on utilise deux autres fils
RTS et CTS pour assurer le contrle de flux

D0
D1

D7

Transmission
Rception
Equipement 1

RTS

RTS

CTS
TxD

CTS
TxD

RxD

RxD

GND

GND

Transmission

D0
D1

Rception

D7

Equipement 2

Quand un quipement peut recevoir un caractre, il met sa ligne


RTS 1
Ds que son buffer est plein, il remet la ligne RTS 0
Lmetteur lit ltat de la ligne CTS avant dmettre, si elle est
1, il peut mettre le caractre, si elle est 0, il temporise

Interconnexion dquipements en
liaison srie
Liaison 9 fils
Cette liaison est spcifique la gestion dun modem pilot par un
quipement terminal (ordinateur, routeur, ..etc)
4 nouveaux fils sont ajouts:
DTR (Data Terminal Ready) : lquipement est prt mettre
DSR(Data Send Ready): lquipement est prt recevoir
RI(Ring Indicator) : le modem signale lquipement terminal
larrive dun appel tlphonique
DCD(Data Carrier Detect) : le modem signale lquipement
terminal, la prsence de donne sur la ligne de transmission

Transmission
D0
D1

D7

Rception

DCD
RI
DTR

DCD
RI
DTR

DSR
RTS

DSR
RTS

CTS
TxD

CTS
TxD

RxD

RxD

GND

GND

ETTD (ordinateur)

Transmission
D0
D1

D7

Rception

ETCD (Modem)

La norme RS232
Pour communiquer sur la liaison srie, deux quipements doivent
utiliser des connecteurs standards et des niveaux logiques identiques
(0 0 volts, 1 5 volts par exemple)
Toutefois, les quipements diffrents utilisent des niveaux logiques
diffrents (1 5v en TTL et 2,5 v en CMOS)
La norme RS-232 permet de standardiser les niveaux logiques en
les transformant grce des circuits transcodeurs spcifiques (0
-12v,
1+12V)
La norme
dfinit galement les caractristiques du connecteur
utiliser et son brochage

Se connecter une UART sur un


ordinateur
Utiliser un mulateur de terminal
Hyperterminal sous Windows
Minicom sous linux
Putty, etc
Dfinir les paramtres de communication
Taille dun caractre (5, 7, ou 8 bits)
Vitesse de transmission
Bit de parit (oui ou non, pair ou impair si oui)
Longueur du bit stop (1, 1.5, ou 2 bits)
Contrle de flux (sans, xon/xoff, ou matriel)
Lancer la connexion
Exercice
Se connecter en mode terminal au systme dexploitation
embarqu sur la carte phycore LPC3250 en utilisant les
paramtres
suivants
Taille
de caractres
sur 8 bits
Vitesse de 115200 bps
Pas de bit de parit
1 bit stop
Sans contrle de flux

UARTs de la LPC3250

La LPC 3250 dispose en totalit de 7 modules UARTs (UART1 UART7)


4 UARTs (UART3, UART4, UART 5 et UART6) fonctionnent selon la
norme standard INS16Cx50.
3 UARTs (UART1, UART2, et UART7) implmentent uniquement un
sous-ensemble des fonctionnalits standards)
LUART3 dispose de support matriel supplmentaires permettant le
contrle de flux et de piloter un MODEM(RTS, CTS, DCD, etc)
LUART6 dispose de support matriel supplmentaires pour la norme
IRDA permettant de raliser des transmissions infrarouge
Ce chapitre est consacr aux 4 UARTs standards (UART3, UART4, UART
5 et UART6)

Caractristiques gnrales
Chaque UART dispose dune file dattente de 64 octets en mission
et en rception permettant de sauvegarder temporairement les
donnes
envoyer
ou dun
recevoir

ChaqueUART
dispose
mcanisme permettant de gnrer la
frquence denvoie et de rception
Les UARTs supportent les frquences 2400, 4800, 9600, 19200,
38400, 57600, 115200, 230400 et 460800 bps (bits par seconde)
Les UARTs supportent le mode loopback permettant de renvoyer
automatiquement les donnes reues (trs utile pour le dbugage)

Chaque unit UARTn, (n: 3, 4, 5, 6) dispose de deux broches


Un_RX : broche rception en srie
Un_TX : broche dmission en srie

LUART3 dispose en plus des broches suivantes permettant de piloter un modem


U3_CTS, U3_RTS, U3_DSR, U3_DTR, U3_DCD, U3_RI

LUART6 quand elle, dispose des deux broches suivantes:


U6_IRRX : broche rception en srie pour liaison infrarouge
U6_IRTX : broche dmission en srie pour liaison infrarouge

Description fonctionnelle

Description fonctionnelle
Chaque UART dispose dun transmetteur et dun receveur
Le processeur fournit le caractre transmettre (sur 8 bits en gnral)
via le registre UnTHR (Transmitter Holding Register) n=3,4,5,6
Ce caractre est ensuite envoy vers la file dattente de transmission
Tx FIFO
Le registre dcalage Tx Shift Register prlve un caractre de la file
dattente et lenvoie bit par bit sur la ligne Un_TXD
La frquence de transmission est dtermine par le bloc clock control
and baud rate generation
La rception fonctionne de manire identique
Le registre dcalage Rx Shift Register rcupre les bits fournis par la
ligne Un_RX et reconstitue le caractre puis lenvoie la file dattente
des
reus
Rx FIFO
La caractres
file dattente
alimente
le registre UnRBR pour que le processeur
puisse rcuprer le caractre reu via ce registre

Description fonctionnelle

a gestion des transmissions est assure par les registre UnLCR, UnLSR et UnFCR
Le registre UnLCR (Line contrl register) permet de configurer les
diffrents paramtres de transmission (nombre de bits du caractre,
parit,
bit stop,
etc)(Line Status register) contient les diffrents bits

Le registre
UnLSR
dtats de la transmission (effectue avec succs, erreurs, etc)
Le registre UnFCR (FIFO control register) permet de rentrer les
diffrents paramtres pour la gestion des files dattente
Le bloc de gnration dinterruptions Interrupt Generation permet de
gnrer des interruptions au processeur en cas de prsence
dinformation
Le registre UnIER (Interrupt Enable Register) permet dautoriser les
inerruptions
Le registre UnIIR (Interrupt ID Register) permet didentifier la source
dinterruption

Les registres de configuration

Les UARTs disposent de deux groupes de registres de configuration


Les registres de configuration primaires implants en groupes
partir dune adresse de base propre chaque UART
Les registres de configuration supplmentaires implants chacun
une adresse bien dtermine
Les registres de configuration primaires permettent daccder aux
donnes reues ou envoyer, de configurer les paramtres de
communication et des interruptions. Ils disposent aussi de registres
dtats.
Les registres de configuration supplmentaires permettent de
configurer les paramtres relatifs la vitesse de transmission

Les registres de configuration


Les registres de configuration primaires sont implants pour chaque
UART aux adresses suivantes:
UART
Adresse de base
3

0x4008 0000

0x4000 8000

0x4009 0000

0x4009 8000

Les registres de configuration supplmentaires sont implants aux


adresses suivantes:
Adresse
Nom
Description
0x4000
40D0

U3_CLK

Registre de contrle de lhorloge UART3

0x4000
40D4

U4_CLK

Registre de contrle de lhorloge UART4

0x4000
40D8

U5_CLK

Registre de contrle de lhorloge UART5

0x4000
40DC

U6_CLK

Registre de contrle de lhorloge UART6

0x4005

UART_CLKMO Registre de slection du mode de

Description des registres


primaires

Offset

Nom

Description

B7

B6

B5

B4

0x00
(DLAB
=0)

UnRB
R

Reciever
Buffer
Register

Contient le caractre reu (en lecture seule)

0x00
(DLAB
=0)

UnTH
R

Transmit
Holding
Register

Contient le caractre transmettre (en criture seule)

0x00
(DLAB
=1)

UnDL
L

Divisor Latch
Lower Byte

Spcifie le poids faible de la valeur du diviseur dhorloge

0x04
(DLAB
= 1)

UnDL
M

Divisor Latch
Upper Byte

Spcifie le poids fort de la valeur du diviseur dhorloge

0x04
(DLAB
= 0)

UnIER

Interrupt
Enable
Register

0x08

UnIIR

Interrupt Id
Register

Rservs

Copies des tats


des files dattente

B3

B2

Modem
Status IE

Rservs

RX Line
Status
IE

Interrupt ID

B1

THRE
IE

B0

RX
Data
Avail.
IE
Int.
pendin
g

0x0C
UnLC
Line Control
DLAB
Break
Parity
Even
Parity
Stop
Word Lenth
Notes
R
Register
bit
Control
Select
Parity
Enable
Bit
ccs aux adresses offset 0x00 et 0x04 est multiplex la fois par le bit DLAB ( bit 7 du registre UnLCR) et Select
de lopration
Select si DLAB = 1
La lecture de ladresse offset 0 permet de lire le registre UnRBR si DLAB = 0 ou le registre UnDLL
criture de ladresse offset 0 permet dcrire le registre UnTHR si DLAB = 0 ou le registre Un DLM si DLAB = 1
0x14
UnLS
Line status
RX
Trans.
Trans.
Brek
Framing
Parity
Overu Reciev
R
register
FIFO
empty
Holding interrup
Error
Error
n
Data
error
reg.
t
(FE)
(PE)
Error
Ready
empty
(BI)

Description des registres


primaires
Les registres UnTHR et UnRBR
Ces registres permettent de placer le caractre envoyer ou de
rcuprer le caractre reu
Placer un caractre dans UnTHR permet de le placer dans le registre
dcalage en vue de lenvoyer sur la ligne TX. (ou dans la file de
transmission
si cette
dernire
est utilise)
Lire le contenu
de UnRBR
permet
de rcupr le caractre reu de la
ligne RX (ou de la file dattente de rception si cette dernire est
utilise)
Ces deux registres figurent dans la mme adresse calcule partir
de ladresse de base de lUART en question plus un dplacement de
0x00.
0x4008 0000 pour lUART3
0x4000 8000 pour lUART4
0x4009 0000 pour lUART5
0x4009 8000 pour lUART6
Pour accder ces registres, il faut que le bit DLAB (bit 7 de UnLCR
soit mis au pralable 0)

Description des registres


Les registres UnDLL etprimaires
UnDLM

Ces registres font partie du systme gnrateur de baud (permettant


dobtenir la frquence denvoie et de rception des bits)
Concatns ensemble, UnDLM:UnDLL forment la valeur (sur 16 bits)
sur laquelle lhorloge fournie lUART est divise pour produire la
frquence
denvoie
souhaite
Cette valeur
est calcule
comme suit
Horloge_Entre
16 Horloge_envoi
UnDLM : UnDLL

Par exemple, si lhorloge dentre est de 13 MHZ (13 000 000 Hz),
et on veut obtenir un dbit de transmission de 9600 bps (bits par
seconde) on a alors :
UnDLM:UnDLL = 13 000 000/16*9600 = 84.63 quon peut arrondir 85
Cette valeur tant sur 8 bits, on place ainsi 85 dans le
registre UnDLL et 0 dans UnDLM
UnDLL est localis lofset 0x00 et UnDLM lofset 0x04
Par exemple, pour lUART5, U5DLL est ladresse 0x4000 8000 et
U5DLM est ladresse 0x4000 8004
Pour accder ces registres, il faut que le bit DLAB (bit 7 de UnLCR)
soit mis au pralable 1

Description des registres


Les registres UnIER etprimaires
UnIIR

Ces registres font partie du bloc de gestion des interruptions


Le registre UnIER permet dactiver ou de dsactiver lune ou
plusieurs des 4 sources interruption

Bit 0 : RDA Interrupt Enable : gnrer une interruption ds quune


donne est reue
Bit 1 : THRE Interrupt Enable : interruption ds que la donnes est
envoye
Bit 2 : Rx Line Status Interrupt Enable : interruption sur erreur de
Letransmission
registre UnIIR permet didentifier lorigine de linterruption
Bit 3 : Modem Status Interrupt Enable : interruption relative au
Bit 0 : Interrupt Pending : indique la prsence dune interruption
modem (uniquement pour UART3
Bit 3:1 : Interrupt Identification : raison de linterruption
000 : Modem Status
001 : THRE
110 et 011 : Rx Line Status
010 : RDA Interrupt
Le registre UnIER est accessible lofset 0x04 avec DLAB = 1
Le registre UnIIR est accessible lofset 0x08

Description des registres


Le registre UnLCR (Lineprimaires
control register)
Le registre UnLCR permet de configurer les paramtres de la
transmission en termes de taille des caractres, de la parit et de la
Bits 1-0:
longueur
dudterminent
bit Stop
la
Bits 5-4: Slection de la parit
longueur du caractre
00 : Parit impaire
00 : caractres de 5 bits
01 : Parit paire
01 : caractres de 6 bits
10 : bit de parit forc 1
10 : caractres de 7 bits
11 : bit de parit forc 0
11 : caractres de 8 bits
Bits 6: Contrle de rupture de
Bits 2: longueur du bit stop communication
0 : Sans contrle
0 : 1 bit
1 : avec contrle
1 : 2 bits
Bits 7: Bit daccs aux registres du
Bits 3: activation du Contrle diviseur de frquence
0 : Registres UnDLL et UnDLM,
de parit
0 : contrle de parit dsactiv inaccessibles, les registres UnRBR,
UnTHR et UnIER accessibles
1 : contrle de parit activ
1 : UnRBR, UnTHR et UnIER
inaccessibles, les registres UnDLM et
Le registre UnLCR est accessible UnDLL
ladresse
offset 0x0C
accessibles.

Description des registres


Le registre UnLSR (Line primaires
Status register)
Le registre UnLSR fournit les informations dtat de la transmission et
resseption
Bits 0: nouveau caractre
reu
0 : pas de nouveau car reu
1 : un nouveau car est reu
Bits 1: (OE) erreur
dcrasement : un nouveau
caractre est reu alors que la
file
est pleine
0 dattente
: pas derreur
1 : erreur
Bits 2: (PE) erreur de parit
0 : pas derreur
1 : erreur
Bits 3: (FE) erreur de
rupture de synchronisation
0 : pas derreur
1 : erreur

Bits 4: (BI) erreur de rupture


de communication
0 : pas derreur
1 : erreur
Bits 5: file dattente de
0 : la file contient
transmission
libre
des caractres
1 : la file contient des espaces
libres
Bits
6: Transmetteur libre
0 : le registre de transmission
contient un car
1 : le
deerron
transmission est
Bits
7: registre
caractre
libre
0 : le car reu (se trouvant dans
UnRBR) nest pas erron
1 : le car reu est erron

Le registre UnLSR est accessible ladresse offset 0x14

Description des registres


supplmentaires
Le registre de contrle de lhorloge
(Un_CLK)
Ce registre permet de slectionner lhorloge dentre lUART qui
peut tre soit lhorloge principale du bus AHB (HCLK) ou lhorloge des
priphriques

Il peut fournir(PERIPH_CLK)
galement un meilleur contrle de la frquence
dhorloge en fournissant un rapport X/Y avec X tant lhorloge dentre
et Ylhorloge
sortiede Y
Bits 0 7:devaleur
Bits 8 15: valeur de X
Bit 16: Choix de lhorloge
0 : lhorloge dentre est PERIPH_CLK
1 : lhorloge dentre est HCLK
Chaque UART est associe son propre registre avec une adresse
propre
U3_CLK : 0x4000 40D0
U4_CLK : 0x4000 40D4
U5_CLK: 0x4000 40D8
U6_CLK: 0x4000 40DC

Description des registres


supplmentaires
Le registre de slection du mode de fonctionnement de lhorloge
(UART_CLKMODE)
Ce registre slectionne le mode de fonctionnement de lhorloge et
fournis des informations dtat de cette dernire

Bits 5-4: Horloge de lUART 3


Bit 14: Etat global des horloges
00 : Horloge dsactive
0 : aucune UART da dhorloge en fonction
01 : Horloge active
1 : Au moins, une UART fonctionne
10 : Auto clock
11 : non utilise
Bits 22:16: Etat individuel des
Bits 7-6: Horloge de lUART 4xxxx1xx
horloges
: Horloge UART3 en fonction
Bits 9-8: Horloge de lUART 5xxx1xxx : Horloge UART4 en fonction
Bits 11-10: Horloge de lUARTxx1xxxx : Horloge UART5 en fonction
x1xxxxx : Horloge UART6 en fonction
6
Il existe un seul registre UART_CLKMODE localis ladresse
0x4005 4004

Comment utiliser les


UARTs
hoisir lhorloge dentre HCLK ou PERIPH_CLK laide du registre Un_CLK
2. Mettre le bit DLAB 1 (bit 7 de UnLCR) pour accder au gnrateur
de
baud le dbit de transmission (2400, 4800, 9600, etc) et calculer les
3. Choisir
valeurs mettre dans UnDLL et UnDLM (ventuellement X et Y) pour la
vitesse
de transmission
choisie
Placer les
valeurs Un DLM
et UnDLL (ventuellement X et Y) dans les
registres
4. Dfinir correspondants
les paramtres du format de transmission (le correspondant
doit avoir les mme paramtres
Taille du caractre (4, 6, 7, ou 8 bits)
Utiliser ou non la parit
Parit utilise (parie ou impaire)
taille du bit stop ( 1 ou 2 bits)
Fournir ces paramtres laide du registre UnLCR (en mettant le bit
DLAB 0 pour accder plus tard aux registres UnTHR et UnRBR
5. Activer lhorloge de lUART dans le registre UART_CLKMOD
6. Lancer la transmission
Envoyer un car en le mettant dans le registre UnTHR
Rcuprer le car reu en lisant le registre UnRBR
Diffrentes informations sur ltat denvoie et de rception
peuvent tre lues partir du registre UnLSR

Comment paramtrer le dbit de


transmission
Le dbit de transmission
est bas soit sur HCLK ou PERIPHCLK.

Par dfaut, HCLK est 208MHZ et PERIPHCLK est 13MHZ


Cette horloge peut tre pr-divise (multiplie par un rapport X/Y)
pour
affine fournie un gnrateur de baud qui fournit le dbit
Elletre
est ensuite
souhait (en reposant sur les registres UnDLM et UnDLL)

Pour calculer le dbit denvoie, on utilise la formule gnrale


1
suivante
: Source _ CLK X
Dbit
16

( DLM : DLL)

Il est possible de gnrer le dbit appropri en utilisant uniquement


le pr-diviseur ou uniquement le gnrateur de bauds
Utiliser uniquement le pr-diviseur (DLM=0, DLL = 1)
Dbit

Source _ CLK X

16
Y

Utiliser uniquement le gnrateur de baud rate (X = 1, Y = 1)


Dbit

Source _ CLK
1

16
( DLM : DLL)

Exemple de calcul de dbit


En utilisant uniquement le pr-diviseur (UnDLM = 0, UnDLL =
1)

Exemple de calcul de dbit


En utilisant uniquement le gnrateur de baud (X=1, Y = 1)

Exercice
Sur la carte Phycore LPC3250, lUART5 est relie une interface
RS232 permettant dinterfacer un ordinateur ou tout autre quipement
via la liaison srie RS232 (voir diapo suivante).
Nous souhaitons doter la carte dun systme de commande travers
un terminal (clavier-cran). On utilisera pour cela lmulateur de terminal
dun ordinateur (Hyperterminal de Windows, Putty, ou autre)
Ecrire un programme assembleur permettant deffectuer les tche
suivantes :
1. Afficher sur cran un message de bienvenu Bonjour tout le monde
par exemple
2. Revenir au dbut de la ligne suivante et afficher $>
3. Ensuite, faire en sorte que tout caractre crit par lutilisateur soit
affich sur cran (c-a-d renvoyer en mission tous les caractres reus)
4. Quand
tape sur
la touche
dentre (retour chariot), passer
Utilisezlutilisateur
les paramtres
suivants
:
une nouvelle
ligne sur
et afficher
Caractres
8 bits $>
1 bit stop
Vitesse de 57600 bps
N.B: Le code du retour chariot est 0x0D, le code de nouvelle ligne est
0x0A

Connecteur en dessous

S-ar putea să vă placă și