0% ont trouvé ce document utile (0 vote)
185 vues2 pages

Protocole SPI

Le document décrit le protocole SPI utilisé pour la transmission et la réception simultanée de données entre un maître et un esclave. Quatre modes de fonctionnement sont définis selon les valeurs des bits CPOL et CPHA. La librairie arduino SPI permet d'initialiser et de gérer les transferts SPI.

Transféré par

Nothaßan Berry
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
185 vues2 pages

Protocole SPI

Le document décrit le protocole SPI utilisé pour la transmission et la réception simultanée de données entre un maître et un esclave. Quatre modes de fonctionnement sont définis selon les valeurs des bits CPOL et CPHA. La librairie arduino SPI permet d'initialiser et de gérer les transferts SPI.

Transféré par

Nothaßan Berry
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

2

Protocole SPI  Mode SPI Conditions Front d’envoi Front de lecture


0 CPOL=0, CPHA=0 descendant montant
Introduction  1 CPOL=0, CPHA=1 montant descendant
Le mode SPI permet la transmission et la réception simultanée (full duplex) de 2 CPOL=1, CPHA=0 montant descendant
8 bits de données de manière synchrone. Selon le protocole SPI, l’interconnexion du
microcontrôleur avec un autre périphérique nécessite généralement, trois broches : 3 CPOL=1, CPHA=1 descendant montant
 Master Out Slave In (MOSI) Les formats de transfert de données SPI sont illustrés dans les figures suivantes Les
 Master In slave Out (MISO) bits de données sont décalés et verrouillés sur les fronts opposés du signal SCK, ce
 Serial Clock (SCK) qui garantit un temps suffisant pour que les signaux de données se stabilisent.
En outre, une quatrième broche peut être utilisée en mode esclave :
 Slave Select (𝑆𝑆).
La figure suivante illustre le schéma bloc simplifié d’une liaison entre le maître et
l’esclave.

Maître Esclave

MOSI MOSI

MISO MISO
Registre à décalage Registre à décalage
MSB LSB MSB LSB
SCK SCK

Les communications sont initiées par le maître. A chaque cycle d’horloge, l’envoi
d’un bit par le maître, s’accompagne d’envoi d’un bit par l’esclave.

Modes de fonctionnement 
Il existe quatre combinaisons de phase et de polarité d’horloge SCK par rapport aux
données série, qui sont déterminées par les bits de contrôle CPHA et CPOL. Le
tableau suivant résume les valeurs associées aux bits CPOL et CPHA pour chaque
mode de fonctionnement.

https://www.espacetechnologue.com Ali Hmidene


3

Librairie arduino 
La librairie SPI (spi.h) comporte les fonctions suivantes :
SPI.setBitOrder(dataOrder) : définie le sens de transfert, c-à-d, le bit à
transférer en premier MSB ou LSB. Ce paramètre peut être : MSBFIRST ou
LSBFIRST.

SPI.setClockDivider(speedMaximun) : l’horloge de bus SPI est dérivée de la


fréquence système. La fréquence du système peut être divisée par : 2, 4, 8, 16, 32, 64
ou 128. Le paramètres speedMaximun peut être : SPI_CLOCK_DIV2,
SPI_CLOCK_DIV4, SPI_CLOCK_DIV8, SPI_CLOCK_DIV16,
SPI_CLOCK_DIV32, SPI_CLOCK_DIV64 ou SPI_CLOCK_DIV128.

SPI.setDataMode(dataMode) : définie le mode SPI. Ce paramètre peut être :


SPI_MODE0, SPI_MODE1, SPI_MODE2, ou SPI_MODE3.

SPI.begin() : Initialise le bus SPI :

- SCK, MOSI et SS en sortie,


- SCK et MOSI au niveau bas,
- SS au niveau haut.
SPI.end() : Désactive le bus SPI (en laissant les modes de broche inchangés).

SPI.transfer(), SPI.transfer16() : Le transfert SPI est basé sur un envoi et


une réception simultanée : les données reçues sont renvoyées dans receiveVal (ou
receiveVal16). En cas de transfert de tampon, les données reçues sont stockées dans
la mémoire tampon en place (les anciennes données sont remplacées par les données
reçues).
receivedVal = SPI.transfer(val) ;
receivedVal16 = SPI.transfer16(val16) ;
SPI.transfer(buffer, size) ;

https://www.espacetechnologue.com

Vous aimerez peut-être aussi