Подключение Sd Карты К Микроконтроллеру

Всемирная история в 6 томах том 5. Cкачать fb2 - 11,7 Мбайт Читать 317 страниц онлайн. Бесплатно, без регистрации и без смс. Том посвящен ключевым проблемам долгого xix века от Великой французской революции. Новое шеститомное издание Всемирная история подводит итоги работы историков за последние. Купить книгу «Всемирная история. Мир в xix веке. На пути к индустриальной.

Автор: nick14 Просмотров: 16456 В данной статье рассмотрим один из способов применение в своих устройствах SD (Secure Digital Memory Card) далее SDC и MMC карт (Multi Media Card), которые на сегодняшний день являются самыми популярными картами памяти для различных устройств как в промышленности, так и в быту. Не составляет исключение и радиолюбители, правда конструкций с практическим применением карт памяти не так и много. Надеюсь эта статья поможет реализовать задуманное. С картой можно работать обращаясь к данным непосредственно по адресу сектора без применения файловой системы, что в некоторых случаях упрощает разработку устройства. Именно этот способ мы и рассмотрим далее. Подключение к микроконтроллеру. В качестве примера возьмем карту SD/MMC максимальной емкостью до 2 ГБ, у меня под рукой оказалась ( отличается от старшего брата в основном только меньшими размерами ) на нее и будем ориентироваться.

  1. Подключение Sd Карты К Микроконтроллеру Pic
  2. Подключение Sd Карты К Микроконтроллеру Stm32
  3. Карта Памяти Микро Сд

Карты могут работать в двух режимах обмена данными - это MMC протокол и SPI. Нас интересует, он наиболее предпочтительный для нашей задачи. Протокол SPI позволяет вести обмен данными на высокой скорости и задействовав при этом минимальное количество выводов микроконтроллера.

Подключение sd/mmc карт памяти. Эти устройства идеально подходят для встраиваемых систем. Что необходимо знать при подключении SD card. К микроконтроллеру. В данном посте я продемонстрирую примитивный способ подключения SD карты к микроконтроллеру. SD или может microSD? Самый простой способ, это припаять SD карту к проводникам, а проводники к входам контролера. Подключение к микроконтроллеру. В качестве примера возьмем карту SD/MMC максимальной емкостью до 2 ГБ, у меня под рукой оказалась microSD ( отличается от старшего брата в основном только меньшими размерами) на нее и будем ориентироваться.

Кроме этого практически все микроконтроллеры имеют на своем борту аппаратный модуль SPI и задача сопряжения устройства с картой легко реализуется. Подключение к МК SD, microSD карт. Подключение к МK MMC карты. Работоспособность карты сохраняется при питании от 2 до 3,6 вольт, соответственно удобно применить микроконтроллер (далее МК) с таким же питанием или по крайней мере в этом диапазоне, к примеру 3,3 вольта (PIC18F25k20). Если МК применен с 5 вольтовым питанием необходимо согласовать уровни сигналов.

Все MMC/SDC имеет в своем составе встроенный микроконтроллер управляющий flash-памятью (чтения, записи и др.) при помощи специальных команд. Ниже в таблице показан набор основных команд при работе с картой. Желтым цветом выделены команды при работе с SDC картами.

Набор основных команд. Кадр команды имеет фиксированную длину 6 байт. Байты передаются последовательно, начиная с номера индекса команды CMD(0-64), потом 4 байт аргумента и 1 байта контрольной суммы (CRC). Проверка CRC в режиме SPI не является обязательной, но само поле должно быть заполнено для целостности кадра. Исключение составляет команда CMD0, где CRC должно иметь правильное значение, т.к. Режим SPI до получение этой команды еще не активирован.

На рисунке № 1 показан формат передачи команды и получения ответа от карты. Более подробно по командам можно прочитать в спецификации от MMCA и SDCA. Рис.№1 Как видно из рисунка после передачи кадра команды необходимо продолжать чтение байтов (Ncr) от microSD до получения ответа (R1), при этом уровень CS должен быть активным '0'. В зависимости от индекса команды ответ может быть не только R1 (см.

Набор основных команд ) на CMD58 ответ R3 (R1 и завершающее 32-битное значение OCR), а некоторым командам нужно больше времени NCR и они ответ будет R1b. Это ответ R1, за которым идет флаг занятости (сигнал на линии 'DO' удерживается картой в низком уровне, пока продолжается внутренний процесс). Контроллер хоста должен ждать окончания процесса, пока 'DO' не перейдет в состояние высокого уровня (т.е. Дождаться 0xFF). А так же R2 при запросе состояния регистра STATUS. Ответ R1 содержит 1 байт, его структуру можно посмотреть в таблице ниже.

Ответ R2 состоит из двух байт, первый байт R1 и второй R2 (см. Таблицу структуры R2).

А ответ R3 соответственно из 5 байт. Ответ R1 при значении 0х00 означает успешное завершение команды, иначе будет установлен соответствующий флаг. Структура ответа R1. Структура ответа R2. Инициализации в режиме SPI. После сброса и подачи питания карта по умалчиванию устанавливается в режим работы по протоколу MMC (Serial Peripheral Interface), для перевода в режим SPI необходимо сделать следующее:.

После достижения питания 2.2 В, подождать не менее миллисекунды, установить на линиях DI и CS высокий уровень и выдать около 80 импульсов на вывод CLK. После такой процедуры карта будет готова принять родную команду. Послать команду CMD0 (программный сброс). Карта должна ответить (R1) с установленным битом ожидания (0x01). Послать команду CMD1 (для начала инициализации карты). Ждать ответа 0х00 для подтверждения завершения процесса инициализации. Напомню, что команда CMD0 должна содержать корректное поле CRC.

