Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Зависает SD карта
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Интерфейсы
MiklPolikov
Сделал проект с microSD картой + SPI и столкнулся с проблемой : с некоторыми картами не работает.

Карта "зависает" в самом начале, при выводе из спящего состояния. Ток потребления поднимается до 13мА и больше не меняется,
карта ни на что не реагирует и вернуть её в состояние с низким потребление можно только сбросом питания. Запускаю так :

1)CS в низкий уровень
2)Отправка 0xFF 74 раза
3)Задержка 1мс
4)Отправка CMD0 0x40 0x00 0x00 0x00 0x00 0x95
5) ......и карта уже "висит"


Пробовал на разных частотах SPI 150КГц 300КГц , ничего не меняется. windows карту видит.

Кто-нибудь сталкивался ?
kovigor
Цитата(MiklPolikov @ Mar 7 2012, 21:30) *
Карта "зависает" в самом начале, при выводе из спящего состояния. Ток потребления поднимается до 13мА


Судя по небольшому "аварийному" току, дело не в карте, а в ПО на МК. Проще говоря, имеет место конфликт уровней. Карта выставляет на какой-то ножке единичку, а МК - ноль, или наоборот. При проблемах с питанием из карточки просто повалил бы дым ...
MiklPolikov
Цитата(kovigor @ Mar 7 2012, 20:36) *
Судя по небольшому "аварийному" току, дело не в карте, а в ПО на МК. Проще говоря, имеет место конфликт уровней. Карта выставляет на какой-то ножке единичку, а МК - ноль, или наоборот. При проблемах с питанием из карточки просто повалил бы дым ...


Проверил - по ногам конфликта нет.
kovigor
Цитата(MiklPolikov @ Mar 7 2012, 21:53) *
Проверил - по ногам конфликта нет.


Тогда проверьте, нет ли скачков питания при засыпании и пробуждении. Куда-то же эти 13 мА текут. Куда ?
aaarrr
Цитата(MiklPolikov @ Mar 7 2012, 21:30) *
Кто-нибудь сталкивался ?

А питание карты вы не коммутируете? Если да, то убедитесь, что ключ тянет хотя бы 1А
psL
А выводы неподключенные на разъеме карты имеются?
MiklPolikov
Цитата(aaarrr @ Mar 7 2012, 23:23) *
А питание карты вы не коммутируете? Если да, то убедитесь, что ключ тянет хотя бы 1А


Ток питания я мерию при помощи стоящего на питании резистора 1 Ом , и после него параллельно карточке стоит конденсатор 33000мкф. Напряжение питания 3.3в , при попытке запуска пажение на карточке десятки мВ.
"Аварийные" 13мА текут через питание карточки, даже если все остальные линии отключить.

Вопросы :
1)Мой алгоритм запуска, описанный в первом сообщении правильный ?
2)Првильно ли то что частота SPI 167 КГц ? Может запускать нужно на какой-то определённой частоте?
3)Как должен быть настроен SPI ? Выборка по переводу CLOCK из низкого в высокий , при отсутствии передачи
CLOCK в высоком уровне ? Делал при отсутствии передачи CLOCK и в высоком и в низком. Одни карточки работают и так и так,
другие не работают ни так ни так.
4) SPI mode есть у всех microSD ? А то в интернете документация только на старые до 2ГБ. Может сейчас от него отказались ?
aaarrr
Замкнули бы лучше этот резистор на время.
Неиспользуемые выводы карты в воздухе не брошены?

1. Правильный
2. Можно и на 167kHz
4. Мне такие не попадались
MiklPolikov
Цитата
Замкнули бы лучше этот резистор на время.

Давно уже замкнул.

Цитата
Неиспользуемые выводы карты в воздухе не брошены?

Брощены )) А нужно к земле ?
aaarrr
Цитата(MiklPolikov @ Mar 8 2012, 17:00) *
Брощены )) А нужно к земле ?

Нужно подтянуть к питанию карты. Некоторые экземпляры, бывает, как раз виснут из-за этого.
MiklPolikov
Подтянул неиспользуемые ноги DAT1 DAT2 к питанию. Ничего не изменилось .

На самом деле ситуация такая :
Карта отвечае 0x01 на CMD0 , и одновременно с этим начинает потреблять 16мА .
На последующие CMD1 , сколько бы их ни было, то же отвечает 0x01.

Если при отправке CMD0 указать неправильный CRC , карта ничего не ответит и ток питания не поднимет.

Вопросы :
1) В начале нужно отправить ровно 74 0xFF , или не меньше 74 ?
2) Во время этих FF CS должен быть в высоком уровне ?
В разных местах пишут по-разному.
aaarrr
1. Не менее
2. В неактивном, т.е. высоком

А времянки соблюдаются? После ответа карты холостой байт выдается?
MiklPolikov
Цитата(aaarrr @ Mar 8 2012, 17:06) *
А времянки соблюдаются? После ответа карты холостой байт выдается?


Да . После отправки команды выдаётся FF пока не придёт ответ (несколько раз) , после того как ответ пришёл ещё один FF

Я правильно понимаю, что если после CMD0 ток потребления стал 16ма и не опускается, то это значит что всё неправильно и CMD1 можно не пытатся отправлять ?

Нашёл вот такую документацию.
Делаю всё в точности как нарисовано, после ответа на CMD0 поднимаю CS в высокий уровень и шлю 8 клоков.
Только не понимаю, почему в этой документации 8х4=64 ))
MiklPolikov
Нашёл документацию поновее. Карты Ver2.00 or later требуют инициализации с CMD8 .
Реализую и напишу про результат.
MiklPolikov
Получилось.
Сделал как нарисовано вот на этой схеме , из документа "Part_1_Physical_Layer_Simplified_Specification_Ver3.01_Final_100518-1"
Единственный подводный камень - перед ACMD нужно слать CMD55 , иначе карточка не поймёт ACMD и выдаст ошибку.
"Аварийный" ток 16ма опускается до 0 после того как карта снимает бит того что она в спящем режиме.
Ещё полезны программные примеры вот отсюда - там это реализовано .
http://elm-chan.org/fsw/ff/00index_e.html

kolobok0
Цитата(MiklPolikov @ Mar 12 2012, 01:11) *
...Ещё полезны программные примеры вот отсюда...


ссылк не работает. за инфу спасибо.

(круглый)
MiklPolikov
Цитата(kolobok0 @ Mar 12 2012, 14:50) *
ссылк не работает. за инфу спасибо.

У меня работает. http://elm-chan.org/fsw/ff/00index_e.html
MiklPolikov
Проблема всё-таки не решилась.
Делаю инициализацию как написал выше. Карта отвечает на команды, всё хорошо.
Но писать не хочет.
Шлю CMD24 , получаю ответ 0х00
Джу пока карта освободится, для этого отправляю сколько-то FF
Отправляю SD_START_TOKEN 0xFE ,
Отправляю 512 байт.
После этого пытаюсь получить ответ, отправляю в цикле FF , но ничего кроме FF не получаю.
Аналогичная ситуация с CMD25 , никакого ответа после блока данных.

У кого-нибудь есть мысли ?
MiklPolikov
Извиняюсь, проблема с записью была в кривом коде.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.