80
Périphériques BUS UART, I2C et SPI J. Lorandel & O. Romain - 2017 IUT – Université de Cergy-Pontoise

cours BUS Student - Cours | Projets Divers

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: cours BUS Student - Cours | Projets Divers

PériphériquesBUS

UART,I2CetSPI

J.Lorandel &O.Romain- 2017IUT– UniversitédeCergy-Pontoise

Page 2: cours BUS Student - Cours | Projets Divers

q Parte1:UARTqFonctionnalitéqRegistresdeconfigurationsqExempledeprogrammation

qPartie2:SPIqFonctionnalitéqRegistresdeconfigurationqExempledeprogrammation

qPartie3:I2CqFonctionnalitéqRegistresdeconfigurationqExempledeprogrammation

2

Sommaire

Page 3: cours BUS Student - Cours | Projets Divers

qAujourd’hui,ilexisteplusieursmodesdecommunication entreunprocesseuretun/despériphérique(s)

qGénéralement,unpériphériquecommuniqueavecleprocesseurviaunbussystème

qLepériphériquedecommunicationpeutêtre:qUneinterfacedecommunicationsérieqUneinterfacedecommunicationparallèle

qUneinterfacedecommunicationRF(BLE,WIFI,4G,etc.)

3

Modedecommunication

OptionalWIC

Nested Vector Interrupt

Controller(NVIC)

OptionalDebug

Access Port

ARM Cortex-M4 Microprocessor

Optional Memory protection unit

Bus matrix

Contrôleur UART Contrôleur RF

Optional FPU

Processor core

OptionalEmbedded

Trace Macrocell

Optional SerialWire Viewer

Contrôleur I2C

RS232 I2C Bluetooth

Page 4: cours BUS Student - Cours | Projets Divers

4

LesbusduSTM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

LacarteNucléo STM32possède :

q 3UARTS

q 3I2C

q 5SPI

Page 5: cours BUS Student - Cours | Projets Divers

qUnbusestunprotocole,composéderèglesquigouvernentlesmodesdecommunicationentresplusieursdispositifsconnectés.

qUnbusestcomposédesignauxdedonnéeetdecontrôle

qUnbuspeutêtreasynchroneousynchroneqDansunbussynchrone,l’horlogeest

distribuéeaveclesdonnéesqDansunbusasynchrone,l’horlogeest

récupéréeàtraverslesdonnéesenvoyées

qSuivantleprotocole,plusieursappareilspeuventêtreconnectéssurlemêmesupportphysique

q Busdeterrain

5

Modedecommunication

Page 6: cours BUS Student - Cours | Projets Divers

q ParallèleqDonnéesurNfilsen//

6

Modedecommunication

q SérieqDonnéesérialisée/désérialisée sur1fil

Processeur1

oupé

riphé

rique

1

Processeur2

oupé

riphé

rique

2

Processeur1

oupé

riphé

rique

1

Processeur2

oupé

riphé

rique

2

Page 7: cours BUS Student - Cours | Projets Divers

q Parallèle

qBusdeNfilsenparallèleqTouslessignauxdoiventarriverenmêmetemps(synchrone)

qLimitéparlenombred’IOduprocesseur

qSimplicitédemiseenœuvreqDébitimportantqCourtedistanceqTantàêtreabandonné

7

Modedecommunication

q Série

qBusde2à3filsenparallèleqSignauxasynchronesqPermetplusdebusenparallèleqDébitimportantqLonguedistanceqComplexitédépendduprotocoleqBeaucoupdenvx protocoles(USB3.0,USBC,Thunderbolt,etc.)

Page 8: cours BUS Student - Cours | Projets Divers

qLatransmissionsefait:qSoitensynchronismeavecunehorlogederéférencecommuneau2systèmesettransmisesurunelignesupplémentaire:qExemple:liaisonSSPduPIC(SynchronousSerialPort).

qSoitdefaconindépendantesanshorlogederéférence:danscecaslavitessedetransmissiondoitetreidentiquesurunememelignequirelielescircuitsd’émissionetderéception.Parcontreellen’estpasforcémentlamemesurles2lignes:qExempleliaisonUSARTduPIC(AsynchronousSynchronousReceiverTransmitter)

8

Horlogedetransmission

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 9: cours BUS Student - Cours | Projets Divers

