J'ai une carte Arduino Mega, à laquelle est connectée en SPI une Arducam mega 3MP. La caméra est connectée sur le header ICSP qui est au milieu de la carte. Elle fonctionne bien.
J'essaie d'ajouter un lecteur de carte micro SD SPI. Il est connecté aux broches 50 à 53, et à des broches +5V et GND. Il fonctionne bien.
En revanche, quand mon lecteur SD est branché, la caméra ne fonctionne plus : le programme bloque sur la commande myCAM.begin() de la librairie Arducam_Mega. Même si je n'initialise pas la carte SD. Le simple fait que le lecteur SD soit branché semble bloquer la caméra. Si je débranche le VCC du lecteur SD, la caméra s'initialise en revanche correctement.
Je bloque depuis plusieurs jours, je n'arrive pas à comprendre le problème... L'un de vous aurait une idée ?
certains modules pour carte SD ont une erreur de conception : ils monopolisent le signal MISO , ce qui empêche les autres péripheriques SPI d’emettre des données. (crtes Catalex entre autres)
Ce que tu décris laisse penser que tu pourrait être dans cas.
Quel module micro SD exactement?
Certains d'entre eux ont une adaptation de niveau avec un circuit actif qui ne se met pas en HiZ lorsque le lecteur est désélectionné.
Ta carte vendue par AZDelivery ressemble fort la carte Catalex (c’en est sans doute une copie) présentant le défaut de conception sur MISO, défaut qui empêche toute cohabitation sur le bus SPI
the ENABLE pin 13 (CIPO) of the buffer of 74VC125 is always tied to GND. Other peripherals, if using multiple peripherals on the same SPI bus, cannot communicate with the host
En tout cas quand je débranche le MISO de la carte SD la caméra arrive à s'initialiser. Je ne sais pas si c'est utile mais quand je mesure le MISO de la carte SD il est +3V, avec le CS à +5V. Le MISO devrait être à 0, ou je dis n'importe quoi ?
Malheureusement vu le câblage à la masse de l’entrée13 de IC1D le signal CS n’a aucune influence sur IC1D
qui en permanence recopie l’état logique de la borne DAT0 de la carte SD
Pour utiliser cette carte en compagnie d’autres cartes sur bus SPI il faut corriger l’erreur de conception
-couper la liaisone en l’entre 13 et IC1D et la masse
-relier l’entrée 13 de YC1D au signa Chip Select
AInsi la sortie de IC1D sera en haute impédance quand la carte SD sera déselectionnée
Et accessoirement, s'assurer que MISO est bien relié au 11 de IC1D, avant de couper quoique ce soit.
On ne sait jamais des fois que ce soit une copie pas complètement identique (même si c'est peu probable).
Merci. Je vais acheter un autre lecteur microSD du coup. Auriez vous des conseils pour que cette fois j’en prenne un de bonne qualité ? Comme je disais j’ai une arduino Mega, et j’ai besoin que le canal SPI soit partagé avec une caméra, ce qui me paraissait assez banal comme besoin mais manifestement tous les lecteurs ne permettent pas ce partage…
Bonjour. A toutes fins utiles, je poste la solution que j’ai trouvée. Après avoir essayé plusieurs lecteurs SD ou microSD SPI, aucun ne fonctionnait correctement. J’ai fini par acheter le shield ethernet de la marque Arduino, qui contient un lecteur de carte microsd, et ça fonctionne bien, y compris la cohabitation avec un second périphérique SPI. Attention, le shield ethernet d’une autre marque, moins cher, ne fonctionnait pas bien non plus…