|
SDHC vs SD. Идентификация карты., Не устанавливается "power-up status bit" в OCR |
|
|
|
Mar 28 2008, 10:25
|

Местный
  
Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719

|
Порядок инициализации: Код send_comstr( CMD_0, 0, 6); ocr = 0; do { send_comstr(CMD_55, 0, 6); send_comstr(ACMD_41, ocr, 6); ocr = (comstr->arg3)|(comstr->arg2<<8)|(comstr->arg1<<16)|(comstr->arg0<<24); } while (!(comstr->arg0 & 0x80)); У обычной SD через два-три цикла бит power-up устанавливается. SDHC отвечает, ответные аргументы и crc совпадают с SD, но power-up не устанавливается. Нормального даташита на HC нет. Может там другой порядок идентификации.
|
|
|
|
|
Mar 29 2008, 13:32
|
Местный
  
Группа: Свой
Сообщений: 201
Регистрация: 23-01-06
Из: Msk
Пользователь №: 13 490

|
Цитата(KAlex @ Mar 28 2008, 13:25)  Порядок инициализации: Код send_comstr( CMD_0, 0, 6); ocr = 0; do { send_comstr(CMD_55, 0, 6); send_comstr(ACMD_41, ocr, 6); ocr = (comstr->arg3)|(comstr->arg2<<8)|(comstr->arg1<<16)|(comstr->arg0<<24); } while (!(comstr->arg0 & 0x80)); У обычной SD через два-три цикла бит power-up устанавливается. SDHC отвечает, ответные аргументы и crc совпадают с SD, но power-up не устанавливается. Нормального даташита на HC нет. Может там другой порядок идентификации. См. ссылку в посте (про команду CMD8) - http://electronix.ru/forum/index.php?showtopic=35898
|
|
|
|
|
Mar 30 2008, 07:31
|

Местный
  
Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719

|
Я правильно делаю? После CMD0 посылаю CMD8 - не отвечает. SD не HC тоже не отвечают, но работают(power-up устанавливается). Код send_comstr( CMD_0, 0, 6); ocr = 0; do { send_comstr( CMD_8, 0, 6); // !!! нет ответа send_comstr(CMD_55, 0, 6); send_comstr(ACMD_41, ocr, 6); ocr = (comstr->arg3)|(comstr->arg2<<8)|(comstr->arg1<<16)|(comstr->arg0<<24); } while (!(comstr->arg0 & 0x80)); На 55 и 41 отвечает. Работаю с ARM7 под Jtag. Проходил пошагово. В софте ошибок нет. И может главное - работаю в SD-mode.
|
|
|
|
|
Apr 9 2008, 07:13
|

Местный
  
Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719

|
Цитата(skripach @ Apr 8 2008, 15:38)  1)Как посчитать CRC для разных команд? или где взять посчитаные? Код unsigned char calc_crc7(unsigned char *ptr, signed char count ){ char crc=0; unsigned char i,data; while (count--) { data=*ptr++; for (i=0;i<8;i++) { crc <<= 1; if ((data & 0x80)^(crc & 0x80)) crc ^=0x09; data <<= 1; } } return((crc<<1)|1); } Цитата(skripach @ Apr 8 2008, 15:38)  2)И команды и ответы на команды по линии CMD? Да. Цитата(skripach @ Apr 8 2008, 15:38)  3)В SD-mode данные поступают по 4-м линиям, порядок бит? Как распазнаётся первый байт данных? Всегда старшим вперед. При 4-линиях старшая тетрада вперед. После отсылки команды на чтение данных ждем(не забывая CLC) "0" на DAT0 - это стартовый бит. Далее пошли данные.
|
|
|
|
|
Apr 10 2008, 22:59
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
В архиве моя функция по расчету CRC7 с подробнейшими коментариями + пример 'ручного' расчета + дока по CRC вообще. Надеюсь кому-то будет полезно. P.S. Возможно функция не самая оптимальная но работает.
Прикрепленные файлы
CRC7.rar ( 282.14 килобайт )
Кол-во скачиваний: 224
--------------------
Делай что должен и будь что будет.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|