Académique Documents
Professionnel Documents
Culture Documents
5.1. INTRODUCTION
La liaison SPI (Serial Peripheral Interface) est une liaison série synchrone qui fait partie du module
MSSP. Elle transmet à la fois les données (bits) mais aussi un signal d’horloge qui synchronise la
réception de ces données. Cette liaison permet de relier le microcontrôleur à de nombreux
périphériques équipés de registres à décalage tels que les afficheur, EEPROM à liaison série,
convertisseur, etc. dans ce mode de liaison, il y a un maître et un ou plusieurs esclaves, c’est le maître
qui génère l’horloge nécessaire au transfert en lecture depuis l’esclave ou en écriture vers l’esclave.
5.2. DEFINITIONS
Le module MSSP (Master Synchronous Serial Port), permet l’échange de données du PIC avec le
monde extérieur, en utilisant des transmissions série synchrones.
SPI signifie : Serial Peripheral Interface.
Une liaison série est une liaison qui transfère les données bit après bit (en série), au contraire d’une
liaison parallèle, qui transmet un mot à la fois (mot de 8 bits, 16 bits, ou plus suivant le
processeur).
La notion de synchrone signifie que l’émetteur/récepteur fournira un signal de synchronisation qui
déterminera non seulement le début et la fin de chaque octet, mais également la position de chaque
état stable des bits.
Il y en a deux façons d’envoyer les bits à la suite les uns des autres :
Soit on commence par le bit 7, et on le poursuit par les autres bits jusqu’au bit 0. C’est la
méthode utilisée par le module MSSP.
Soit on procède d’une façon inverse, d’abord le bit 0 jusqu’au bit de poids le plus fort. C’est de
cette façon que fonctionnera le module USART.
5.3. CONSTITUTION
Cette interface est pilotée par deux registres de la MSSP :
Le registre de contrôle SSPCON d’adresse 14h.
Le registre d’état SSPSTAT d’adresse 94h.
A ces registres s’ajoutent le SSPSR (Synchronous Serial Port Shift Register), qui contient la
donnée en cours de transfert, et le registre SSPBUF (Synchronous Serial Port BUFfer) qui
contient l’octet à envoyer, ou l’octet reçu.
SDI Emission
SCK Horloge
(a)
(b)
Avec :
SDO (RC5) : Serial Data Out sortie de donnée
SDI (RC4) : Serial Data Input entrée de donnée
SCK (RC3/SDA) : Serial ClocK sortie d’horloge sur maître
(entrée d’horloge sur esclave)
SS (RA5/AN4) : Slave Select
Cette ligne de sélection, qui fait partie du port A, active au niveau bas, permet au maître d’activer la
SPI de l’esclave avec qui dialoguer dans un réseau. En cas de dialogue entre plusieurs
microcontrôleurs, si la connexion SS est au niveau haut le microcontrôleur est maître, et à l’inverse, si
Avec :
WCOL : Write COLlision detect bit ( cas d’ésmission)
SSPOV : SSP receive Overflow indicator bit (=1, perte de l’octet reçu)
L.HACINI MCIL3_Les Microcontrôleurs Page 4
Chapitre 5 La liaison SPI du module MSSP
Ce bit passé à 1 quand un nouveau mot est reçu alors que le buffer SSPBUF contient la
donnée précédente (débordement). La donnée dans le registre à décalage (SSPSR) est
perdue. En mode esclave, le programme doit lire le SSPBUF afin d’éviter le débordement.
Ce bit doit être remis à 0 par programme.
SSPEN : SSP ENable (=1, module SSP en service)
à 1, il met en service le port série et configure les lignes SCK, SDO, SDI et SS. Dans ce cas
il faut que les lignes soient configurées correctement en entrées et en sorties via TRISC.
CKP : ClocK Polarity select bit (détermine le niveau de l’état de repos de l’horloge)
CKP=0 : repos de l’horloge au niveau 0
CKP=1 : repos de l’horloge au niveau 1
SSPM3 à SSPM0: Synchronous Serial Port Mode select bits
Les bits de sélection du mode de fonctionnement comme le montre le tableau suivant :
M3 M2 M1 M0 Origine de l’horloge
0 0 0 0 Fosc/4
0 0 0 1 Fosc/16
0 0 1 0 Fosc/64
0 0 1 1 TMR2 output/2
0 1 0 0 Entrée SCK-SS en service
0 1 0 1 Entrée SCK-SS libre
Tableau 5.1. Mode de fonctionnement
Pour la SPI en maître, ces bits permettent de déterminer l’origine (TMR2 ou OSC) et la fréquence de
l’horloge de transmission, pour la SPI en esclave, ils mettent en service ou non la ligne SS.
Avec :
SMP : data SaMPle timing
Echantillonnage d’un bit sur l’entrée SDI. Permet de définir à quel moment du cycle d’horloge
on effectue la capture du bit présent sur SDI
SPI mode maître :
SMP=1 : l’échantillonnage de la donnée reçue a lieu à la fin du bit de donnée.
SMP=0 : l’échantillonnage a lieu au milieu du bit.
L.HACINI MCIL3_Les Microcontrôleurs Page 5
Chapitre 5 La liaison SPI du module MSSP
Ce réglage de l’échantillonnage permet d’être compatible avec tout esclave
SPI mode esclave :
Dans ce mode de fonctionnement SMP doit être mis à 0.
CKE : SPI ClocK Edge select
Ce bit détermine quel sens de transition de l’horloge accompagne le placement du bit sur SDO
Si CKP=0
CKE=1 : la donnée est transmise sur un front montant de l’horloge SCK
CKE=0 : la donnée est transmise sur un front descendant de l’horloge SCK
Si CKP=1
CKE=1 : la donnée est transmise sur un front descendant de l’horloge SCK
CKE=0 : la donnée est transmise sur un front montant de l’horloge SCK
BF : Buffer Full
Ce bit est un indicateur (lecture seule). Il indique quand il est à 1 que le registre de réception
(SSPBUF) est plein. Il faut lire le buffer avant toute autre lecture ou écriture aussi pour le maître
que pour l’esclave.