|
|
  |
SD Card - програмная реализация интерфейса, У кого нибудь есть примеры реализации взаимодействия с SD Card? |
|
|
|
Jan 9 2010, 09:15
|

Местный
  
Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719

|
Цитата(gnomik_ @ Jan 9 2010, 08:01)  на CMD8 отвечает 00 00 00 02 00 FF С какими параметрами посылается команда? Надо так: 48 00 00 01 AA 87 Карточка рабочая? Есть другая карта?
|
|
|
|
|
Jan 10 2010, 10:19
|

Участник

Группа: Участник
Сообщений: 20
Регистрация: 6-11-09
Пользователь №: 53 443

|
Цитата(KAlex @ Jan 9 2010, 19:15)  С какими параметрами посылается команда? Надо так: 48 00 00 01 AA 87 Карточка рабочая? Есть другая карта? Карточек 3 штуки(одна-HC). Все на компе пишутся и читаются нормально. Посылаю 255 клоков(сначала 100 клоков посылал) Посылаю CMD0(40 00 00 00 00 95) ответ не проверяю Посылаю 100 клоков Посылаю CMD8 (48 00 00 01 AA 87) жду 0 на CMD читаю ответ 00 00 00 02 00 FF Посылаю 100 клоков Посылаю CMD55 (77 00 00 00 00 65) жду 0 на CMD читаю ответ 2С 00 00 00 00 7F Посылаю 100 клоков Посылаю ACMD41 (69 40 FF 80 00 17) жду 0 на CMD читаю ответ 3F 81 FE 00 03 FF Посылаю 100 клоков........ Пишу по фронту, читаю по спаду, все делаю медленно(частота невелика). Может состояние линий во время пустых клоков у меня не правильное? Какое должно быть? Может с командами чего путаю?... Спасибо.
|
|
|
|
|
Jan 11 2010, 07:24
|

Местный
  
Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719

|
Без кода программы сказать что либо сложно. Здесь выкладывал исходники для начальной инициализации. Версия рабочая 100%.
|
|
|
|
|
Jan 11 2010, 08:27
|

Участник

Группа: Участник
Сообщений: 20
Регистрация: 6-11-09
Пользователь №: 53 443

|
Цитата(KAlex @ Jan 11 2010, 17:24)  Без кода программы сказать что либо сложно. Здесь выкладывал исходники для начальной инициализации. Версия рабочая 100%. Спасибо за ссылку. Пишу все на асме. Весь код кидать сюда наверное смысла нет. Пересмотрю все что написал и напаял. Чего-то надо ворошить. Сама не заработает. Результат отпишу.... Спасибо.
|
|
|
|
|
Jan 17 2010, 13:07
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 27-12-08
Пользователь №: 42 796

|
Доброе время суток..
Пытаюсь запустить известную всем FatFS на 1986ВЕ91Т (ядро Cortex-M3). Карта microSD 2 Gb подключена через SPI. Карта инициализируется, определяется ее тип и т.д., f_mount(..) выполняется успешно. Можно читать файлы и каталоги. Выполняется даже создание файла. НО! При попытке записи, закрытия файла или синхронизации - ошибка FR_DISK_ERR. Причина - в функции xmit_datablock - на переданный для записи блок данных карта отвечает 0xFF. Если файл создать на компьютере, записать в него какие-либо данные, то через f_write() запись пройдет, но только в пределах размера файла, вызов f_sync() или f_close() приведет к той же ошибке... FatFS настроена без ограничений кроме LFN. Попробовал несколько разных microSD карт - на всех одинаковое поведение. Где могут быть грабли? Помогите разобраться.
|
|
|
|
|
Feb 6 2010, 15:40
|
Местный
  
Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686

|
sonycmanУ меня логгер на работе, блоки больше 1040Байт не пробовал. Создам полоценный тест с разными размерами блоков в пн-вт. На 1040Байтах скорость была порядка 28-36КБайт/с. Есть утилита под винды, тестирует любой диск на запись методом: открыть файл, записать, закрыть (в описании сказано, по крайней мере). Она на данной флэхе выдавала похожие результаты: Код Block= 64 B. Speed=2.112 kB/s. Block=128 B. Speed=4.222 kB/s. Block=256 B. Speed=8.447 kB/s. Block=512 B. Speed=16.833 kB/s. Block= 1 kB. Speed=33.778 kB/s. Block= 2 kB. Speed=67.332 kB/s. Block= 4 kB. Speed=134.629 kB/s. Block= 8 kB. Speed=268.257 kB/s. Block= 16 kB. Speed=546.677 kB/s. Цитата Обязательно ли выполнять f_sync для каждых 24 байт? Важно не потерять данные (сохранить как можно большее кол-во записей логгера) при отключении питания, а так же важна надёжность записи. Есть, конечно, варианты, проводить периодически по таймеру f_sync, но опасаюсь. Проблема в том, что поток данных непредсказуем, т.е. неизвестна частота появления событий для логгирования. Есть ещё варианты?
Сообщение отредактировал Altemir - Feb 6 2010, 16:20
|
|
|
|
|
Feb 26 2010, 12:43
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 18-11-09
Из: Мск
Пользователь №: 53 718

|
У меня вопрос по записи данных на карту. Вроде все делаю как в даташите, шлю стартовый бит, команду записи, затем данные, crc16, end-bit, и жду по DAT_0 crc-статус. Но он почему то не приходит! По DAT_0 ловлю стартовый бит(0), который перед crc status должен быть, но ничего нет! Данные на карту записываются. Но если потом послать карте команду чтения, или еще записи, то ничего не происходит.
У меня вопрос по записи данных на карту. Вроде все делаю как в даташите, шлю стартовый бит, команду записи, затем данные, crc16, end-bit, и жду по DAT_0 crc-статус. Но он почему то не приходит! По DAT_0 ловлю стартовый бит(0), который перед crc status должен быть, но ничего нет! Данные на карту записываются. Но если потом послать карте команду чтения, или еще записи, то ничего не происходит.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|