q Pasdebusuniverselpourtouteslesconfigurationsdecommunication

q Commentchoisir?qLechoixdépend:

qDeladistanceentreleséquipements,q Lenombre d’équipements,qDusupportphysiquedetransmission,qDudébit,qDel’immunité aubruit,qDelaconsommation,qDuchoix demodulation,qDucoût,q Etc….

9

Busdecommunication

Page 10: cours BUS Student - Cours | Projets Divers

Busdecommunicationsérie

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Partie 1UART

Page 11: cours BUS Student - Cours | Projets Divers

qAladifférencedesliaisonsparallèleslatransmissionsérieconsisteàtransmettredesinformationsbinairesbitparbitsurunfilélectrique.

qLacommunicationpeutsefaireenmêmetempsdanslesdeuxsens:Full-duplex

11

Principedefonctionnement

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

TXD

GND

RXD

Emetteur Récepteur

Page 12: cours BUS Student - Cours | Projets Divers

qCommunicationHalf Duplex

qCommunicationFull-duplex

12

Principedefonctionnement

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

TXD

GND

Emetteur Récepteur

TXD

GND

RXD

Emetteur Récepteur

Page 13: cours BUS Student - Cours | Projets Divers

qUART– RS232:UniversalAsynchronusReceiver/TransmitterqDébit<1Mbit/sqProtocoleFull-DuplexqSynchronisationviadessignauxdehandshake:CTSetRTS

qLiaisonpointàpointqTramecomposéed’unbitdestart,de7bitsdedonnéeset1bitdestop

qLaparitéestoptionnelle:1bitsupplémentaire

q3fils:TX,RXetGNDqUART:niveauxentre0et5VqRS232:niveau1entre-25et-5vetniveau0entre5et25v

13

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 14: cours BUS Student - Cours | Projets Divers

qExempledeconfiguration

14

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 15: cours BUS Student - Cours | Projets Divers

qExempled’unetrame

15

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

01 0 0 0 0 1 1 0 0 0

Start D0 D1 D2 D3 D4 D5 D6 D7 Parité

?Périoded’unbit:débitbinaireenbaud

Stop

Page 16: cours BUS Student - Cours | Projets Divers

qVitessedetransmissionq1200,2400,4800,9600,14400,19200,28800,33600,56000,115000…

qLavitesse doit être identique pourl’émetteur etlerécepteur.Elleestprédéfinie parconfiguration

16

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 17: cours BUS Student - Cours | Projets Divers

EmetteurqLadonnéeestrempliedansunregistreàdécalageàchargementparallèle

qPrincipedelasérialisationqUnbitsupplémentaireestrajoutéepoursignerladonnée(bità1pourlesdonnéespaires)

RécepteurqLadonnéeluesurlaligneaprèsladétectiondubitdestart estrempliedansunregistreàdécalage,àchargementsérie

qLesdonnéessontdisponiblesensuiteenparallèle

qPrincipedelasérialisation

17

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 18: cours BUS Student - Cours | Projets Divers

qAdaptationdesniveaux

18

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 19: cours BUS Student - Cours | Projets Divers

qExemplesousMBED

19

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 20: cours BUS Student - Cours | Projets Divers

20

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 21: cours BUS Student - Cours | Projets Divers

qSTM32qPossède3USART

qUniversal SynchronousAsynchronous ReceiverTransmitter

qChaqueUSARTq9modesdecommunication

qLesplususuelssontlesmodesasynchroneetHWcontrolflow

21

UART– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 22: cours BUS Student - Cours | Projets Divers

qHWcontrolflow

qIRDA

22

UART– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

qModesynchrone

Page 23: cours BUS Student - Cours | Projets Divers

qRegistresduSTM32qUSART_BRR:baudrateqSR:Status RegisterqCR1,CR2,CR3etCR4:registresdecontrôle

23

UART– STM32

Page 24: cours BUS Student - Cours | Projets Divers

qRegistresduSTM32qUSART_BRR:baudrateqSR:Status RegisterqCR1,CR2,CR3etCR4:registresdecontrôle

qUSART_CR1qTailledesdonnéesqContrôledelaparité

qUSART_CR2qnbre debitdecontrôle

24

UART– STM32

Page 25: cours BUS Student - Cours | Projets Divers

