Interface série synchrone
07/11/2000
 Patrick ABATI 
Liste des cours

    C'est une liaison série synchrone rapide (1Mbit/s) qui permet des connexions d'une grande simplicité matérielle sur des composants pourvus de ce type de bus.


 Principe 

    Un composant "maître" génère une horloge vers un composant "esclave" de façon à lui envoyer des données de type série par l'intermédiaire de sa sortie de transmission, ou à récupérer des données en provenance de l'esclave au niveau de son entrée de réception. Un maître peut gérer plusieurs esclaves: il doit donc sélectionner au préalable le composant qui doit " partager " la liaison avec lui.

principe

 On trouve actuellement de plus en plus de composants pourvus de ce type de bus : EEPROM, RAM, CAN, CNA...


 Application avec le microcontrôleur MC68HC711D3 (Motorola) 

Bornes spécifiques:
MISO(17): Master In Slave Out, entrée de réception en mode maître
MOSI(18): Master Out Slave In, sortie de transmission en mode maître
SCK(19): Serial Clock, sortie horloge en mode maître
SS*(20): Slave Select, entrée de sélection en mode esclave.

    Le 68HC11 peut être utilisé en mode maître ou en mode esclave. Dans le cas d'une configuration en mode maître, avec un seul esclave, il est préférable d'utiliser la borne SS*. Cette borne ne doit pas être utilisée dans le cas où plusieurs esclaves sont à commander : des ports "classiques" sont préférables , la borne SS* étant néanmoins programmée en sortie.

Registres:
DDRD($0009): Data Direction control Register port D
SPCR ($0028): Serial Peripheral Control Register
SPSR ($0029): Serial Peripheral Status Register
SPDR ($002A): Serial Peripheral Data

registres

SPR1
SPR0
Fréquence avec E = 2 MHz
0
0
1 MHz
0
1
500 KHz
1
0
125 KHz
1
1
62,5 KHz

    La mise en oeuvre au niveau logiciel est relativement complexe, souvent du fait que le "protocole" du circuit esclave est souvent "lourd": configurer les entrées-sorties, définir le mode maître, choisir la fréquence d'horloge, choisir le front actif d'horloge (CPOL,CPHA), sélectionner ou désélectionner l'esclave, tester la fin d'un transfert (SPIF)...

    L'horloge n'est active que lors d'une écriture: lorsque le micro-contrôleur veut reçevoir un octet en provenance de l'esclave, il doit effectuer une fausse écriture dans le SPDR (envoi d'un octet quelconque), attendre la fin du transfert (test de SPIF), récupérer l'octet transmis par l'esclave dans le SPDR.

 

 Exemple de programme de mise en oeuvre du bus S.S.P.I. 

Microcontrôleur MC68HC711D3
Convertisseur analogique - numérique 12 bits MAX538.

exemple

  

Avec Émulateur du MC68HC711D3 de MECALOGIC Concept.

*****************************************************************
* Essai du CNA MAX538(Convertisseur Numérique-analogique 12 bits) sur bus SPI.
*
* Le programme permet de générer une "dent de scie" 0-2,5v sur la sortie Vout du MAX538.
*
PORTD EQU $0008
DDRD EQU $0009
SPCR EQU $0028 Control
SPSR EQU $0029 Status
SPDR EQU $002A Data
SPIF EQU $80 Transfer Complete Flag
*
ORG $F000
*
RESET LDAA #%10011000 Préparer état des sorties
STAA <PORTD PD6(EEPROM)=0,PD7=1,SCK=1, MOSI=1
LDAA #%11111000 PD6(EEPROM),PD7,SCK et MOSI en sortie
STAA <DDRD
LDAA #%01010000 Interruptions inhibées, système SPI on,
STAA <SPCR Master, CPOL=0,CPHA=0, E -:- 2 (1MHz)
RAZ LDD #$0000
DEBUT BCLR PORTD $80 Sélection du CNA : PD7=0
STAA <SPDR Envoi premier octet
BRCLR SPSR SPIF * Transfert terminé?
STAB <SPDR Envoi second octet
BRCLR SPSR SPIF * Transfert terminé?
BSET PORTD $80 Désélection du CNA : PD7=1
ADDA #1 Rampe sur 4 bits forts
* Remplacer ADDA par ADDD pour rampe sur 12 bits
CPD #$1000 Maximum CNA +1
BNE DEBUT
BRA RAZ
*
ORG $FFFE
FDB RESET
*
END Fin du Listing
*****************************************************************