cours BUS Student - Cours | Projets Divers

Preview:

Citation preview

PériphériquesBUS

UART,I2CetSPI

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

q Parte1:UARTqFonctionnalitéqRegistresdeconfigurationsqExempledeprogrammation

qPartie2:SPIqFonctionnalitéqRegistresdeconfigurationqExempledeprogrammation

qPartie3:I2CqFonctionnalitéqRegistresdeconfigurationqExempledeprogrammation

2

Sommaire

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

4

LesbusduSTM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

LacarteNucléo STM32possède :

q 3UARTS

q 3I2C

q 5SPI

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

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

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.)

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

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

Busdecommunicationsérie

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Partie 1UART

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

qLacommunicationpeutsefaireenmêmetempsdanslesdeuxsens:Full-duplex

11

Principedefonctionnement

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

TXD

GND

RXD

Emetteur Récepteur

qCommunicationHalf Duplex

qCommunicationFull-duplex

12

Principedefonctionnement

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

TXD

GND

Emetteur Récepteur

TXD

GND

RXD

Emetteur Récepteur

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

qExempledeconfiguration

14

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

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

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

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

qAdaptationdesniveaux

18

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

qExemplesousMBED

19

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

20

UART– RS232

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

qSTM32qPossède3USART

qUniversal SynchronousAsynchronous ReceiverTransmitter

qChaqueUSARTq9modesdecommunication

qLesplususuelssontlesmodesasynchroneetHWcontrolflow

21

UART– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

qHWcontrolflow

qIRDA

22

UART– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

qModesynchrone

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

23

UART– STM32

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

qUSART_CR1qTailledesdonnéesqContrôledelaparité

qUSART_CR2qnbre debitdecontrôle

24

UART– STM32

qUSART_CR1qConfigurationdelatailledesdonnées

q7ou8bits

25

UART– STM32

qSourced’interruption

q9sources

26

UART– STM32– interrupt

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

qVitessedetransmission

27

UART– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

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

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

Busdeterrain

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Partie 2I2C

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

qExemplesousMBED:lecturedelatempératuresurunLM75

47

I2C– exemple

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

qExemplesousMBED:lecturedelatempératuresurunLM75

48

I2C– exemple

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

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

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

51

LebusI2C:STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

52

LebusI2C:STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Séquence de transfert en transmission en mode master

53

LebusI2C:STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Sources d’interruption liées à une communication I2C

54

LebusI2C:STM32

Les registres de contrôles

Registres decontrôles

Registres d’adresse

Registre dedonnées

Registres d’état

Registres decontrôlesdeshorloges

LebusSPI

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Partie 3SerialPeripheralInterface

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

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

LebusSPI

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise

Mémoires

Extensiondebus

Afficheurs

CAN/CNA

58

DonnéesMaître->esclave

HorlogeMaître->esclaveRegistreàdécalage

DonnéesEsclave->maîtreRegistreEMISSION/RECEPTION

LebusSPI:principe

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise59

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

Unseulesclave4signaux

SélectionesclaveOptionnel

Unseulesclave:câblageminimum

LebusSPI:topologie

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise61

Signauxdubus

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

Unseulesclaveactifàlafois

LebusSPI:topologie

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise62

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

Sélectionsimultanéedesesclaves

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

LebusSPI:topologie

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise63

LebusSPI:exemplededaisy_chained

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise64

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

LebusSPI:Lesparamètresdel’horloge

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise66

Exemple: autorisationd ʼécrituredansuneEEPROM

Sélection-CS=0

Horloge-Surfrontä

µC->00000110-LeMSBenpremier

SortieEEPROM-Enhauteimpédance

LebusSPI:Lesparamètresdel’horloge

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise67

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

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

qExemplesousMBED

SPI– MBED

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise70

qHALMbed (suite)

SPI– MBED

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise71

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

SPI– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise72

qSpécificationduSMT32F• Fastercommunicationforbothmasterandslave• NSSmanagementbyhardwareorsoftwareforbothmasterandslave:dynamicchangeofmaster/slaveoperations

• Programmableclockpolarityandphase• ProgrammabledataorderwithMSB-firstorLSB-firstshiftingDedicatedtransmissionandreceptionflagswithinterruptcapabilitySPIbusbusystatusflagSPITImodeHardwareCRCfeatureforreliablecommunication:

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

SPI– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise73

qArchitectureinternedupériphérique

SPI– STM32

JordaneLorandel- OlivierRomainIUT– UniversitédeCergy-Pontoise74

Timing

SPI– STM32

75

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

RegistresdupériphériqueSPI

SPI– STM32

JordaneLorandel- OlivierRomain77

Registres decontrôles

Registres d’état

Registre dedonnées

Exempledeconfiguration

SPI– STM32

78

Registre SPI_CR1Adresse 0x00

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

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 );

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

}

Recommended