qUSART_CR1qConfigurationdelatailledesdonnées

q7ou8bits

25

UART– STM32

Page 26: cours BUS Student - Cours | Projets Divers

qSourced’interruption

q9sources

26

UART– STM32– interrupt

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 27: cours BUS Student - Cours | Projets Divers

qVitessedetransmission

27

UART– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 28: cours BUS Student - Cours | Projets Divers

qProcédureàrespecterpourréaliserunetransmission1. Activerl’USARTenécrivantlebitUEà1dansleregistreUSART_CR12. DéfinirlatailledesdonnéesdansleregistreUSART_CR13. DéfinirlenombredebitdestopdansleregistreUSART_CR24. DéfinirlavitessedetransmissiondansleregistreUSART_BRR5. EcrirelesdonnéesàtransmettredansleregistreUSART_DR

28

UART– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 29: cours BUS Student - Cours | Projets Divers

qProcédureàrespecterpourréaliseruneréception1. Activerl’USARTenécrivantlebitUEà1dansleregistreUSART_CR12. DéfinirlatailledesdonnéesdansleregistreUSART_CR13. DéfinirlenombredebitdestopdansleregistreUSART_CR24. DéfinirlavitessedetransmissiondansleregistreUSART_BRR5. MettreleREà1dansleregistreUSART_CR1pourautoriserl’attented’unbitde

start

qQuanduncaractèrearrive1. LebitRXNEestà1pourindiquerd’unedonnéeestréceptionnée.2. LadonnéeestcontenuedansleregistreRDR3. Uneinterruptionestgénérée(RXNEIE)sielleaétéautoriséeaupréalable

29

UART– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 30: cours BUS Student - Cours | Projets Divers

Busdeterrain

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Partie 2I2C

Page 31: cours BUS Student - Cours | Projets Divers

qAladifférencedesliaisonsparallèleslatransmissionsérieconsisteàtransmettredesinformationsbinairesbitparbitsurunfilélectrique.

qLatransmissionsefait:qSoitensynchronismeavecunehorlogederéférencecommuneau2systèmesettransmisesurunelignesupplémentaire:qExemple:liaisonSSPduPIC(SynchronousSerialPort).

qSoitdefaconindépendantesanshorlogederéférence:danscecaslavitessedetransmissiondoitetreidentiquesurunememelignequirelielescircuitsd’émissionetderéception.Parcontreellen’estpasforcémentlamemesurles2lignes:qExempleliaisonUSARTduPIC(AsynchronousSynchronousReceiverTransmitter)

31

SérievsParallèle

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 32: cours BUS Student - Cours | Projets Divers

32

• LebusI2CouInter-IC-Communicationestunbusdecommunicationsériesynchrone.• Ilaétéconçupourréaliserdesliaisonssériessur2filsentreplusieurspériphériquesconnectéssurlebus.

• Philipsestàl’originedecebusen1992.• Iléquipedesappareilsélectroniquesdestinésaugrandpublic(appareilsTVetradio,systèmesaudioetradio,postestéléphoniques,systèmesélectriqueautomobile,appareilsélectroménager…)

LebusI2C

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 33: cours BUS Student - Cours | Projets Divers

33

• Les informations sont échangées au moyen de deux lignes :• SDA (Serial Data) bidirectionnel• SCL (Serial Clock) unidirectionnel

• Chaque circuit intégré possède une adresse matérielle unique qui le distingue des autres sur 7 bits : 128périphériques

• Chaque composant peut émettre ou recevoir des informations suivant sa fonction avec un débit standard de100Kb/s.

• Le bus I2C est un bus de communication série dit "2 fils" (2 wire BUS) mais en fait il est nécessaire de rajouter lamasse pour référencer les deux signaux d'information (SDA) et dʼhorloge (SCL).

• Cʼest un bus dit Maitre/esclave dans la mesure où tout échange sur le bus ne peut se faire quʼà lʼinitiative dumaitre. Les esclaves ne font quʼy répondre par un mécanisme dʼappel/réponse. Le maitre est propriétaire de SCL

LebusI2C

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 34: cours BUS Student - Cours | Projets Divers

34