Подключение Sd Карты К Микроконтроллеру

Рассчитывать нет смысла, так как аргументов в этой команде нет, по этому оно постоянно и имеет значение 0х95. Когда карта войдет в режим SPI, функция CRC будет отключена и не будет проверяться.

Микроконтроллеру

Опция CRC может быть снова включена командой CMD59. В результате команда CMD0 будет выглядеть так: 0х40,0х00,0х00,0х00,0х00,0х95.

индекс команды - 0х40. аргумент- 0х00,0х00,0х00,0х00. Что касается 80 импульсов, то их можно сформировать передавая по SPI значение 0хFF 10 раз подряд при установленных высоких уровнях на линиях DI и CS. После простоя более 5 мс карта памяти переходит в энергосберегающий режим, и способна принимать только команды CMD0, CMD1 и CMD58. По этому процесс инициализации (CMD1) необходимо практически каждый раз повторять при чтении/записи блока данных или делать проверку состояния карты.

Для SDC-карт в случае отклонения команды CMD1 рекомендуется использовать команду ACMD41. Сам процесс инициализации может занять относительно длительное время (в зависимости от объема карты) и может достигать сотен миллисекунд. Чтение и запись блока данных. По умолчанию в режиме SPI обмен между микроконтроллером и картой ведется блоками по 512 байт, по этому для записи даже одного байта придется сначала прочитать весь блок и изменив байт перезаписать обратно.

Размер блока может быть изменен в регистре CSD карты памяти. Воизбежания ошибки адресации при выполнении команд чтения/записи необходимо что бы адрес указывался четко начала сектора. Для этого можно сбрасывать бит '0' 3 байта адреса сектора, т.е. Делать его четным, а младший всегда должен иметь значение 0х00. Чтение блока данных. Алгоритм чтения блока данных следующий:.

Если простой карты был более 5 мс передаем команду CMD1 (ответ R1). После подтверждения инициализации передаем команду CMD17 (ответ R1), с адресом необходимого сектора. Передаем 0xFF до получения стартового байта 0xFE. Принимаем блок данных (по умалчиванию 512 байт) и 2 байта CRC. Блок данных может быть меньше 512 байт при изменении длины блока командой CMD16. Значение CRC не обязательно, но процедура принятия (передача 0хFF от МК) необходима. Чтение блока.

Запись блока данных. Алгоритм записи блока данных следующий:. Если простой карты был более 5 мс передаем команду CMD1 (ответ R1). После подтверждения инициализации передаем команду CMD24 (ответ R1), с адресом необходимого сектора. Передаем стартовый байт 0xFE. Передаем блок данных (по умалчиванию 512 байт) и 2 байта CRC. Получаем байт подтверждения записи.

Ждем окончания записи (изменения байта 0х00). Блок данных может быть меньше 512 байт при изменении длины блока командой CMD16.

Значение CRC не обязательно, но процедура передачи любыми значениями необходима. Оценку простоя можно программно и не делать, а сразу давать команду инициализации. При программной реализации столкнулся с некорректной записью, почему то все байты были записаны в сектор со сдвигом влево.

Проблему удалось решить, только передавая стартовый бит (0xFЕ) два раза. Запись блока.

Байт подтверждения при записи блока данных. Запись/чтение нескольких блоков подряд. При помощи команд CMD18, CMD25 можно прочитать/записать несколько блоков подряд или так называемое многоблочное чтение/запись. Если не было задано количество блоков, то процесс чтения/записи можно остановить командами CMD12 при чтении, а так же передачей маркера ' Stop Tran' при записи соответственно. Практическое применение. Практическое применение карт памяти довольно широко. В последней своей конструкции задействовал microSD для записи показаний с различных датчиков (температуры, сигнализации) в течении дня каждый час.

Данные сохраняются следующим образом:. Год берется последние две цифры - это соответствует первому (главному) байту адреса сектора карты памяти. Месяц, две цифры - это соответствует второму, старшему байту адреса сектора карты памяти. День, две цифры умножаются на 2 (во избежание наезда вне границы сектора) - это третий, средний байт адреса сектора карты памяти.

Младший, четвертый байт соответственно всегда '0'. В результате упрощается поиск данных по дате, достаточно просто перевести запрос в адрес сектора и выполнить чтение с карты.

Подключение Sd Карты К Микроконтроллеру Pic

Болезни аквариумных рыб гуппи. При таком методе данные можно хранить в течении нескольких лет. Правда есть и недостатки, остается достаточно много неиспользованного места.

Хотя при желании можно использовать для других задач. Кому надо скину фрагмент кода на ассемблере для 18 пиков.

Подключение Sd Карты К Микроконтроллеру Stm32

Подключение sd карты к микроконтроллеру stm32

Вопросы можно задать.

Основной документ, в котором досконально описан интерфейс, протокол, команды, регистры карточек — Physical Layer Simplified Specification (©Copyright 2001-2006 SD Group (Panasonic, SanDisk, Toshiba) and SD Card Association). Штука, разумеется, платная и стоит порядка 2000 баксов. SD Card Simplified Specifications доступны бесплатно. Достаточно зайти по адресу, согласиться с предупреждением и скачать.

Карта Памяти Микро Сд

Доступ к спекам не разрешает лепить иконку SD на устройство и не дает лицензии. Также недоступна полная спецификация. У вас даже одна из ссылок ведет на sdcard.org.