AndreyVN 0 15 ноября, 2006 Опубликовано 15 ноября, 2006 · Жалоба Всем привет! Народ, кто с 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 после команды. Хотя, отмечу, код работоспособный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 15 ноября, 2006 Опубликовано 15 ноября, 2006 · Жалоба Если верить спецификации, то ответ (R1) генериться карточкой после первого байта команды Почитайте спецификацию со стр. 107 и ниже ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyVN 0 16 ноября, 2006 Опубликовано 16 ноября, 2006 · Жалоба Почитайте спецификацию со стр. 107 и ниже ;) Да, перечитал более внимательно, действительно до и после команды, следует подавать FF, как я догадываюсь это надо чтобы не прекращалось тактирование SPI интерфейса. Но теперь возник вопрос по таблице 43 (Timing Values). Все интервалы (Ncs, Ncr..), даны в некоторых интервалах, например от 1...8 байт. То есть, MMC может ответить после одного байта FF, а может зависнуть до 8 байт FF. А в исходном коде в нее кинули 2 байта FF и считываем ответ. Получается, следует слать до 8 байт высокого уровеня (FF) и анализировать готовность приемного буфера SPI интерфейса. Правильно я понимаю спецификацию MMC или нет ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 16 ноября, 2006 Опубликовано 16 ноября, 2006 · Жалоба Правильно понимаете - нужно передавать 0xFF, и анализировать 7-й бит у принимаемых данных: в ответе он станет равен '0'. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyVN 0 16 ноября, 2006 Опубликовано 16 ноября, 2006 · Жалоба Правильно понимаете - нужно передавать 0xFF, и анализировать 7-й бит у принимаемых данных: в ответе он станет равен '0'. Понял, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyVN 0 23 ноября, 2006 Опубликовано 23 ноября, 2006 · Жалоба Вот и еще вопросик возник. Что-то не найду в спецификации подробного описания адресации массива данных. Вроде адресация линейная. Читается из карты только сектор целиком, значит адресоваться должен тоже сектор. Но размер сектора я ведь могу изменить, (кажется размер сектора сидит в CSD регистре) тогда, то тот-же адрес будет ссылаться на другой байт (начало сектора). Возникает какая-то неоднозначность. Где я ошибся? И еще, если мне надо изменить 1 байт в MMC карте (например в таблице размещения файлов), получается нужно считать сектор, внести изменения и записать сектор. Других путей нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 23 ноября, 2006 Опубликовано 23 ноября, 2006 · Жалоба Но размер сектора я ведь могу изменить, (кажется размер сектора сидит в CSD регистре) тогда, то тот-же адрес будет ссылаться на другой байт (начало сектора). Возникает какая-то неоднозначность. Где я ошибся? В регистре CSD это поле только для чтения. Размер блока можно установить командой CMD16, но значение, отличное от 512, как правило, вызывает ошибку при попытке записи. Кроме того, CMD16 не является обязательной для реализации. И еще, если мне надо изменить 1 байт в MMC карте (например в таблице размещения файлов), получается нужно считать сектор, внести изменения и записать сектор. Других путей нет? Увы, нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hserg 0 11 января, 2007 Опубликовано 11 января, 2007 · Жалоба Народ, дайте, pls, ссылочку на MultiMediaCard system specification version 4.X на мыло [email protected] да и примеры какие желательно для PICа Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
umup 0 5 февраля, 2007 Опубликовано 5 февраля, 2007 · Жалоба вот Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться