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
}
Top Related