• Ilexistecinqvitessesdetransmission :• Standardmode:100kbit/s,• Fastmode:400kbit/s,• Fast plusmode:1Mbit/s,• High-speedmode(Hs-mode) :jusqu’à 3,4Mbit/s,• Ultra-fast mode(UFm) :jusqu’à5Mbit/senmodeunidirectionnel

LebusI2C

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 35: cours BUS Student - Cours | Projets Divers

35

• Pour le bus I2C, le niveau électrique dominant est l'état basómasse commune

• Les deux lignes SDA et SCL sont donc maintenues au niveau haut tant que le bus est libre.

• Les étages de sortie des circuits connectés au bus doivent avoir un drain ouvert ou un collecteurouvert pour remplir la fonction « ET câblé ».

LebusI2C:accèsetniveaux

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 36: cours BUS Student - Cours | Projets Divers

36

• Le protocole de communication I2C est basé sur les changements d’état de SDA cadencé par SCL• Le bus I2C appartient à la catégorie des bus série. Les données sont ici envoyées bit par bit par grouped'octets sur la ligne SDA. On appelle ces groupes des trames.

• La ligne SCL fonctionne comme une horloge sérielle d'un registre à décalage. Lorsque que la ligne SCLest à l'état haut, les données de la ligne SDA doivent être stables.

• Lorsque la ligne SCL est à l'état bas, le circuit qui émet les données, peut modifier l'état de la ligne SDA.• la modification de SDA par le contrôleur ou l’esclave n’est possible que si SCL=0

LebusI2C:protocole

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 37: cours BUS Student - Cours | Projets Divers

37

• Le début et la fin d’un échange doivent respecter les conditions de start et les conditions de stop• Certaines combinaisons particulières de niveaux et de fronts des deux lignes déterminent la condition de départ

(START ) ou d'arrêt (STOP) de la transmission de la trame constituant le message.► Condition de départ : un front descendant sur SDA alors que SCL est à l’état haut.► Condition d’arrêt : un front montant sur SDA alors que SCL est à l’état haut.

• Le front montant de la ligne SCL sert généralement pour maintenir la donnée présente sur la ligne SDA cotérécepteur.

Remarque : les conditions de départ et d’arrêt sont toujours générées par le maître du bus.

LebusI2C:protocole

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 38: cours BUS Student - Cours | Projets Divers

38

• La trame est composée• La condition de start est suivie par l'adresse du composant appelé par le maître.

• Chaque composant possède une adresse unique codée sur sept bitsó 128 périphériques

• Le huitième bit (R/W) émis indique la direction du transfert

• R/W+0 = écritureómaitre écrit et l’esclave lit : une donnée est envoyée à un esclave

• R/W=1 = lectureómaitre lit et esclave écrit : l’esclave revoie une donnée au maitre.

• Seuls les esclaves qui auront reconnu leur adresse sur le bus participeront à la suite de l‘échange.La transmission se fait MSB first.

LebusI2C:protocole

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 39: cours BUS Student - Cours | Projets Divers

39

• Exemple d’échange entre un uC et deux mémoires I2C :• En général chaque boîtier possède 3 broches A2, A1 et A0 de sélection de l'adresse basse.

• Ces broches de sélection permettent de placer jusqu'à 8 boîtiers de fonction identique sur le bus. Dans l'exemple ci-dessous, l'EEPROM I2C 64kbits 24C64 possède l'adresse fixe 1010XXX.

• L'adresse complète est choisie en fonction des niveaux logiques placés sur les broches A2,A1,A0. En plaçant labroche A0 à 5V et les broches A1 et A2 à 0V, le boîtier répondra à l'adresse I2C 1010001.

LebusI2C:protocole

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 40: cours BUS Student - Cours | Projets Divers

40

• Comment sait on que le périphérique à reçu une information ? Mécanisme d’acquittement• Chaque octet de donnée transmis (contenant @I2C et R/W=) est suivi par l'émission d'un bit d’acquittement (ou

ACK).

• Le récepteur de l'échange doit procéder à l'acquittement pour indiquer à l'émetteur (qu'il soit maître ou esclave) quel'information a bien été reçue.

• C’est toujours le circuit (maître ou esclave) qui reçoit les données qui doit générer l’accuse réception de l'octetenvoyé. Dans le cas du premier octect d’@ I2C transmis c’est forcément l’esclave.

