реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Зависает SD карта, Большой ток потребления и не реагирует ни на что
MiklPolikov
сообщение Mar 7 2012, 17:30
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Сделал проект с microSD картой + SPI и столкнулся с проблемой : с некоторыми картами не работает.

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

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


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

Кто-нибудь сталкивался ?


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 7 2012, 17:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



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


Судя по небольшому "аварийному" току, дело не в карте, а в ПО на МК. Проще говоря, имеет место конфликт уровней. Карта выставляет на какой-то ножке единичку, а МК - ноль, или наоборот. При проблемах с питанием из карточки просто повалил бы дым ...
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 7 2012, 17:53
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



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


Проверил - по ногам конфликта нет.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 7 2012, 18:25
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



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


Тогда проверьте, нет ли скачков питания при засыпании и пробуждении. Куда-то же эти 13 мА текут. Куда ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 7 2012, 20:23
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MiklPolikov @ Mar 7 2012, 21:30) *
Кто-нибудь сталкивался ?

А питание карты вы не коммутируете? Если да, то убедитесь, что ключ тянет хотя бы 1А
Go to the top of the page
 
+Quote Post
psL
сообщение Mar 8 2012, 05:23
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



А выводы неподключенные на разъеме карты имеются?
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 8 2012, 12:12
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(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ГБ. Может сейчас от него отказались ?


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 8 2012, 12:58
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Замкнули бы лучше этот резистор на время.
Неиспользуемые выводы карты в воздухе не брошены?

1. Правильный
2. Можно и на 167kHz
4. Мне такие не попадались
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 8 2012, 13:00
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата
Замкнули бы лучше этот резистор на время.

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

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

Брощены )) А нужно к земле ?


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 8 2012, 13:04
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

Нужно подтянуть к питанию карты. Некоторые экземпляры, бывает, как раз виснут из-за этого.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 8 2012, 13:50
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Подтянул неиспользуемые ноги DAT1 DAT2 к питанию. Ничего не изменилось .

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

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

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


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 8 2012, 14:06
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



1. Не менее
2. В неактивном, т.е. высоком

А времянки соблюдаются? После ответа карты холостой байт выдается?
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 8 2012, 15:09
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



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


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

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

Нашёл вот такую документацию.
Делаю всё в точности как нарисовано, после ответа на CMD0 поднимаю CS в высокий уровень и шлю 8 клоков.
Только не понимаю, почему в этой документации 8х4=64 ))
Прикрепленные файлы
Прикрепленный файл  spitiming_1.pdf ( 21.32 килобайт ) Кол-во скачиваний: 19
 


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 8 2012, 20:59
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Нашёл документацию поновее. Карты Ver2.00 or later требуют инициализации с CMD8 .
Реализую и напишу про результат.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 11 2012, 21:11
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Получилось.
Сделал как нарисовано вот на этой схеме , из документа "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


Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 08:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01483 секунд с 7
ELECTRONIX ©2004-2016