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

 
 
> SDHC тормозит
avp
сообщение Jun 19 2009, 13:47
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 10-10-06
Пользователь №: 21 175



Привет All!
Замаялся с сабж. Карта SDHC 4 Gb от Toshiba. Режим SPI. Контакты 8 и 9 подтянуты к "+" через резисторы 10К. Макс. частота SPI_CLK на которой добился ее "работоспособности" 40 кГц...

При этом, MMC 16 Mb (другой нет) на том же не скоростном в смысле разводки "железе" и том же коде (после инициализации) легко работает на 1.5 мГц. Видимо дело все же в пресловутой инициализации SDHC.
Кратко алгоритм для SDHC без ветвей обработки других типов карт:

СMD_GO_IDLE_STATE
CMD_SEND_IF_COND //(возврат pattern нормальный)

for (ACMD41_RETRY_CNT){
СMD_APP_CMD
CMD_SD_SEND_OP_COND //(с параметром 0x40000000 - поднять HCS)

if (R1_OK) // responce R1 OK?
break;

Delay1sec(); // 1 сек задержка
}

====== Начало общей части для любого типа карт ======
CMD_READ_OCR // после первой же попытки (через 1 сек) возвращает
POWER_UP=OK, HCS=1
SPI_Mode(FAST_SPI); // поднял скорость
SD_SRC(OFF);
SD_SET_BLOCKLEN(512); // по-идее, здесь "возможен/должен быть" параметр 2048, но он и 1024 или 4096 возвращают
// Illegal Command
SD_RD_Sector(ROOT_DIR,DEV_EXCH_BUF); // читаю сектор - одни 0x0.

===============================================
О том, какие еще варианты пробовал не пишу - не помогает. Впечатление такое, что карта живет своей асинхронной жизнью. Если задать SPI_CLK порядка 300 Гц, то в буфере чтения можно найти отдельные последовательности реальных данных.
Возможно может быть ключом следующее:

Если "крутить ACMD41 в связке с CMD_READ_OCR", то в определенный момент самый младший разряд OCR выставляется в 1.
После этого сбрасывается в 0. Вопрос - зачем производитель выставляет на обозрение бит, зарезервированный для его нужд? Но как сие "прокачать" пока не нашел.

Т.е. цикл выглядит так:
Cnt = ACMD41_RETRY_CNT;

do {
СMD_APP_CMD
CMD_SD_SEND_OP_COND //(с параметром 0x40000000 - поднять HCS)
// 1 сек задержку не включаем
CMD_READ_OCR

if (OCR_BIT0) {
... // возможно тут надо как-то подтолкнуть инициализацию?
}

Cnt--;
} while (!OCR_POWER_UP_BIT & Cnt);
===============================================

Буду крайне признателен за помощь - подгружаю DEV_EXCH_BUF с одной стороны по DMA и вдруг такие грабли с другой. Откликнитель, плз, кто в курсе дела.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Jun 23 2009, 19:19
Сообщение #2


Гуру
******

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



Пример выпиливать долго, если только совсем без него никак...

Nrc между командами выдерживаете? Другие карты пробовали?
Go to the top of the page
 
+Quote Post
avp
сообщение Jun 24 2009, 15:29
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 10-10-06
Пользователь №: 21 175



Цитата(aaarrr @ Jun 23 2009, 22:19) *
Пример выпиливать долго, если только совсем без него никак...

Nrc между командами выдерживаете? Другие карты пробовали?

В общем, почти получилось - инициализация и чтение корневого сектора уверенное на 1.5 МГц (больше пока не пробовал). С записью пока неустойчиво. Алгоритм инициализации не изменял, Ncr также прежний, но разъяснения в даташит касательно TAAC,NSAC и R2W_FACTORa заставили несколько изменить код ф-ии отправки команд на карту. Там же надо "подчищать" SPI-буфер перед операцией.

Думаю это последний вопрос перед закрытием темы - какая обвязка карты у Вас на плате? На той, что у меня только PullUp 10К резисторы. По даташиту должно быть 50-100К. Но думаю на DI и DO нужны еще и емкости. Не люблю этого в цифровой техники, но даже со всеми выше указанными изменениями чтение было нестабильное, пока не подключил осциллограф. Если встать щупом на DO, то чтение становится стабильным. Получается я внес доп. емкость. Начинал с 16Мб ММС и все было Ок при текущей схемотехнике. В Инете встретил статью, где ставят до 3-х емкостей. Как сделано у Вас для SDHC?

Спасибо за потраченное время и участие.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 10:42
Рейтинг@Mail.ru


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