Modifier un lecteur de carte SD pour bus SPI Arduino
Dans certains projets Arduino, il est nécessaire d’utiliser un lecteur de carte SD pour stocker des informations. Le lecteur de carte SD communique alors avec l’Arduino via le protocole SPI.
Il est alors possible que plusieurs capteurs ou actionneurs Arduino communiquent via ce même protocole SPI. Il est donc nécessaire de créer un bus SPI.
De par leur mauvais design, certains lecteurs de cartes SD, perturbent le fonctionnement des autres esclaves du bus SPI sur lequel ils sont connectés.
Dans cet article, je vous présente la modification hardware qu’il a été nécessaire de réaliser pour que le bus SPI ne soit plus perturbé par le lecteur de carte SD.
Bus SPI
Le bus SPI est un ensemble de composants tous reliés entre eux et communiquant via le protocole SPI.
Les composants et l’Arduino ont en commun 3 fils. L’horloge CLK et les ports de communication MISO et MOSI.
En revanche, chaque composant et relié par son port CS (Chip Select) à une sortie digitale de l’Arduino différente. (Fils bleu et jaune du schéma).

L’Arduino joue le rôle de maître et distribue tour à tour le droit de communiquer aux autres composants via le port CS.
Si l’Arduino alimente (digitalWrite(port_CS, HIGH);) le port CS d’un composant, le composant considère que le maître (l’Arduino) ne communique pas avec lui.
Si au contraire, l’Arduino n’alimente pas (digitalWrite(port_CS, LOW); ) le port CS d’un composant, le composant considère que le maître (l’Arduino) communique avec lui.
C’est de cette manière que l’Arduino sélectionne avec qui il communique.
Défaut de certains lecteurs de carte SD
Certains lecteurs de carte SD ont un défaut de conception faisant qu’ils ne font plus attention à ce qu’ils reçoivent sur leur port CS.
Ils cherchent en permanence à communiquer avec l’Arduino, venant perturber la communication entre l’Arduino et les autres composants du bus.
Pour y remédier, il faut refaire le câblage de la broche MISO.
Voici un exemple de circuit imprimé avec défaut. Il marche très bien seul mais fait planter un bus SPI.

Modification hardware
D’après le schéma électrique du lecteur de carte réalisé par Vishnu, il est possible de retracer, sur le circuit imprimé, le trajet électrique depuis la broche MISO vers la carte SD.

Il suffit ensuite de réaliser la modification suivante :
- Couper 2 bandes du circuit imprimer
- Souder directement la borne de la carte SD à la broche MISO
Voici la réalisation en image.



Résumé
En résumé, la modification proposée consiste à by-passer les bornes 11 et 12 de la puce (74LVC125A) et à aller directement depuis la carte SD vers la broche MISO.

Pour plus d’informations sur cette problématique je vous renvoie vers les fils de discussion du forum Arduino:
https://forum.arduino.cc/t/spi-sd-card-reader-other-spi-device-not-working-together/447006
https://forum.arduino.cc/t/problem-max31865-and-microsd-card-on-the-same-spi-bus/579369
Si vous avez apprécié cette lecture, n’hésitez pas à partager cet article avec d’autres personnes qui pourraient être intéressées. C’est un moyen simple de soutenir ce blog.