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

 
 
> AVR и SD(mini SD) память, связь AVR с SD карточкой памяти
сэр_Илья
сообщение Feb 12 2006, 13:57
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 12-02-06
Пользователь №: 14 249



Нужно связать AVR c SD карточкой памяти (внешняя память для устройства на AVR). Кто нить может подсказать где подробно можно почитать про SD карточки - протокол связи, распиновка разьёма, потребляемый ток и т.д. Вобщем что есть по этой теме. В поисковиках искал подходящего ничего не нашёл. Хотябы пример устройства на AVR с SD карточкой (схема и подробное описание).
Заранее благодарен. Илья. sad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
R.Gorsky
сообщение Feb 14 2006, 10:28
Сообщение #2





Группа: Новичок
Сообщений: 7
Регистрация: 11-01-06
Из: Киев
Пользователь №: 13 039



Может не правильно инициализируешь карточку?

Вот вариант инициализации и работы с карточкой:
1. Настраиваем контроллер SPI
2. Устанавливаем CS=1 и передаем восемь байт 0xFF
3. Устанавливаем CS=0 и передаем CMD0 c аргументом 0 и CRC=0x95
4. Ждем ответа от карточки (посылаем в карточку 0xFF, пока не получим байт не равный 0xFF)
5. Если таймаут, увеличиваем счетчик попыток и если он меньше 3,
переходим к п.2. Если счетчик попыток = 3, вываливаемся с ошибкой.

6. Устанавливаем CS=0 и передаем CMD1 c аргументом 0 и CRC=0
7. Ждем ответа от карточки (посылаем в карточку 0xFF, пока не получим байт не равный 0xFF)
8. Устанавливаем CS=1
9. Если таймаут или ответ <> 0, увеличиваем счетчик попыток и если он меньше 3,
переходим к п.6. Если было три попытки выходим по ошибке. Если ответ = 0, карточка готова к работе

Читаем CSD

10. Устанавливаем CS=0 и передаем CMD9 c аргументом 0 и CRC=0
11. Ждем ответа от карточки (посылаем в карточку 0xFF, пока не получим байт не равный 0xFF)
12. При таймауте или при ответе <> 0, уст. CS=1 и переходим на обработку ошибки (п. 6)
13. Ждем от карточки токена SINGLE_BLOCK_READ (0xFE) (посылаем в карточку 0xFF, пока не получим байт не равный 0xFE)
14. При таймауте уст. CS=1 и переходим на обработку ошибки (п. 6)
15. Принимаем 16 байт CSD
16. Принимаем CRC (даже если не анализируем, т.к. карточка ждет 16 тактовых импульсов)
17. Устанавливаем CS=1 и выполняем анализ CSD.

Чтение блока данных

18. Устанавливаем CS=0 и передаем CMD17 c адресом блока данных (адрес должен быть кратен 512) и CRC=0
19. Ждем ответа от карточки (посылаем в карточку 0xFF, пока не получим байт не равный 0xFF)
20. При таймауте или при ответе <> 0, уст. CS=1 и переходим на обработку ошибки (п. 6)
21. Ждем от карточки токена SINGLE_BLOCK_READ (0xFE) (посылаем в карточку 0xFF, пока не получим байт не равный 0xFE)
22. При таймауте или получении ответа <> 0xFE, уст. CS=1 и переходим на обработку ошибки (п. 6)
23. Принимаем 512 байт данных
24. Принимаем CRC (даже если не анализируем, т.к. карточка ждет 16 тактовых импульсов)
25. Устанавливаем CS=1 и разбираемся с прочитанными данными

Скорость обмена и длительность таймаутов определяется значениями в CSD, пока он не прочитан, можно установитьс запасом - 200мс. Скорость обмена должна быть в начале работы не более 400 кбит.

В интернет доступны примеры для AVR, например
http://hubbard.engr.scu.edu/embedded/avr/avrlib
www.ghielectronics.com
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- сэр_Илья   AVR и SD(mini SD) память   Feb 12 2006, 13:57
- - Alexey Belyaev   Эх. ДОРОГОЙ! Искать лучше надо было. Ибо всё у...   Feb 12 2006, 15:26
- - R.Gorsky   Старые версии стандартов MMC v.3.1 (2003г.) и SD M...   Feb 12 2006, 17:44
- - Alexey Belyaev   Может ты в курсе почему MMC/SD 16Mb не хочет отдав...   Feb 12 2006, 18:54
|- - R.Gorsky   Цитата(Alexey Belyaev @ Feb 12 2006, 20:5...   Feb 13 2006, 11:08
- - Alexey Belyaev   Я ж сказал что буферы ваще не читаются, не только ...   Feb 13 2006, 12:05
- - Alexey Belyaev   сделал всё как предложено выше. в результате такая...   Feb 15 2006, 11:51
- - R.Gorsky   Как долго ты ждешь ответа после CMD1 и что возвращ...   Feb 15 2006, 14:05
|- - Alexey Belyaev   Цитата(R.Gorsky @ Feb 15 2006, 20:05) Как...   Feb 15 2006, 16:37
- - aaarrr   После снятия CS нужно передать пустой байт, иначе ...   Feb 15 2006, 15:02
- - R.Gorsky   Цитатаunsigned char Read_Byte_MMC (void) { uns...   Feb 16 2006, 09:55
- - Alexey Belyaev   Странно куда он делся, но у меня он есть А вот то...   Feb 16 2006, 10:01
- - R.Gorsky   В моем устройстве карточка и процессор питаются от...   Feb 16 2006, 11:11


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

 


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


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