|
Промлема инициализации SD-card в SD mode, Промлема инициализации SD-card в SD mode |
|
|
|
Mar 28 2012, 09:27
|
Группа: Новичок
Сообщений: 5
Регистрация: 27-03-12
Пользователь №: 71 035

|
Я читаю данные, которые изначально были на карте, а не те, которые пытался записать.
|
|
|
|
|
Mar 30 2012, 13:32
|

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

|
Цитата(nikita1584 @ Mar 27 2012, 20:05)  Считаю CRC для данных правильно, подтвержением тому - совпадение вычисленной моей CRC и полученной от карты при чении. Как то не вяжется. У Вас есть блок данных для записи, для него считаем CRC16. Как можно получить значение crc от карты и сравнить со своим значением, если блок не пишется?
|
|
|
|
|
Mar 30 2012, 13:44
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(KAlex @ Mar 30 2012, 17:32)  Как можно получить значение crc от карты и сравнить со своим значением, если блок не пишется? Проверить работу CRC можно при чтении. Цитата(nikita1584 @ Mar 28 2012, 13:27)  Я читаю данные, которые изначально были на карте, а не те, которые пытался записать. Опишите максимально подробно, что происходит на шине после CMD24 - токены, ответы, BUSY и т.д.
|
|
|
|
|
Apr 3 2012, 06:04
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 14-03-11
Пользователь №: 63 590

|
не хочу заводить новую тему о SD-картах, продолжу тут. Установил размер чтения 1024 бита (2 сектора). читаю командой CMD17, каждый раз новый сектор (не последующий). Задержка между посылкой команды и началом передачи данных ~500 мкс. Возможно ли эту задержку уменьшить как минимум на порядок? карта Inno Disk 2GB, class 10.
|
|
|
|
|
Apr 3 2012, 08:01
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 14-03-11
Пользователь №: 63 590

|
а как ведут себя карты с индексом скорости х150? например Transcend 133x SD 2 Гб (TS2GSD133). за счет чего вырастает скорость чтения у карт разных классов?
|
|
|
|
|
Apr 3 2012, 11:52
|
Группа: Новичок
Сообщений: 5
Регистрация: 27-03-12
Пользователь №: 71 035

|
отправляю CMD24: 0x580010080065 получаю ответ 0x18000009005D отправляю данные (512 байт + старт + CRC + стоп), протактировав карточку до этого тактов 300 тактов: 0x00123456 0x789ABCDE 0xF0123456 0x789ABCDE 0xF0123456 0x789ABCDE 0xF0123456 0x789ABCDE ... 0x789ABCDE 0xFCD67DEF 0x92352A7D 0x1FFFFFFF т.е. CRC = CD67 DEF9 2352 A7D1 первый ноль в первом блоке - старт бит затем я тактирую около 6000 тактов читаю статус CMD13: 0x4D000009003F респонс от CDM13: 0x0D000009003F далее, читаю CMD17: 0x51001008005F ответ: 0x110000090067
линия DAT0 после попытки записи в высоком состоянии старт бит для данных для записи в режиме SD - это один такт нулей или как SPI - 0xFC?
Сообщение отредактировал nikita1584 - Apr 3 2012, 11:56
|
|
|
|
|
Apr 10 2012, 08:20
|

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

|
Цитата(nikita1584 @ Apr 3 2012, 15:52)  читаю статус CMD13: 0x4D000009003F респонс от CDM13: 0x0D000009003F Кажется я понял. RCA нулевой. А как посылается CMD7? И что в ответ?
|
|
|
|
|
Apr 11 2012, 09:32
|
Группа: Новичок
Сообщений: 5
Регистрация: 27-03-12
Пользователь №: 71 035

|
Извиняюсь, я не правильно написал, RCA не нулевой. 13-ю команду я посылаю в таком виде: CMD13: 0x4D00020000B1 респонс на CMD13: 0x0D000009003F
выбираю карточку я так CMD7: 0x47000200003F
Было замечено следующее: после попытки записать блок 17-й командой и тактирования, на линии данных я увидел 0xFFFF....FFFF EFE FFFF....FFFF, значит ли это что где-то ошибка?
Ещё я пробовал записать 25-й командой, остонавливаю 12-й командой и спрашиваю статус 13-й (респонс на 13-ю команду такой же). На осциллографе я видел что линия DAT0 находилась в низком состоянии некоторое время, но блок всё равно не записался
может я не тот адрес указываю при чтении.. (задаю такой же как на запись)
|
|
|
|
|
Apr 11 2012, 20:06
|
Группа: Новичок
Сообщений: 5
Регистрация: 27-03-12
Пользователь №: 71 035

|
Большое спасибо тем кто пытался помочь!
Я до записи попробовал послать 16-ю команду (установить длину блока), потом 23-й командой установил количество блоков, равное единице и потом ACMD22 поставил количество блоков, которое должно быть записано. После этого попытался записать 25-й командой (WRITE_BLOCK_MULTIPLE), и попытка удалась.
Кстати, в респонсе от CMD3 устанавливается 5-й бит статуса, т.е. APP_CMD что значит "The card will expect ACMD, or an indication that the command has been interpreted as ACMD" Хотя до того я 55-ю не посылал, а посылал вторую.
Сообщение отредактировал nikita1584 - Apr 11 2012, 20:08
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|