|
SDC: ответ на CMD8 не корректен |
|
|
|
 |
Ответов
|
Nov 15 2011, 11:23
|

Местный
  
Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264

|
Цитата Я имел в виду именно NRC, а не NCR. После получения ответа от карты нужно выдать один пустой байт при нулевом CS перед следующей командой. Пустой - значит 0x00 или 0xFF? Нет, такой задержки не выдерживал, да и не было указано в спецификации на SD (по крайней мере в моей), так же как и не было указано выдерживать 80 импульсов перед подачей команды CMD0. Можете ли вы скинуть ссылку или прикрепить сюда файл вашей спецификации, поскольку, чувствую, что что-то не то у меня. (У меня спецификация версии 2.00 физический уровень, и почему-то с сокращениями, не указано нигде никаких временных диаграмм, и т.д.). // Передача команды CMD0 SPI_Enable(AT91C_BASE_SPI0); // Включение SPI0 SPI_Write(AT91C_BASE_SPI0, 1, 0x40); // Запись первого байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF SPI_Write(AT91C_BASE_SPI0, 1, 0x00); // Запись второго байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF SPI_Write(AT91C_BASE_SPI0, 1, 0x00); // Запись третьего байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF SPI_Write(AT91C_BASE_SPI0, 1, 0x00); // Запись четвертого байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF SPI_Write(AT91C_BASE_SPI0, 1, 0x00); // Запись пятого байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF SPI_Write(AT91C_BASE_SPI0, 1, 0x95); // Запись шестого(последнего) байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF while(response==0xFF) { SPI_Write(AT91C_BASE_SPI0, 1, 0xFF); // Сдвиг "1" на линию данных response=SPI_Read(AT91C_BASE_SPI0); // Чтение данных } SPI_Write(AT91C_BASE_SPI0, 1, 0x00); // Запись шестого(последнего) байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF SPI_Disable(AT91C_BASE_SPI0); // Отключение SPI0 //******************************************************************************** ********************** // Передача команды CMD8 SPI_Enable(AT91C_BASE_SPI0); // Включение SPI0 SPI_Write(AT91C_BASE_SPI0, 1, 0x7A); // Запись первого байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF SPI_Write(AT91C_BASE_SPI0, 1, 0x00); // Запись второго байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF SPI_Write(AT91C_BASE_SPI0, 1, 0x00); // Запись третьего байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF SPI_Write(AT91C_BASE_SPI0, 1, 0x00); // Запись четвертого байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF SPI_Write(AT91C_BASE_SPI0, 1, 0x00); // Запись пятого байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF SPI_Write(AT91C_BASE_SPI0, 1, 0xFD); // Запись шестого(последнего) байта команды CMD0 response=SPI_Read(AT91C_BASE_SPI0); // В ответе 0xFF while(response==0xFF) { SPI_Write(AT91C_BASE_SPI0, 1, 0xFF); // Сдвиг "1" на линию данных response=SPI_Read(AT91C_BASE_SPI0); // Чтение данных } USART_Write(AT91C_BASE_US0, response, 0); SPI_Disable(AT91C_BASE_SPI0); // Отключение SPI while(1); }В USART после передачи команды CMD58 приходит тот же ответ, первый байт 0xC1, и, допустим, даже если сдвинуть на несколько битов влево, получим нелегальную команду, а это означает (по блок-схеме из спецификации), что данная карта памяти не является SD.
Сообщение отредактировал Arlleex - Nov 15 2011, 11:48
|
|
|
|
|
Nov 15 2011, 12:24
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Arlleex @ Nov 15 2011, 15:23)  Пустой - значит 0x00 или 0xFF? 0xFF. Удобно отправлять его после получения ответа перед снятием CS. Цитата(Arlleex @ Nov 15 2011, 15:23)  Можете ли вы скинуть ссылку или прикрепить сюда файл вашей спецификации, поскольку, чувствую, что что-то не то у меня. (У меня спецификация версии 2.00 физический уровень, и почему-то с сокращениями, не указано нигде никаких временных диаграмм, и т.д.).
Part1.pdf ( 649.69 килобайт )
Кол-во скачиваний: 842Для работы достаточно этого и имеющейся у вас упрощенной 2.0
|
|
|
|
Сообщений в этой теме
Arlleex SDC: ответ на CMD8 не корректен Nov 13 2011, 18:58 aaarrr Цитата(Arlleex @ Nov 13 2011, 22:58) Поче... Nov 13 2011, 20:10 Arlleex Опрос ответа на команду со стороны ведущего устрой... Nov 13 2011, 23:09 aaarrr Цитата(Arlleex @ Nov 14 2011, 03:09) А чт... Nov 13 2011, 23:34 Arlleex Но ведь она не шлет ответ R7 как таковой.
Она шлет... Nov 14 2011, 09:51 aaarrr Цитата(Arlleex @ Nov 14 2011, 13:51) Може... Nov 14 2011, 11:44 Arlleex Это программа, которая передает команду CMD8 [0x48... Nov 14 2011, 15:44 aaarrr Цитата(Arlleex @ Nov 14 2011, 19:44) Похо... Nov 14 2011, 15:58 Arlleex Ну да, получается так. Но, ведь как так получается... Nov 14 2011, 16:57 aaarrr Цитата(Arlleex @ Nov 14 2011, 20:57) На м... Nov 14 2011, 18:35  Arlleex Цитата(aaarrr @ Nov 14 2011, 22:35) Я не ... Nov 14 2011, 19:36   aaarrr Цитата(Arlleex @ Nov 14 2011, 23:36) Для ... Nov 14 2011, 19:43 DmitryM Я бы предположил еще что nCS успевает вернуться в ... Nov 14 2011, 19:05 Arlleex Хорошо, попробую не выключать SPI после последней ... Nov 14 2011, 19:48 aaarrr Цитата(Arlleex @ Nov 14 2011, 23:48) Тогд... Nov 14 2011, 20:00 Arlleex Посмотрел осциллограмму сигнала на линии SPCK во в... Nov 14 2011, 23:38 aaarrr Цитата(Arlleex @ Nov 15 2011, 03:38) Дале... Nov 15 2011, 00:18  Arlleex Цитата(aaarrr @ Nov 15 2011, 04:18) Ну, е... Nov 15 2011, 07:57   aaarrr Цитата(Arlleex @ Nov 15 2011, 11:57) Спас... Nov 15 2011, 09:49 Arlleex Цитата...NRC не забыто случайно?
Оно не забыто цик... Nov 15 2011, 10:11 aaarrr Цитата(Arlleex @ Nov 15 2011, 14:11) Оно ... Nov 15 2011, 11:04 Arlleex Вот видимо из за этого времени NRC и были проблемы... Nov 15 2011, 13:30 aaarrr Цитата(Arlleex @ Nov 15 2011, 17:30) Верн... Nov 15 2011, 13:35 Arlleex Все, нашел.
Ну что же, большое человеческое спасиб... Nov 15 2011, 16:35 aaarrr Цитата(Arlleex @ Nov 15 2011, 20:35) Наде... Nov 15 2011, 16:39 Arlleex Добрался до команды CMD58.
Что собственно она у ме... Nov 15 2011, 17:41 aaarrr Цитата(Arlleex @ Nov 15 2011, 21:41) Хотя... Nov 15 2011, 17:46  Arlleex Цитата(aaarrr @ Nov 15 2011, 21:46) Он до... Nov 15 2011, 17:49 aaarrr Пардон, мимо смотрел.
А ACMD41 отправили? Без нее... Nov 15 2011, 18:01 Arlleex По блок-схеме из спецификации сначала передается к... Nov 15 2011, 18:14 aaarrr Первый раз CMD58 подавать не обязательно - это нуж... Nov 15 2011, 19:15 Arlleex Ясно.
Насчет команды ACMD41 и остальных ACMDx: пер... Nov 15 2011, 19:38 aaarrr Цитата(Arlleex @ Nov 15 2011, 23:38) Насч... Nov 15 2011, 19:47 Arlleex А какую файловую систему используют SD карты? Nov 17 2011, 19:34 aaarrr Стандарт подразумевает использование FAT16 и FAT32... Nov 17 2011, 19:59 Arlleex Еще раз доброго времени суток.
Перед тем, как испо... Nov 20 2011, 18:59 aaarrr Цитата(Arlleex @ Nov 20 2011, 22:59) Верн... Nov 20 2011, 21:45 Arlleex Цитата7.3.3.2 Start Block Tokens and Stop Tran Tok... Nov 23 2011, 18:22 aaarrr В этой строке представляется не совсем корректным ... Nov 23 2011, 18:38 Arlleex Ясно, т.е. они имели ввиду длину всего передаваемо... Nov 23 2011, 18:49 aaarrr Цитата(Arlleex @ Nov 23 2011, 22:49) Это ... Nov 23 2011, 18:59 Arlleex Доброго времени суток.
При передаче данных на SD к... Nov 27 2011, 18:32 aaarrr В режиме SPI CRC по умолчанию отключен. Nov 27 2011, 18:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|