Полнофункциональный драйвер SDHC карты памяти для Stm. Хабрахабр. Для чего эта статья? Ну банально, Вам нужно разработать систему управления простеньким ЧПУ станком, где управляющая программа хранится на самом девайсе или систему сбора данных, скажем, от датчиков какого- нибудь эксперимента – очевидно, что микроконтроллер изначально не предназначался для хранения таких массивов информации.
Поддержка карт памяти, microSD/SDHC/SDXC объемом до 64 гигабайт.
Решений сего кейса масса, начиная от приобретения и подключения микросхем EEPROM и заканчивая коннектом стандартной USB флешки к аппаратному USB хосту камня (если таковой имеется, конечно). Ну, а для хэнд- майд проектов, отличным вариантом будет самая, что ни на есть классическая SD’шная карта памяти. Они бывают разного типа, имеют различные механизмы инициализации и передачи данных и подключаются к хосту через различные интерфейсы (их, правда, только три, но об этом позже). Более того, многие современные микроконтроллеры имеют на своем борту аппаратные модули этих интерфейсов, и работа разработчика сводится лишь к их конфигу и посылу карточке нужных команд в соответствии с протоколом. Ну и еще карты памяти имеют приятное свойство элементарно покупаться на каждом шагу. О Secure Digital (SD) картах. Не буду переписывать Википедию – приведу здесь основные сведения и виды SD карт памяти и их характеристики.

Secure Digital формат – популярный (пожалуй, самый популярный на сегодняшний день) формат flash памяти для использования, в основном, в портативных устройствах. Внутри каждой такой карточки имеется, собственно, микросхема flash памяти (Memory Core) и, связывающий ее с внешним миром контроллер, имеющий 8 регистров. Задачи последнего – аппаратная реализация внешних интерфейсов, поддержка информации о карте (тип, емкость, класс скорости еще куча других характеристик), контроль электропитания, и, конечно, управление самой микрухой памяти (адресация, чтение, запись, очистка и оганизация порядка 8. Формат SD был основан компаниями Panasonic, San. Disk и Toshiba на основе MMC карт.
Например, HTC One M9 работает с microSDXC, но официально поддерживает. Карты форматов SDHC и SDXC могут поддерживать интерфейс Ultra.
Позже эти компании создали организацию SD Card Association, в настоящее время занимающуюся разработкой и продвижением технологии SD. Основной документ, в котором досконально описан интерфейс, протокол, команды, регистры карточек — Physical Layer Simplified Specification (Copyright 2.
SD Group (Panasonic, San. Disk, Toshiba) and SD Card Association).
Поддержка карт памяти, microSD/SDHC объемом до 32 гигабайт (карта в комплект не. Драйвер установлен с данного сайта. SDHC driver - драйвер для SDHC карт памяти - 4PDA. SDHC driver - драйвер для SDHC карт памяти - 4PDA. Найдешь неоффициальную прошивку WM6 для HTC Love c уже . Для чего эта статья? Все эмбеддеры, рано или поздно, сталкиваются с проблемой нехватки ПЗУ микроконтроллера для своих проектов . Загрузить HTC Sync Manager. Поддерживающие устройства: HTC One A9, HTC One E9 dual sim, HTC Desire 700, HTC Desire 610, HTC One M8S, HTC .
Именно эту информацию используют всякие R& D центры при разработки аппаратного и программного обеспечения своих будущих девайсов. Сам файлик благополучно лежит в свободном доступе в инете, и скачать его не предоставляется никаких сложностей. Так вот, в соответствии с этим документом, существуют следующие типы карт памяти.

Ограничение по объему – 2 Гб. Минимальный размер адресуемого пространства – 1 байт. Имеют существенное отличие от первого типа, а именно, адресация происходит блоками по 5. Иными словами, нельзя просто так взять и записать, к примеру, 7. Особо не копал, почему так, но есть личное мнение, что это из- за используемого 3.
Еще у SDHC карт дугой процесс инициализации, о котором поговорим чутка по позже. Адресация тоже по 5. Вот оно и получается при 3. Тб. На каждое поколение карт существуют спецификации, и при этом в каждом документе на более новое поколение описывается инфа о старых – то есть они «толстеют» с каждым обновлением продукта. Так что скачиваем Physical Layer Simplified Specification самой последней версии и находим там все, что надо для работы со всеми поколениями карт.
Кроме этого, карты памяти делятся на несколько классов по скорости чтения/записи данных. Ну, а что касается всяких там mini- , micro. SD, micro. SDXC и т. Команды, механизмы инициализации – разные, да, но интерфейсы – ОДИНАКОВЫЕ. Именно это позволяет напофиг воткнуть в фотик как SD, так и SDHC карту памяти.
Ну, вот и пришел момент обсудить язык карточки, а точнее аж три: SD и UHS- II (нэйтив спикер) и «язык универсальной микропроцессорной коммуникации, который сейчас знает каждая нерезаная собака микроконтроллер» — SPI. Интерфейс карты памяти. Как было сказано выше, Security Digital карты имеют три внешних интерфейса: SD, UHS- II и SPI. Первые являются «родными» каналами обмена данными с хостом, и, как следствие, позволяют реализовать полнофункциональное, полноскоростное взаимодействие. SPI же не поддерживает ряда команд и не дает максимальной скорости обмена данными, зато он есть во всех микроконтроллерах (и в современных и в старых моделях), что делает возможным без особых проблем приконнектить карточку ко всему, что плохо лежит. Существует масса статей о том, как это сделать. Но, с развитием микропроцессорной техники, с уменьшением нанометров в технологическом процессе производства камней, SPI интерфейс, как средство коммуникации с SD картой постепенно отмирает.
Действительно, если ваш МК поддерживает аппаратную реализацию SD протокола, будите ли Вы связываться с менее функциональной альтернативой? Судьба послала мне на проект камень Stm. STMicroelectronics, в котором как раз таки и имеется периферийный модуль SDIO (Security Digital Input Output), аппаратно реализующий и интерфейс, и протокол карточки. Так что же такое SD протокол и с чем его едят? Ключевых понятий тут три. Он может содержать как общую информацию (статус карты, текущее состояние различных внутренних модулей и т.
Рекомендуемые частоты описаны в спецификации на карту и имеют различное значение, в зависимости от ее типа и класса скорости. Отмечу только, что для любой карты инициализация проходит на очень малой (по сравнению с передачей данных) частоте. Шина данных может быть 1- битной (работает только D0) или 4- битной – это конфигурируется при инициализации. Важно, что для SD карт со стороны хоста линии данных и команд должны быть Push- Pull и быть подтянуты к питанию через резисторы 4.
Ом. Тактовую шину тоже нужно подтянуть к питанию. Ну, а теперь к протоколу!
Если же, команда подразумевает некий ответ, шлем, а затем ждем ответа. Презентация Растительный И Животный Мир России Скачать. Почти все команды и отклики проверяются контрольной суммой, как со стороны хоста, так и со стороны карты. Ну, посмотрим на формат команды: Кадр состоит из 4.
Первый – старт бит – всегда нуль. Затем, говорим, что данные направляются от хоста к карте и посылаем команду с аргументом. Да, да, команда состоит из индекса и аргумента. После команды обязательно шлем 7- битную контрольную сумму, вычисляемую по алгоритму циклически избыточного кода (CRC) и завершаем посылку стоп битом. Команды бывают двух типов: CMD (базовые команды) и ACMD (Application- Specific Command). Они могут быть с аргументом и без, иметь отклик и не иметь. Всего существует порядка 8.
Мы остановимся лишь на некоторых, необходимых для основной работы с карточкой (инициализация, чтение, запись). Индекс команды – это та цифра, которая идет после символов CMD или ACMD. Под него отведено 6 бит и 3. Важное пояснение по поводу ACMD: пространство их индексов пересекается с индексами CMD команд, поэтому, чтобы контроллер воспринял команду именно, как Application- Specific, ей должна предшествовать CMD5. Отклик (если требуется) – тоже целая тема, хотя бы, потому что их пять типов. Пожалуй, самый популярный отклик.
Содержит в себе старт бит, бит направления передачи (от карты к хосту), 6 битов индекса команды, побудившей на генерацию отклика, статус карты и, конечно же, контрольную сумму со стоп битом. Всю информацию в отклике этого типа несет 3. В спецификации тщательно и добросовестно расписано, что означает каждый бит этого статуса (карта занята/свободна, блокирована/разблокирована, текущее состояние автомата передачи данных, готовность к тому или иному действию и многое другое).