• Lorsque le 8ème coup d'horloge est passé (SCL repasse alors à 0) l’émetteur de la donnée relâche la ligne SDA(release à 1), le récepteur doit alors faire passer SDA à 0(c’est l’ACK) .

LebusI2C:protocole

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 41: cours BUS Student - Cours | Projets Divers

41

LebusI2C:formatdestrames

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

modèle de trame dans le cas dʼun esclave écouteur R/W=0

modèle de trame dans le cas dʼun esclave parleur R/W=1

Page 42: cours BUS Student - Cours | Projets Divers

42

• Pour certains périphériques évolués (mémoires EEPROM) il peut être nécessaire d’abord de dire àl’esclave quelle case mémoire on veut lire (envoie de l’adresse de la case à lire). L’esclave est alorsen mode lecture.

• Puis dans une deuxième partie de l’échange le maitre vient lire la valeur de la case mémoirepointée. Le maitre est alors écouteur.

• Le changement de mode s’opère en milieu de trame par une condition de Restart.

LebusI2C:protocole

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 43: cours BUS Student - Cours | Projets Divers

43

• Le nombre d’octet transmis dépend de la transaction.• Pas de limitation sur la durée• Echange continu d’information tant que l’échange procèdent à l’acquittement

• Exemple du cas de la lecture d’une plage mémoire dans un composant FLASH I2C

• Seul un non acquittement volontaire de la part du maitre ou une condition de STOP peut mettrefin à l’échange.

• Exemple : chronogramme d’échange type entre un maitre et un esclave. Au cours de cette trame2 octets de donnée sont envoyés à l’esclave avant que le maitre ne mette fin à la communication

LebusI2C:protocole

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 44: cours BUS Student - Cours | Projets Divers

44

• Pour analyser cette trame , il faut compter les coups d’horloge générés par le maitre.• SCL est en voie 2 et SDA en voie 1.• Ils correspondent à l’envoie d’une adresse et de trois octets de données vers l’esclave.

LebusI2C:exemple

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

SDA

SCL

Page 45: cours BUS Student - Cours | Projets Divers

45

• L’échange débute par la condition de START• Puis le maitre envoie l’octet d’adresse sur 7 bits + 1 bit R/W• Ainsi, on note que l’octet d’adresse (8 premier coups d’horloge de SCL) vaut 0x90 soit une @I2C=0x48codée sur 7 bits et un R/W=0. Le maitre est donc parleur pour cet échange.

LebusI2C:exemple

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

SDA

SCL

start

Page 46: cours BUS Student - Cours | Projets Divers

46

LebusI2C:exemple

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

• lʼacquittement Esclave > Maître sʼest bien passé => bit d’acquittement => on continue l’envoie des données• Le deuxième octet (M>E) vaut 0x40 : C est un octet de donnée. Lʼacquittement E>M sʼest bien passé.• Le troisième octet (M>E) de donnée vaut 0x00. Lʼacquittement E>M sʼest bien passé.• Le quatrième octet (M>E) de donnée vaut 0x0B. Lʼacquittement E>M sʼest bien passé .• Puis le maitre a mis fin à lʼéchange par une condition de stop.

start Acq data1 Acq AcqData2 Data3 Stop

SDA

SCL

Page 47: cours BUS Student - Cours | Projets Divers

qExemplesousMBED:lecturedelatempératuresurunLM75

47

I2C– exemple

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 48: cours BUS Student - Cours | Projets Divers

qExemplesousMBED:lecturedelatempératuresurunLM75

48

I2C– exemple

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 49: cours BUS Student - Cours | Projets Divers

49

• Principales caractéristiques :• Multimaster capability:thesameinterfacecanactasMasterorSlave• I2CMasterfeatures:

– Clockgeneration– StartandStopgeneration

• I2CSlavefeatures:– ProgrammableI2CAddressdetection– DualAddressingCapabilitytoacknowledge2slaveaddresses– Stopbitdetection

• Generationanddetectionof7-bit/10-bitaddressingandGeneralCall• Supportsdifferentcommunicationspeeds:

– StandardSpeed(upto100kHz)– FastSpeed(upto400kHz)– TheI2Cbusfrequencycanbeincreasedupto1MHz. Formoredetailsaboutthecompletesolution,pleasecontactyourlocalSTsalesrepresentative

LebusI2C:STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 50: cours BUS Student - Cours | Projets Divers

