MicroSD мешает программированию ISP

У меня есть microSD, подключенная к Arduino, и я не могу запрограммировать ее через ISP, не извлекая SD-карту. Кто-нибудь знает, как сделать так, чтобы SD-карта не мешала программированию ISP?

Подробности:

Вот обзор microSD: https://www.adafruit.com/products/254

Я использую ATMEGA328P на 3,3 В 8 МГц.

Я не использую загрузчик и по ряду причин не могу использовать последовательный порт для программирования.

Спасибо!

, 👍7

Обсуждение

Пробовали ли вы подключить резистор 10 кОм от CS к +3,3 В? К какому выводу подключен CS?, @frarugi87


2 ответа


3

Поскольку SD-карта является устройством SPI, она использует те же контакты, что и интерфейс ISP. Единственный способ не допустить, чтобы SD-карта мешала ISP, — не подключать SD-карту.

Как вы видели, этого можно добиться, удалив карту.

Этого также можно добиться, добавив буфер с тремя состояниями между микроконтроллером и картой, чтобы микроконтроллер подключал карту к шине SPI только тогда, когда он готов ее использовать — в режиме по умолчанию карта отключена.

,

1

У меня была точно такая же проблема, также с использованием Arduino (Atmega 328P). У меня есть модуль SD-карты с другой компоновкой, но также с преобразователем уровня. Моя схема работает на 5 В (что подходит при использовании преобразователя уровня).

Чтобы решить эту проблему, я просто установил на своей плате подтягивающий резистор (10k) на линию выбора чипа модуля sd, который не позволяет выбрать карту sd во время программирования микроконтроллера. Теперь это работает.

Похоже, в модуле нет интегрированного подтягивающего резистора. Следовательно, CS имеет низкий уровень во время программирования (без подтягивающего резистора), SD-карта думает, что должна отвечать на команды SPI, и таким образом мешает связи с MCU, поэтому программирование через ISP не удается.

,