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

 
 
> SDC: ответ на CMD8 не корректен
Arlleex
сообщение Nov 13 2011, 18:58
Сообщение #1


Местный
***

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



Доброго времени суток. Работаю с микроконтроллером AT91SAM7X512 и SD картой памяти малого объема (2Гб).
При передаче команды CMD0 принимают ответ 0х01, как и положено.
Далее - по блок-схеме из спецификации на SD карту памяти, передаю команду CMD8 и получаю ответ (первый байт является байтом ответа R1) 0хС1, хотя должен получить так же 0х01.
Соответственно, данная ситуация выбила дальнейшую инициализацию SD карты из колеи.
Почему карта первым байтом ответа R7 (коим по идее должен быть ответ R1) является байт, значение которого равно 0хС1?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Arlleex
сообщение Nov 15 2011, 11:23
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 15 2011, 12:24
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 12:54
Рейтинг@Mail.ru


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