|
MMC по 1 байту, Работа с MMC на слабом MCU |
|
|
|
Sep 24 2008, 09:19
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 28-01-05
Пользователь №: 2 272

|
Добрый день! Может кто в курсе? Можно ли читать MMC по одному байту с любого адреса. Можно установить длину блока - есть такая команда. Вопрос в том адрес блока в этом случае считается с учётом установленной длины или он всё равно всегда кратен 512 байт? А то уж больно геморно с ней работать буфферы по 512 байт отводить.
|
|
|
|
|
Sep 24 2008, 09:59
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 28-01-05
Пользователь №: 2 272

|
Была такая мысль. Но это уже больно накладно. При выводе звука 16 кгц каждые 64 мс по spi читать 512 байт не получится интересно всё таки. при длине блока 1 байт как вычисляется адрес блока? приёдтся экспепримент наверное ставить
|
|
|
|
|
Sep 24 2008, 11:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата Читать карточку можно только блоками. Неправильно. См. описание параметра READ_BL_PARTIAL в регистре CSD Цитата Не старайтесь решить задачу вывода изображения и звука на AVR. Возьмите дешёвый ARM, например LPC2103. Сделаете гораздо быстрее. Я бы не был столь категоричен. http://pol-sem.narod.ru/polymuson/polymuson.htmХотя сам бы делал на ARM:)
--------------------
aka Vit
|
|
|
|
|
Sep 24 2008, 11:30
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(etoja @ Sep 24 2008, 14:58)  Длина блока зашита в карточку и работать с другой длиной блока не будет. Читать карточку можно только блоками. С произвольного адреса - нельзя. Для карточек более 2Гбайт размер блока может быть 1024 байта. Не старайтесь решить задачу вывода изображения и звука на AVR. Возьмите дешёвый ARM, например LPC2103. Сделаете гораздо быстрее. Это все не так! Вам надо внимательней читать спецификацию Если брать CSD версии 1.0 ( standart capacity) то там есть параметр READ_BL_LEN он обычно 512 ( но для карт больше 1 гб т.е. в районе 2 GB это максимум для standart capacity READ_BL_LEN = 1024. Но этот параметр не влияет на чтение, при чтении по умолчанию BLOCK_LEN = 512. И больше 512 его устанавливать нельзя! (Block Length set by CMD16 can be set up to 512 bytes regardless of READ_BL_LEN.) к тому же! ВЫ МОЖЕТЕ читать хоть по байту! Главное не пересекать границу 512 байтового сектора! ( у standart capacity для чтения выставляется абсолютный адрес байта! ) Block read is block oriented data transfer. The basic unit of data transfer is a block whose maximum size is always 512 bytes. Smaller blocks whose starting and ending address are entirely contained within 512 bytes boundary may be transmitted.
|
|
|
|
|
Sep 25 2008, 05:10
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 28-01-05
Пользователь №: 2 272

|
Спасибо!!!!!!! т.е. можно для карт меньше 2 Гб по времени конечно да немного накладно получится 1. Установка длины блока (т.к. в других ф-циях длина нужна512) 2. CMD17 чтение одного ну или двух байт в среднем если на команду допустить передачу 10ти SPI байт то опять с запасом передать для доступа к байту нужно 30 байт при spi clock = CLC/2 при 16 МГЦ общее время получится примерно 15 мкс при прерываниях порядка 64 мкс вполне приемлимо!!! Может можно обойтись и без установки длины блока просто останавливать приём байт по SPI ??? - нужно будет почитать Ещё раз спасибо!
Сообщение отредактировал Пришелец - Sep 25 2008, 05:16
|
|
|
|
|
Sep 25 2008, 07:31
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата А на каких картах не работало случайно размером не более 2Гб? 512МВ старые работали, новее - нет, 1GB уже ниодной с произвольным доступом не досталось, 128МВ и 256МВ не попадалось без произвольного доступа. Все были MMCmobile (в основном Transcend), потому как обычных MMC просто не знаю, где ещё бывают. Вот на столе валяется в упаковке TS512MRMMC4 Transcend - у неё произвольного доступа нет. ЗЫ. Программиста уже перенапрягли и он родил правильную фирмварю. Но неприятный осадок остался8-P Так что эта карточка будет использована  Но не для воспроизведения звука. Цитата Хотя о явной связи этого примечания и READ_BL_PARTIAL ничего не говорится. Смотри описание полей регистра CSD - там однозначно описано, что размер блока определяется READ_BL_LEN(Table 3-16), возможность произвольного чтения внутри блока READ_BL_PARTIAL (Table 3-17).
--------------------
aka Vit
|
|
|
|
|
Sep 28 2008, 01:59
|
Группа: Участник
Сообщений: 6
Регистрация: 26-09-08
Пользователь №: 40 496

|
, ребята, то есть все таки можно подключить ммс или сд карточку к тини 2313 с 128 байтами озу ?
|
|
|
|
|
Sep 28 2008, 09:03
|

За битами по регистрам гоняюсь
  
Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446

|
Цитата(Symbiosis @ Sep 28 2008, 05:59)  , ребята, то есть все таки можно подключить ммс или сд карточку к тини 2313 с 128 байтами озу ? А почему бы и нет? Нужно будет сделать программный SPI и всё. Полноценную поддержку файловой системы сделать нелегко, ну а если просто читать и писать файлы, то нет проблем. Например: http://toxygen.net/tmp/?enКстати, неплохой плеер, я его собирал на Tiny2313 без всяких изменений, FUSE выставил, и всё.
--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|