50

• Principales caractéristiques :• Statusflags:

– Transmitter/Receivermodeflag– End-of-Bytetransmissionflag– I2CbusyflagErrorflags:

• SMBus 2.0Compatibility:– 25ms clocklowtimeoutdelay– 10ms mastercumulativeclocklowextendtime– 25ms slavecumulativeclocklowextendtime– HardwarePECgeneration/verificationwithACKcontrol– AddressResolutionProtocol(ARP)supported

• PMBus Compatibility• Interruptvectors:

- 1Interruptforsuccessfuladdress/datacommunication- 1interruptforerrorcondition

LebusI2C:STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 51: cours BUS Student - Cours | Projets Divers

51

LebusI2C:STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 52: cours BUS Student - Cours | Projets Divers

52

LebusI2C:STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Séquence de transfert en transmission en mode master

Page 53: cours BUS Student - Cours | Projets Divers

53

LebusI2C:STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Sources d’interruption liées à une communication I2C

Page 54: cours BUS Student - Cours | Projets Divers

54

LebusI2C:STM32

Les registres de contrôles

Registres decontrôles

Registres d’adresse

Registre dedonnées

Registres d’état

Registres decontrôlesdeshorloges

Page 55: cours BUS Student - Cours | Projets Divers

LebusSPI

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Partie 3SerialPeripheralInterface

Page 56: cours BUS Student - Cours | Projets Divers

56

• Inventé parMotorola

• Bussynchrone

• Buspermettant letransfert desinformations de8bitsentreunmicro-controlleretunnombre depériphérique connecté sur lemême bus.

• Lebusest full-duplex:lesopérations d’écriture etdelecturesefontsimultanéement• Deslignes dubussont dédiées auxdonnées en lecture• Deslignes dubussont dédiées auxdonnées enécriture

• Pasdepartie dans lebusdédiée à l’adressage• Utilise lanotiondechipselectspourchoisir lepériphérique Mdans lesNpériphériques connectés

• Nécessite delalogique externe pourenchoisir 1• Sanslogique,tous lespériphériques récupèrent toutes lesinformations enmême temps

LebusSPI

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 57: cours BUS Student - Cours | Projets Divers

57

• Bussansmécanisme desurchargelogicielle/matérielle surlesconditionsdestartetdestop• Codage destrames :parexemple busI2C• Bitsdédiés :UART

• Taux detransmission(débit):250Kb/sjusqu’à 10Mb/s

• Fonctionnement :maîtreou esclave

• Principales utilisations:• Communicationvers unpériphérique dédié :

• Mémoire :RAM/EEPROM/FLASH• Capteur,actionneur• Convertisseur CANetCAN• Décodeur/Encodeur MP3

• Communicationentremicroprocesseurs

LebusSPI

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Page 58: cours BUS Student - Cours | Projets Divers

LebusSPI

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Mémoires

Extensiondebus

Afficheurs

CAN/CNA

58

Page 59: cours BUS Student - Cours | Projets Divers

DonnéesMaître->esclave

HorlogeMaître->esclaveRegistreàdécalage

DonnéesEsclave->maîtreRegistreEMISSION/RECEPTION

LebusSPI:principe

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise59

Page 60: cours BUS Student - Cours | Projets Divers

LebusSPI:signaux

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

• LebusSPIestunbusparallèlede4filsindépendant:4signaux//

• SCLK(SerialClock )– Horloge délivréparlemaître

• MOSI(MasterOutput,SlaveInput)– Sortiedonnéemaître,entréedonnéeesclave

• MISO(MasterInput,SlaveOutput)– Entréedonnéemaître,sortiedonnéeesclave

• SS(SlaveSelect)– Sélectionesclave

60

Page 61: cours BUS Student - Cours | Projets Divers

Unseulesclave4signaux

SélectionesclaveOptionnel

Unseulesclave:câblageminimum

LebusSPI:topologie

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise61

Page 62: cours BUS Student - Cours | Projets Divers

Signauxdubus

3esclaves=3signauxdesélectionÞ 3GPIOdédiéÞ Daisychain

Unseulesclaveactifàlafois

LebusSPI:topologie

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise62

Page 63: cours BUS Student - Cours | Projets Divers

Lesesclavessont« chaînés »ó lesdonnées envoyées sesuivent

