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

 
 
> Осваиваю MMC SPI mode, работает, но есть вопросы...
AndreyVN
сообщение Nov 15 2006, 12:33
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Всем привет!
Народ, кто с MMC в SPI режиме работал? Хочу уточнить следующий момент.
Я отправляю в карточку команду, которая состоит из 6 байт. Если верить спецификации, то ответ (R1) генериться карточкой после первого байта команды (в котором сидит код команды, CMD0, CMD1...).
Код который я использую, естественно, из Интернета:

Цитата
char MMC_cmd(char befF, unsigned int AdrH, unsigned int AdrL, char befH)
{

MMC_spi(0xff);
MMC_spi(befF);
MMC_spi( (unsigned char) (AdrH>>8) );
MMC_spi( (unsigned char) (AdrH & 0xff) );
MMC_spi( (unsigned char) (AdrL>>8) );
MMC_spi( (unsigned char) (AdrL & 0xff) );
MMC_spi(befH);
MMC_spi(0xff);
return MMC_spi(0xff);
}


Не могу понять, зачем перед первым и после последнего байтов шлются FF, и почему ответ читается после всей посылки, да еще и 2 раза по FF после команды.

Хотя, отмечу, код работоспособный.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Nov 16 2006, 06:49
Сообщение #2


Гуру
******

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



Правильно понимаете - нужно передавать 0xFF, и анализировать 7-й бит у принимаемых данных: в ответе он станет равен '0'.
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Nov 23 2006, 13:45
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Вот и еще вопросик возник.

Что-то не найду в спецификации подробного описания адресации массива данных.
Вроде адресация линейная. Читается из карты только сектор целиком, значит адресоваться должен тоже сектор. Но размер сектора я ведь могу изменить, (кажется размер сектора сидит в CSD регистре) тогда, то тот-же адрес будет ссылаться на другой байт (начало сектора).
Возникает какая-то неоднозначность. Где я ошибся?

И еще, если мне надо изменить 1 байт в MMC карте (например в таблице размещения файлов), получается нужно считать сектор, внести изменения и записать сектор. Других путей нет?
Go to the top of the page
 
+Quote Post



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

 


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


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