Upload
others
View
2
Download
1
Embed Size (px)
Citation preview
Informatiqueembarquee 4/16
J.-M Friedt
Informatique embarquee 4/16
J.-M Friedt
FEMTO-ST/departement temps-frequence
transparents a jmfriedt.free.fr
11 janvier 2018
1 / 14
Informatiqueembarquee 4/16
J.-M Friedt Les bus de communications
Communication serielle des donnees : plus rapide et moins couteux(SATA v.s PATA)
• Notions de bus synchrones (partage de l’horloge) et asynchrone(chaque interlocuteur a sa propre horloge).
• synchrone est generalement plus rapide mais necessite un signaladditionnel pour l’horloge (sauf codage Manchester – ethernet)
• asynchrone necessite l’accord prealable de tous les interlocuteurs surle debit de communication (baudrate)
• tres utilise comme bus local entre un microcontroleur et sesperipheriques (peu de fils = reduction des couts de cablage)
bus
C1 C2 C3 C4
C1 C2
2 / 14
Informatiqueembarquee 4/16
J.-M Friedt Les protocoles synchrones
SCK CPOL=0CPOL=1
SS
Cycle # 1 2 3 4 5 6 7 8
MISO 1 2 3 4 5 6 7 8 zz
1 2 3 4 5 6 7 8 zzMOSICPHA=0
Cycle # 2 3 4 5 6 7 81
MISO 2 3 4 5 6 7 8 zz 1
MOSI 2 3 4 5 6 7 8 zz 1
CPHA=1
Figure – Chronogramme SPI(http://en.wikipedia.org/wiki/Image:SPI_timing_diagram.svg).Protocole synchrone : l’horloge est explicitement distribuee sur le bus.
• bus asymetrique : maıtre 6= esclave, CS# designe le(s)destinataire(s)
• version 2 fils d’un protocole synchrone : I2C (bus de donnees estbidirectionnel).
3 / 14
Informatiqueembarquee 4/16
J.-M Friedt Protocole synchrone (I2C, SPI)Acces materiel : degres de liberte (etat au repos de l’horloge, frontd’echantillonnage, ordre des bitsImpose dans I2C, libre dans SPI (CPHA, CPOL)SPI selectionne par CS#, I2C par l’adresse du destinataire (imposee parle materiel). I2C : MSB first 6= SPI : LSB ou MSB first. I2C @ ?
4 / 14
Informatiqueembarquee 4/16
J.-M Friedt Protocole synchrone (I2C, SPI)Acces materiel : degres de liberte (etat au repos de l’horloge, frontd’echantillonnage, ordre des bitsImpose dans I2C, libre dans SPI (CPHA, CPOL)SPI selectionne par CS#, I2C par l’adresse du destinataire (imposee parle materiel). I2C : MSB first 6= SPI : LSB ou MSB first. I2C @ ?
S 1 0 1 0 0 0 1 0 0
A 2W#
DATA
CLOCK
5 / 14
Informatiqueembarquee 4/16
J.-M Friedt Attention aux bibliotheques
Exemple de code Arduino a [1]#i n c l u d e "Wire.h"
#d e f i n e PCF8563address 0 x51[ . . . ]
v o i d setPCF8563 ( )// t h i s s e t s the t ime and date to the →
↪→PCF8563{
Wire . b e g i n T r a n s m i s s i o n ( PCF8563address ) ;Wire . w r i t e (0 x02 ) ;
[ . . . ]
Datasheet : adresses 0xA2, 0xA3mais appel ai n t 8 t I 2 C w r i t e ( c o n s t u i n t 8 t a d d r e s s , →
↪→ u i n t 8 t ∗data , u i n t 8 t n ){ i n t 8 t d ;
i n t i ;d = I 2 C s t a r t ( ) ;i f ( ( d != 0 x08 ) && ( d != 0 x10 ) ){
I 2 C s t o p ( ) ; r e t u r n d ;}TWDR=a d d r e s s ; // send the s l a v e add r e s si f ( ( d=I 2 C a c t i o n ( 0 ) ) != 0 x18 ){
I 2 C s t o p ( ) ; r e t u r n d ;}f o r ( i =0; i<n ; i ++){
TWDR=(∗data++) ;i f ( ( d=I 2 C a c t i o n ( 0 ) ) != 0 x28 ){
I 2 C s t o p ( ) ; r e t u r n d ;}}I 2 C s t o p ( ) ;r e t u r n 0 ;
}
[ . . . ]#d e f i n e PCF8563 0xA2
I 2 C w r i t e ( PCF8563 , ( u i n t 8 t ∗) t ime , 8 ) ;
pour communiquer (0xA2 6=0x51 !)
[1] http://tronixstuff.com/2013/08/13/
tutorial-arduino-and-pcf8563-real-time-clock-ic/
6 / 14
Informatiqueembarquee 4/16
J.-M Friedt Attention aux bibliotheques
Datasheet : adresses 0xA2, 0xA3
1 0x51=0xA2 >>1
2 methode Wire de Arduino [1]appelle beginTransmission
qui appelletwi writeTo(txAddress
...)
3 twi writeTo se trouve (parexemple) a [2] :
t w i s l a r w = TW WRITE ;t w i s l a r w |= a d d r e s s << 1 ;
⇒ bibliotheque appelee parArduino fait un decallage etajoute 1 si lecture [3]
Opensource : capacite a suivre le cheminement des traitements
[1] github.com/esp8266/Arduino/blob/master/libraries/Wire/Wire.cpp
[2] www.libelium.com/v11-files/api/waspmote/d5/d8c/twi_8c_source.html
[3] robotika.yweb.sk/skola/!Diplomovka/avr498/avr498/doc/twi__lib_8h.html
dit que TWI READ vaut 1 et TWI WRITE vaut 0
7 / 14
Informatiqueembarquee 4/16
J.-M Friedt Emulation logicielle du protocolesynchrone (SPI)
Pourquoi ?• implementer un mode non-supporte par le materiel (e.g.
9 bits/message)• manque de ressource materielle
Exercice : implementerl’envoi d’une com-mande et d’une donneea un ecran LCD Nokia
8 / 14
Informatiqueembarquee 4/16
J.-M Friedt Emulation logicielle du protocolesynchrone (SPI)
Envoi de commande/donnee a un ecran LCD Nokia
#d e f i n e c s l o PORTB &= ˜(1 << PORTB5)#d e f i n e c s h i PORTB |= (1 << PORTB5)
#d e f i n e m o s i h i PORTB |= (1 << PORTB7)#d e f i n e m o s i l o PORTB &= ˜(1 << PORTB7)#d e f i n e c k h i PORTC |= (1 << PORTC7)#d e f i n e c k l o PORTC &= ˜(1 << PORTC7)
v o i d a t t e n d ( ) {} // temps d ’ a t t en t e , sck
v o i d sendByte ( b o o l cmd , u8 data ){ i n t k ;
ck up ;c s l o ;i f (cmd==0) m o s i l o ; e l s e m o s i h i ;ck down ; a t t e n d ( ) ;ck up ; a t t e n d ( ) ;f o r ( k=7;k>=0;k−−){ i f ( ( ( data>>k )&0x01 ) !=0) m o s i h i ;
e l s e m o s i l o ;ck down ; a t t e n d ( ) ;ck up ; a t t e n d ( ) ;}
c s h i ;}
9 / 14
Informatiqueembarquee 4/16
J.-M Friedt Les protocoles asynchrones
t0 1T
ST
AR
T
1 0 0 0
2T 3T 4T 5T 6T 7T 8T
lsb msb
9T
ST
OP
1 0 01
T=1000/baud ms
Figure – Chronogramme RS232. Pour 1200 bauds, T = 833 µs. En sortie duMAX232, les niveaux sont symetriques (±12 V) et inverses. Protocoleasynchrone : T doit etre connu par les deux interlocuteurs.
RS232 : liaison point a point (2 interlocuteurs) 1
1. RS232 reste le mode privilegie pour initier une connexion avec un systemeembarque : Hack All The Things : 20 Devices in 45 Minutes, DefCon 22 (2014), ahttps://www.youtube.com/watch?v=h5PRvBpLuJs
10 / 14
Informatiqueembarquee 4/16
J.-M Friedt Les protocoles asynchrones
0 5000 10000 15000 20000 25000 30000 35000-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
time (us)
sig
nal (a
.u.)
Figure – Chronogramme RS232. Pour 1200 bauds, T = 833 µs. En sortie duMAX232, les niveaux sont symetriques (±12 V) et inverses. Protocoleasynchrone : T doit etre connu par les deux interlocuteurs.
RS232 : liaison point a point (2 interlocuteurs)11 / 14
Informatiqueembarquee 4/16
J.-M Friedt Les protocoles asynchrones
3000 4000 5000 6000 7000 8000 9000 10000-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
time (us)
sig
nal (a
.u.)
Figure – Chronogramme RS232. Pour 1200 bauds, T = 833 µs. En sortie duMAX232, les niveaux sont symetriques (±12 V) et inverses. Protocoleasynchrone : T doit etre connu par les deux interlocuteurs.
RS232 : liaison point a point (2 interlocuteurs)12 / 14
Informatiqueembarquee 4/16
J.-M Friedt Les protocoles asynchrones
S11110110s S01010000sS00110110sS00110110sS10100110sS00010010s
stop
MS
B
LS
BS
tart
H e l l o \n
−1
−0.5
0
0.5
1
8000 9000 10000 11000 12000 13000 14000 15000 16000 17000
sig
nal
(a.
u.)
time (us)
Figure – Chronogramme RS232. Pour 1200 bauds, T = 833 µs. En sortie duMAX232, les niveaux sont symetriques (±12 V) et inverses. Protocoleasynchrone : T doit etre connu par les deux interlocuteurs.
RS232 : liaison point a point (2 interlocuteurs)13 / 14
Informatiqueembarquee 4/16
J.-M Friedt Bus locaux sous GNU/Linux
lm-sensors donne acces aux informations du processeur et de la cartemere
$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +50.4C (crit = +110.0C)
temp2: +50.4C (crit = +130.0C)
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +52.0C (high = +87.0C, crit = +105.0C)
Core 0: +49.0C (high = +87.0C, crit = +105.0C)
Core 1: +49.0C (high = +87.0C, crit = +105.0C)
Demonstration avec le mise en œuvre du LM74 sur Atmega32U4.
14 / 14