Sélectionsimultanéedesesclaves

LesesclavessontensérieES->ES->ES->..

LebusSPI:topologie

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise63

Page 64: cours BUS Student - Cours | Projets Divers

LebusSPI:exemplededaisy_chained

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise64

Page 65: cours BUS Student - Cours | Projets Divers

Troisparamètres:1. Lafréquenced'horloge.2. Lapolaritédel'horloge,paramètreCPOL (Clock polarity )3. Laphasedel'horloge,paramètreCPHA (Clock phase).

w CPOLetCPHAontdeuxétatpossible:Þ 4possibilitésdeconfiguration.

w Lesconfigurationsétantincompatiblesentreelles:ÞMaîtreetesclavedoiventavoirlesmêmes paramètres.

wLafréquencedel ʼhorlogeestfixéeparlemaître:Þ Elle doit tenir compte des possibilités de l ʼesclave.Þ Pas de contrainte sur la précision.

LebusSPI:Lesparamètresdel’horloge

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise65

Page 66: cours BUS Student - Cours | Projets Divers

LebusSPI:Lesparamètresdel’horloge

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise66

Page 67: cours BUS Student - Cours | Projets Divers

Exemple: autorisationd ʼécrituredansuneEEPROM

Sélection-CS=0

Horloge-Surfrontä

µC->00000110-LeMSBenpremier

SortieEEPROM-Enhauteimpédance

LebusSPI:Lesparamètresdel’horloge

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise67

Page 68: cours BUS Student - Cours | Projets Divers

Exemple: lectureduregistredʼétatd ʼuneEEPROM

Sélection-CS=0

Horloge-Surfrontä

µC->00000101-LeMSBenpremier

SortieEEPROM-Enhauteimpédance

EEPROM->00000010-LeMSBenpremier

LebusSPI:Lesparamètresdel’horloge

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise68

Page 69: cours BUS Student - Cours | Projets Divers

qExemplesousMBED

SPI– MBED

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

#include"mbed.h"

SPIdevice(SPI_MOSI,SPI_MISO,SPI_SCK);

int main(){int i =0;while(1){device.write(0x55);device.write(i++);device.write(0xE0);wait_us(50);

}}

69

Page 70: cours BUS Student - Cours | Projets Divers

qExemplesousMBED

SPI– MBED

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise70

Page 71: cours BUS Student - Cours | Projets Divers

qHALMbed (suite)

SPI– MBED

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise71

Page 72: cours BUS Student - Cours | Projets Divers

qSpécificationduSMT32F• Full-duplexsynchronoustransfersonthreelines• Simplexsynchronoustransfersontwolineswithorwithoutabidirectionaldataline• 8- or16-bittransferframeformatselection• Masterorslaveoperation• Multimaster modecapability• 8mastermodebaudrateprescalers (fPCLK/2max.)• Slavemodefrequency(fPCLK/2max)

SPI– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise72

Page 73: cours BUS Student - Cours | Projets Divers

qSpécificationduSMT32F• Fastercommunicationforbothmasterandslave• NSSmanagementbyhardwareorsoftwareforbothmasterandslave:dynamicchangeofmaster/slaveoperations

• Programmableclockpolarityandphase• ProgrammabledataorderwithMSB-firstorLSB-firstshiftingDedicatedtransmissionandreceptionflagswithinterruptcapabilitySPIbusbusystatusflagSPITImodeHardwareCRCfeatureforreliablecommunication:

• CRCvaluecanbetransmittedaslastbyteinTx mode• AutomaticCRCerrorcheckingforlastreceivedbyteMastermodefault,overrunandCRCerrorflagswithinterruptcapability1-bytetransmissionandreceptionbufferwithDMAcapability:Tx andRxrequests

SPI– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise73

Page 74: cours BUS Student - Cours | Projets Divers

qArchitectureinternedupériphérique

SPI– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise74

Page 75: cours BUS Student - Cours | Projets Divers

Timing

SPI– STM32

75

Page 76: cours BUS Student - Cours | Projets Divers

Procéduredeconfiguration• SelecttheBR[2:0]bitstodefinetheserialclockbaudrate(seeSPI_CR1register).• SelecttheCPOLandCPHAbitstodefineoneofthefourrelationshipsbetweenthedatatransferandtheserialclock(seeFigure194).ThisstepisnotrequiredwhentheTImodeisselected.

