Ich habe eine microSD an ein Arduino angeschlossen und kann sie nicht über den ISP programmieren, ohne die SD-Karte zu entfernen. Weiß jemand, wie man verhindert, dass die SD-Karte die ISP-Programmierung stört?
Einzelheiten:
Dies ist der microSD-Ausbruch: https://www.adafruit.com/products/254
Ich verwende einen ATMEGA328P mit 3,3 V und 8 MHz.
Ich verwende keinen Bootloader und kann aus mehreren Gründen die serielle Schnittstelle nicht zum Programmieren verwenden.
Vielen Dank!
isp
arduino-pro-micro
März 1980
quelle
quelle
Antworten:
Da es sich bei der SD-Karte um ein SPI-Gerät handelt, werden dieselben Pins wie bei der ISP-Schnittstelle verwendet. Die einzige Möglichkeit, die SD-Karte nicht mit dem ISP zu stören, besteht darin, die SD-Karte nicht angeschlossen zu haben.
Wie Sie gesehen haben, kann dies durch Entfernen der Karte erreicht werden.
Dies kann auch durch Hinzufügen eines Drei-Zustands-Puffers zwischen der MCU und der Karte erreicht werden, sodass die MCU die Karte nur dann mit dem SPI-Bus verbindet, wenn sie betriebsbereit ist. Im Standardbetrieb wird die Karte getrennt.
quelle
Ich hatte genau das gleiche Problem, auch mit Arduino (Atmega 328P). Ich habe ein SD-Kartenmodul mit einem anderen Layout, aber auch mit einem Level Shifter. Mein Stromkreis läuft mit 5 V (was bei Verwendung eines Pegelumsetzers angemessen ist).
Um das Problem zu beheben, habe ich gerade einen Pullup-Widerstand (10k) auf meiner eigenen Platine an der Chipauswahlleitung des SD-Moduls installiert, wodurch die SD-Karte während der Programmierung der MCU nicht ausgewählt wird. Jetzt funktioniert es.
Es scheint kein Pullup im Modul integriert zu sein. Daher ist der CS während der Programmierung niedrig (ohne Pullup), die SD-Karte ist der Meinung, dass sie die SPI-Befehle beantworten sollte, und stört daher die Kommunikation mit der MCU, weshalb die Programmierung über einen ISP fehlschlägt.
quelle