SPI
Dans les chapitres précédents, nous avons vu l’UART avec lequel des appareils peuvent communiquer sur des longues distances, puis le bus I2C qui permet à de nombreux appareils de communiquer sur des distances plus courtes. Maintenant nous nous intéressons à l’interface SPI (Serial Peripheral Interface) dont le principal atout est de permettre des communications “full-duplex” plus rapides.
Pour permettre une communication “full-duplex”, le SPI utilise deux signaux :
SDO
1 (Serial Data Output) et SDI
2 (Serial Data Input). Avec le
signal d’horloge SCK
(Serial Clock), ces signaux forment un bus sur lequel se
connectent tous les appareils.
Pour identifier un périphérique, le contrôleur “active” signal CS
(Chip
Select) correspondant. Il n’y a donc pas d’adresse qui est envoyée sur le bus
(comme c’est le cas pour l’I2C), mais bien un fil dédié pour chaque
périphérique. Cette construction rend le câblage plus compliqué, mais elle est
plus performante, car il n’est plus nécessaire d’envoyer une adresse sur le bus.
Le bus SPI est conçu pour rester sur la même carte électronique, il n’y a donc
pas de câblage à proprement parler, mais il faut quand même dédier une broche du
microcontrôleur à chaque périphérique.
Le SPI est un bus synchrone plutôt rapide. La fréquence de l’horloge est souvent
entre 1MHz et 50MHz. Comme chaque périphérique est adressé par son signal CS
,
il est possible d’utiliser des fréquences différentes pour différents
périphériques. On maximise ainsi les performances.
Grâce à ces performances, le SPI est utilisé par les systèmes embarqués pour lire et écrire les cartes SD3.
Grâce à ces bonnes performances, le bus SPI est aussi utilisé pour :
- Des écrans OLED (https://www.mikroe.com/oled-c-click)
- Des modules Bluetooth (https://www.nordicsemi.com/Products/nRF52810)
- Des contrôleurs Ethernet (https://www.microchip.com/en-us/product/ENC28J60)
Certains fabricants de périphériques offrent les deux types de communication (SPI ou I2C) et laissent le choix à l’utilisateur final. C’est le cas par exemple de ce gyroscope 6 axes avec accéléromètre :
Pour plus d’information, consultez la page Wikipedia.
Pour utiliser le SPI avec Mbed OS consultez la documentation de l’API correspondante.
Exercice: Débit sur un bus SPI
-
Le signal
SDO
était aussi appeléMOSI
pour “Master Out Slave In”, mais cette expression n’est plus utilisée à cause des références à un système raciste d’oppression violente (https://www.washingtonpost.com/opinions/2020/06/12/tech-industry-has-an-ugly-master-slave-problem/). ↩ -
Le signal
SDI
était aussi appeléMISO
. ↩ -
En plus du SPI, les cartes SD permettent d’autres modes de transfert qui permettent des vitesses plus élevées. ↩