• SettheDFFbittodefine8- or16-bitdataframeformat• ConfiguretheLSBFIRSTbitintheSPI_CR1registertodefinetheframeformat.ThisstepisnotrequiredwhentheTImodeisselected.

• IftheNSSpinisrequiredininputmode,inhardwaremode,connecttheNSSpintoahigh-levelsignalduringthecompletebytetransmitsequence.InNSSsoftwaremode,settheSSMandSSIbitsintheSPI_CR1register.IftheNSSpinisrequiredinoutputmode,theSSOEbitonlyshouldbeset.ThisstepisnotrequiredwhentheTImodeisselected.

• SettheFRFbitinSPI_CR2toselecttheTIprotocolforserialcommunications.• TheMSTRandSPEbitsmustbeset(theyremainsetonlyiftheNSSpinisconnectedtoahigh-levelsignal).

SPI– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise76

Page 77: cours BUS Student - Cours | Projets Divers

RegistresdupériphériqueSPI

SPI– STM32

JordaneLorandel- OlivierRomain77

Registres decontrôles

Registres d’état

Registre dedonnées

Page 78: cours BUS Student - Cours | Projets Divers

Exempledeconfiguration

SPI– STM32

78

Registre SPI_CR1Adresse 0x00

0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

Page 79: cours BUS Student - Cours | Projets Divers

Exempled’initialisationsouskeil

SPI– STM32

79

void SPI3_Master_init(void){GPIO_InitTypeDef GPIO_InitStruct;SPI_InitTypeDef SPI_InitStruct;

//enableperipheralclockRCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI3,ENABLE);

//enableclockforusedIOpinsRCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);

/*configurepinsusedbySPI3*PC10=SCK*PC11=MISO*PC12=MOSI*/GPIO_InitStruct.GPIO_Pin =GPIO_Pin_12|GPIO_Pin_11|GPIO_Pin_10;GPIO_InitStruct.GPIO_Mode =GPIO_Mode_AF;GPIO_InitStruct.GPIO_OType =GPIO_OType_PP;GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_PuPd =GPIO_PuPd_NOPULL;GPIO_Init(GPIOA,&GPIO_InitStruct);

//connectSPI3pinstoSPIalternatefunctionGPIO_PinAFConfig(GPIOC,GPIO_PinSource10,GPIO_AF_SPI3);GPIO_PinAFConfig(GPIOC,GPIO_PinSource11,GPIO_AF_SPI3);GPIO_PinAFConfig(GPIOC,GPIO_PinSource12,GPIO_AF_SPI3);

//enableclockforusedIOpinsRCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);

GPIO_PinAFConfig(GPIOA,GPIO_PinSource15,GPIO_AF_SPI3);GPIO_InitStructure.GPIO_Pin =GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType =GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_UP;GPIO_Init(GPIOA,&GPIO_InitStructure );

Page 80: cours BUS Student - Cours | Projets Divers

Exempled’initialisationsouskeil

SPI– STM32

80

SPI_InitStruct.SPI_Direction =SPI_Direction_2Lines_FullDuplex;//settofullduplexSPI_InitStruct.SPI_Mode =SPI_Mode_Master;//transmitinmastermode,

NSSpinhasSPI_InitStruct.SPI_DataSize =SPI_DataSize_8b;//onepacketofdatais8bits

wideSPI_InitStruct.SPI_CPOL =SPI_CPOL_Low;//clockislowwhenidleSPI_InitStruct.SPI_CPHA =SPI_CPHA_1Edge;//datasampledatfirstedgeSPI_InitStruct.SPI_NSS =SPI_NSS_Hard;//settheNSSHARDSPI_InitStruct.SPI_BaudRatePrescaler =SPI_BaudRatePrescaler_256;//SPI

frequencyisSPI_InitStruct.SPI_FirstBit =SPI_FirstBit_MSB;//dataistransmittedMSBfirstSPI_Init(SPI1,&SPI_InitStruct);

SPI_SSOutputCmd(SID_MASTER_SPI,ENABLE);//SetSSOEbitinSPI_CR1registerSPI_Cmd(SPI3,ENABLE);//enableSPI3

}