Как подключить SD или microSD карту к микроконтроллеру. Какие выводы имеют SD и microSD карты памяти. Как работать с SD картами по интерфейсу SPI. Какие команды используются для чтения и записи данных на SD карту.
Распиновка SD и microSD карт памяти
SD и microSD карты памяти имеют разное количество контактов, но схожую распиновку для основных сигналов. Рассмотрим назначение выводов для подключения по интерфейсу SPI:
Распиновка microSD карты:
- 1 — Подключить к подтягивающему резистору
- 2 — CS (Chip Select) — выбор карты
- 3 — DI (Data In) — данные для записи в карту
- 4 — Vdd — напряжение питания 2,7-3,3В
- 5 — SCLK — тактовые импульсы шины SPI
- 6 — Vss — общий (земля)
- 7 — DO (Data Out) — данные чтения из карты
- 8 — Подключить к подтягивающему резистору
Распиновка SD карты:
- 1 — CS (Chip Select) — выбор карты
- 2 — DI (Data In) — данные для записи в карту
- 3 — Vss — общий (земля)
- 4 — Vdd — напряжение питания 2,7-3,3В
- 5 — SCLK — тактовые импульсы шины SPI
- 6 — Vss — общий (земля)
- 7 — DO (Data Out) — данные чтения из карты
- 8, 9 — Подключить к подтягивающим резисторам
Как видим, основные сигналы SPI (CS, DI, DO, SCLK) присутствуют в обоих вариантах, что позволяет использовать единый протокол обмена данными.

Подключение SD/microSD карты к микроконтроллеру
Для подключения SD или microSD карты к микроконтроллеру по интерфейсу SPI необходимо соединить соответствующие выводы:
- CS карты подключить к выводу микроконтроллера для выбора устройства
- DI карты — к выводу MOSI микроконтроллера
- DO карты — к выводу MISO микроконтроллера
- SCLK карты — к выводу SCK микроконтроллера
- Vdd карты — к напряжению питания 3,3В
- Vss карты — к общему проводу (GND)
Для microSD карты также нужно подключить выводы 1 и 8 к напряжению питания через подтягивающие резисторы 10-100 кОм.
Инициализация и базовые операции с SD картой
После физического подключения SD карты необходимо выполнить ее программную инициализацию и настройку для работы по SPI. Основные шаги:
- Подать не менее 74 тактовых импульсов на линию SCLK при высоком уровне на CS
- Установить низкий уровень на CS и отправить команду CMD0 для перехода в режим SPI
- Отправить команду CMD8 для проверки поддержки карты
- Выполнить процедуру инициализации отправкой команд ACMD41/CMD1
- Отправить команду CMD58 для чтения регистра OCR
После успешной инициализации можно выполнять операции чтения и записи данных.

Команды для работы с SD картой по SPI
Для управления SD картой используются специальные команды. Каждая команда — это 6-байтовая последовательность. Рассмотрим основные команды:
- CMD0 (0x40) — сброс карты и переход в режим SPI
- CMD8 (0x48) — проверка поддержки напряжения питания
- CMD17 (0x51) — чтение одного блока данных
- CMD24 (0x58) — запись одного блока данных
- CMD58 (0x7A) — чтение регистра OCR
- ACMD41 (0x69) — инициализация карты
Для отправки команды нужно установить низкий уровень на CS, передать 6 байт команды, получить ответ и установить высокий уровень на CS.
Чтение данных с SD карты
Процесс чтения данных с SD карты включает следующие шаги:
- Отправить команду CMD17 с адресом нужного сектора
- Дождаться токена начала данных (0xFE)
- Прочитать 512 байт данных сектора
- Прочитать 2 байта контрольной суммы CRC
Пример кода для чтения сектора на C:
void read_sector(uint32_t sector, uint8_t* buffer) {
cmd17(sector); // Отправка команды CMD17
while(spi_read() != 0xFE); // Ожидание токена данных
for(int i=0; i<512; i++) {
buffer[i] = spi_read(); // Чтение байта данных
}
spi_read(); spi_read(); // Пропуск CRC
}
Запись данных на SD карту
Процесс записи данных на SD карту включает следующие этапы:

- Отправить команду CMD24 с адресом сектора для записи
- Дождаться ответа карты о готовности
- Отправить токен начала данных (0xFE)
- Передать 512 байт данных сектора
- Отправить 2 байта контрольной суммы CRC
- Проверить статус записи
Пример кода для записи сектора на C:
void write_sector(uint32_t sector, uint8_t* buffer) { cmd24(sector); // Отправка команды CMD24 while(spi_read() != 0xFF); // Ожидание готовности spi_write(0xFE); // Токен начала данных for(int i=0; i<512; i++) { spi_write(buffer[i]); // Запись байта данных } spi_write(0xFF); spi_write(0xFF); // Отправка CRC while((spi_read() & 0x1F) != 0x05); // Проверка статуса }
Работа с файловой системой на SD карте
Для удобной работы с файлами на SD карте используются файловые системы, чаще всего FAT16 или FAT32. Рассмотрим основные операции с файловой системой:
Инициализация файловой системы
Для инициализации файловой системы необходимо:
- Прочитать загрузочный сектор (MBR) карты
- Определить тип и параметры файловой системы
- Прочитать таблицу размещения файлов (FAT)
- Инициализировать структуры для работы с файлами
Открытие файла
Процесс открытия файла включает:

- Поиск файла в корневом каталоге по имени
- Чтение информации о файле из записи каталога
- Создание структуры для работы с файлом
Чтение файла
Для чтения данных из файла выполняются следующие действия:
- Определение кластера с нужными данными
- Преобразование номера кластера в номер сектора
- Чтение сектора с данными
- Передача прочитанных данных в буфер
Запись файла
Процесс записи данных в файл включает:
- Поиск свободного кластера в FAT
- Преобразование номера кластера в номер сектора
- Запись данных в сектор
- Обновление FAT и записи каталога
Использование готовых библиотек, например FatFs, значительно упрощает работу с файловой системой на SD карте.
Преимущества и недостатки использования SD карт в проектах
Использование SD карт в электронных проектах имеет ряд преимуществ и недостатков. Рассмотрим основные из них:
Преимущества SD карт:
- Большая емкость хранения данных (до нескольких терабайт)
- Высокая скорость чтения и записи данных
- Низкое энергопотребление
- Простота подключения по интерфейсу SPI
- Возможность «горячей» замены карты
- Доступность и невысокая стоимость
Недостатки SD карт:
- Ограниченное количество циклов перезаписи
- Чувствительность к механическим воздействиям
- Возможность потери данных при внезапном отключении питания
- Необходимость реализации файловой системы для удобной работы
- Сложность работы с картой напрямую без специальных библиотек
Взвесив все за и против, разработчик может принять решение об использовании SD карты в своем проекте. Для большинства применений преимущества SD карт перевешивают их недостатки.

Восстановление данных с монолитных (монокристальных) USB, SD и MicroSD флеш карт
В последнее время всё чаще приносят на восстановление информации флешки, выполненные по технологии UDP (USB Disk Package) на монокристальной основе, так называемые монолиты. Сегодня речь пойдёт о процессе восстановления данных с такого монолита, — карты памяти SD которую прислал партнер из города Кемерово. На карточке была записана видеосъемка свадьбы, и когда торжество успешно окончилось и пора было приступать к монтажу и выпуску подарочных DVD, флешка приказала долго жить.
Восстановление монолитных SD карт памяти
Примечательно, что внешне не понять, — это «классическая» SD карточка, с платой текстолита, NAND памятью и контроллером, или монокристалл. До тех пор, пока не вскроется пластиковый корпус. Чаще всего выход таких карт памяти из строя обусловлен сбоем в таблицах трансляции. Реже — электромеханическими повреждениями.
Для восстановления файлов с такой карточки первым делом надо вычитать дампы с кристалла. Для этого механическим (очисткой и шлифованием) путем удаляется защитный лак, скрывающий дорожки и контактные площадки монолита. После чего флешка начинает выглядеть так:
Дорожки и распиновка монолитной SD карты
Видны контактные площадки, к которым подключены шина данных, chip enable, read/write busy, питание и т.п. Разумеется ничего не промаркировано, и даташитов, в которых подробно расписано, что куда подключать, в свободном доступе так же нету. Распиновку можно отыскать либо взяв точно такую же исправную флешку (а их великое множество типов, и найдя такой же по виду условный SD Kingston, можно получить внутри совершенно по другому сделанный девайс) и вооружившись логическим анализатором кропотливо изыскивать что куда и зачем. Либо купив распиновку у человека/конторы, которые такую работу за тебя уже сделали.
Дальше, сверяясь с полученной схемой вывода контактов, под микроскопом монолит распаивается тонкими проводниками на монтажную плату. Работа кропотливая и небыстрая.
В итоге получается нечто такое:
Или такое:
Теперь можно читать дампы. После прочтения, примерно пол-дела считай что сделано.
Теперь в полученных дампах нужно устранить внутренние преобразования. Первым делом убрать маску XOR, которую накладывал при записи информации в ячейки NAND контроллер флешки. С этой маской сектор выглядит так:
а когда нужная маска XOR подобрана и применена, то сектор приобретает осмысленный вид:
После устранения XOR преобразований нужно выставить корректную геометрию сектора, описать маркеры и область ECC корректировки данных. С помощью алгоритма ECC поправить битовые ошибки. Выяснить, в какой последовательности были расположены блоки, их размер. Поскольку тип контроллера неизвестен (это ж монолит!), то надо определить, каким сборщиком пользоваться в данном конкретном случае. Будет ли это сборка финального образа по маркеру сектора или по остаткам таблиц трансляции.
После того, как образ собран, проверить конфликтные блоки, имеющие одинаковый маркер, на актуальность и подставить в образ те, с которыми итоговый результат будет наилучшим. Получив привычный образ с файловой системой можно открыть его в любом дисковом редакторе и выгрузить нужные пользователю файлы.
Безусловно, многие операции достаточно автоматизированы, но тем не менее объем работ при восстановлении данных с монолитов (монокристаллов) весьма велик. Далеко не каждый инженер или компания, восстанавливающая информацию, горит желанием с такими работами связываться. И ценник на такого рода восстановление весьма далёк от понятия «бюджетный».
Вот еще один случай на примере восстановления SD Sandisk — такой же монолит, только внутри чуть по-другому сделан:
Не определяется флешка Sandisk (Сандиск)
Готово для чтения
Восстановление MicroSD флешек
А вот как выглядят контактные площадки на Micro SD карточке. Сразу нужно оговориться, что это только несколько примеров из множества вариантов компоновки.
Ещё вот такой SD монолит
Восстановление SD A-data
Восстановление SD A-data
А вот вариант распиновки монолитной карты памяти Memory Stick Pro Duo
Процесс восстановления монолитной USB флешки
Вот — не сказать что монолит, но и не обычная USB флешка. Микросхема памяти (кристалл) залита компаундом (клеем).
А вот как выглядит монолитная карта памяти Olympus XD Picture card, с которой потребовалось восстановить фотоснимки:
А вот пример восстановления SanDisk Ultra Dual USB — Micro USB флешки:
И её модификация:
Восстановление поломанных Микро СД
Отдельно стоит упомянуть об успешном выполнении задач по восстановлению информации с MicroSD флешек, сломанных на части, с отломанным куском, с трещинами на корпусе и т.п. Несколько примеров на картинках ниже:
Во всех случаях, когда речь идет о флешке разломанной на куски, с отломанной частью и т.п. есть возможность восстановления информации если остался цел кристалл NAND. Например в микро-флешке Сандиск из примера ниже в результате неаккуратной эксплуатации откололся кусок с повреждением дорожек, отмеченных красным овалом.
Лаборатория «Хардмастер» одна из немногих, имеющих опыт и квалификацию в восстановлении данных с монолитных USB, SD, microSD, Memory Stick и т.п. карт памяти. Если на вашей монолитной поломанной флешке остались важные файлы которые хотелось бы вернуть — обращайтесь к нам!
microSD -> SD переходник удлинитель / Хабр
Наверняка, большинству владельцев автомобильных видеорегистраторов приходилось замечать, как неудобно бывает извлекать microSD флеш-карту. Так и в моем случае, без длинного тонкого предмета или длинного ногтя флешку достать просто невозможно. Усугубляет ситуацию ещё и то, что регистратор у меня установлен прямо за зеркалом заднего вида и быстрое снятие его не предусмотренно, и доступ к нему вообще затруднен.
Выход из ситуации я нашел случайно, увидев в китайском интернет-магазине вот такой
microSD to SD module. Но конкретно этот переходник слишком короткий, да и ждать больше месяца. Поэтому я решил сделать такой удлинитель сам, что, собственно, и сделал.
Не секрет, что microSD это уменьшенный вариант полноразмерной SD карты с другим разъемом и между собой эти флешки полностью совместимы. Поэтому, для возможности применения полноразмерных SD карт я буду делать microSD to SD переходник удлинитель, тем более, что подходящая SD карта у меня уже имеется. MicroSD в SD разъем вставить проще, с помощью стандартного переходника. Таким образом можно будет использовать и microSD, и SD флешки.
Схема переходника представлена ниже в виде таблицы с номерами контактов microSD и SD, которые необходимо соединить. Между контактами 4 и 3, 6 со стороны SD не лишним будет так же установить керамический конденсатор емкостью от 0,1µF.
Удлинитель состоит из microSD штекера, который будет вставляться в слот вместо флешки, flat flex кабеля и платы с разъемом под полноразмерную SD флешку. Штекер и плата выполнены методом ЛУТ на двухстороннем стеклотекстолите толщиной 1мм.
Через пол часа работы напильником должны получиться вот такие штекерочки (нужен один). На данном этапе необходимо проконтролировать, чтобы штекер легко вставлялся и вытаскивался в слот вместо флешки.
Припаиваем flat flex кабель к штекеру. Расстояние между дорожками в кабеле — 1мм. Припоя должно быть минимум, чтобы не допустить образование бугров. Штекер должен оставаться плоским.
Подкладываем между платой и кабелем кусочек двухстороннего скотча и проклеиваем конструкцию с обоих сторон скотчем. Скотчем надо заклеить также дорожки, кроме контактных площадок.
Другим концом припаиваем кабель к подготовленной плате с SD разъемом. Конденсатор smd напаян прямо на контакты разъема, для экономии места.
Открытые участки дорожек заклеиваем изолентой (не синей).
Между платой и кабелем предварительно положив так же кусочек двухстороннего скотча.
Запаковываем в термоусадку.
Видеорегистратор с полноразмерной SD флеш картой, все успешно работает.
В машине я закинул разъем с флешкой за козырек и теперь очень удобно и быстро могу оперативно её оттуда извлечь. Плюс мне теперь не придется покупать ещё одну флешку, и валявшаяся без дела SD карта нашла себе применение.
Проект в Sprint Layout 6.0 с рисунками microSD адаптера и платой под SD можно взять тут.
Спасибо за внимание.
Подключение SD/MMC карт памяти | Catcatcat electronics
MMC (MultiMedia Card) и SD (Secure Digital Memory Card) карты на настоящий момент являются самым недорогим устройством большой емкости. Эти устройства идеально подходят для встраиваемых систем где необходимо сбор большого количества данных, а также для простой возможности непосредственного переноса данных на ПК.
Карты памяти позволяют выполнять обмен информации по SPI интерфейсу, который в основном присутствует в любом контроллере. И позволяет создать недорогой интерфейс обмена информацией.
Хороший сайт по информации о работе картами памяти (и не только) http://elm-chan.org/ рекомендую для ознакомления и получения дополнительной информации.
Габаритные размеры
Назначение выводом Микро SD для подключения по интерфейсу SPI.
Номер | Обозначение | Описание |
1 | Подключить к подтягивающему резистору | |
2 | CS | Выбор карты |
3 | DI | Данные для записи в карту |
4 | Vdd | Напряжение питания 2,7-3,3v |
5 | SCLK | Синхроимпульсы шины SPI |
6 | Vss | Общий |
7 | DO | Данные чтения из карты |
8 | Подключить к подтягивающему резистору |
Назначение выводом мини и SD карт для подключения по интерфейсу SPI.
Номер | Обозначение | Описание |
1 | CS | Выбор карты |
2 | DI | Данные для записи в карту |
3 | Vss | Общий |
4 | Vdd | Напряжение питания 2,7-3,3v |
5 | SCLK | Синхроимпульсы шины SPI |
6 | Vss | Общий |
7 | DO | Данные чтения из карты |
8 | Подключить к подтягивающему резистору | |
9 | Подключить к подтягивающему резистору | |
10 | ||
11 |
Вариант подключения для микро SD.
Схема для тестового проекта.
Проект предназначен как обучающий, для понимания работы с файловой системой, основан на FatFs – Generic FAT File System Module от ©ChaN. В программе присутствуют некоторые изменения для использования с PIC-контроллерами. Используется подключение через USB (эмуляция COM-порта) и HeperTerminal как управляющую панель, можно протестировать работу самой библиотеки, в связке с PIC-контроллером, по работе с SD/MMC картами памяти. Проект настроен на кодировку 866.
Управляющие последовательности.
Низкоуровневые последовательности для работы с диском:
di – инициализация логического устройства
Пример, выполнения инициализации
> di
The disc initialization. 0-ok,1-no.
rc=0
dd [ <sector>] – чтение выбранного сектора с диска, просмотр на терминале (с загрузкой в буфер)
Пример, чтение сектора 0
>dd 0
Read sector:0
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 …………….
000001C0: 0C 00 06 38 F8 B8 89 00 00 00 77 9F 3A 00 00 00 …8……w.:…
000001D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA …………..U.
ds – Просмотр состояния диска, устройства
Пример, выполнения команды
>ds
Drive size: 3842048 sectors
Erase block: 8192 sectors
MMC/SDC type: 4
CSD:
00000000: 00 2E 00 32 5B 5A 83 A9 FF FF FF 80 16 80 00 91 …2[Z……….
CID:
00000000: 02 54 4D 53 42 30 32 47 00 08 30 17 D1 00 CA 45 .TMSB02G..0….E
OCR:
00000000: 80 FF 80 00 ….
SD Status:
00000000: 00 00 00 00 00 00 00 28 02 02 90 02 00 32 00 00 …….(…..2..
00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
bd <адрес> – Просмотр буфера с указанного байта
Пример, выполнения
>bd 0
Viewing Buffer R/W:
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
be <адрес> [<данные>] … – Редактирование буфера
Пример, выполнения
>be 5 0x33 0x45 0x67
Editor buffer data R/W:
>bd 0
Viewing Buffer R/W:
00000000: 00 00 00 00 00 33 45 67 00 00 00 00 00 00 00 00 …..3Eg……..
00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000000F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
000001F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
br <сектор> <количество секторов 1 – 255> – Чтение сектора или секторов
Пример, выполнения
>br 0 1
Reading data from the disk into the buffer: 0
rc=0
bw <сектор> <количество секторов 1 – 255> – Запись буфера в сектор на диске или запись буфера в несколько секторов на диске
Пример, выполнения
>bw 0 1
Writing data into the buffer: 0
rc=0
bf <число> – заполнение буфера данными
Пример, выполнения
>bf 0x35
The buffer is filled with the number of: 0
>bd 0
Viewing Buffer R/W:
00000000: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000010: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000020: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000030: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000040: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000050: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000060: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000070: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000080: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000090: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000000A0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000000B0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000000C0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000000D0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000000E0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000000F0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000100: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000110: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000120: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000130: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000140: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000150: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000160: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000170: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000180: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
00000190: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000001A0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000001B0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000001C0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000001D0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000001E0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
000001F0: 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 5555555555555555
Последовательности для работы с файловой системой
fi – быстрая инициализация устройства
Пример, выполнения
>fi
rc=0 FR_OK
fs [<путь>] – Показать состояния логического диска (каталога)
Пример, выполнения
>fs
FAT type = FAT16
Bytes/Cluster = 32768
Number of FATs = 2
Root DIR entries = 512
Sectors/FAT = 235
Number of clusters = 60021
Volume start (lba) = 137
FAT start (lba) = 139
DIR start (lba,clustor) = 609
Data start (lba) = 641
13 files, 24096 bytes.
3 folders.
1920672 KB total disk space.
1919488 KB available.
fl [<путь>] – Просмотр каталога. Без пути – просмотр текущего каталога
Пример, выполнения
>fl
D—- 2013/06/16 15:37 0 123
D—- 2013/06/16 15:37 0 234
D—- 2013/06/16 15:37 0 456
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2013/06/01 10:03 3011 footer.txt
—-A 2013/06/16 18:34 220 789.txt
—-A 2013/06/16 18:55 2391 4523.txt
4 File(s), 6908 bytes total
3 Dir(s), 1965555712 bytes free>
>fl 123
D—- 2013/06/16 15:37 0 .
D—- 2013/06/16 15:37 0 ..
—-A 2013/06/01 10:03 3011 123.txt
—-A 2013/06/01 10:20 1286 333.txt
—-A 2013/06/01 10:03 3011 4523.txt
3 File(s), 7308 bytes total
2 Dir(s), 1965555712 bytes free
fo <режим> <имя файла> – открыть файл, режим: 0x01 – на чтение, 0x00 – , 0x80 – , 0x02 – на запись, 0x04 – создать новый файл, 0x08 – создать независимо от наличия такого же файла в каталоге, 0x10 – отрыть независимо от текущего состояния, 0x20 – , 0x40 – .
Пример, выполнения
>fo 4 nini.txt
rc=0 FR_OK
>fc
rc=0 FR_OK
>fl
—-A 2061/01/23 00:48 0 nini.txt
D—- 2013/06/16 15:37 0 123
D—- 2013/06/16 15:37 0 234
D—- 2013/06/16 15:37 0 456
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2013/06/01 10:03 3011 footer.txt
—-A 2013/06/16 18:34 220 789.txt
—-A 2013/06/16 18:55 2391 4523.txt
5 File(s), 6908 bytes total
3 Dir(s), 1965555712 bytes free
fc – Закрыть открытый файл
Пример, выполнения
>fc
rc=0 FR_OK
fe <ofs> – Переместить указатель в указанный адрес (внутри открытого файла, если файл на запись или внутри буфера если файл отрыт на чтение)
Пример, выполнения
>fo 2 footer.txt // открываем файл на запись
rc=0 FR_OK
>fe 0x12 // перемещаем указатель
rc=0 FR_OK
fptr = 18(0x12)
fr <количество байт чтения> – читать файл (данные загружаются в буфер)
Пример, выполнения
>fr 200
200 bytes read with 0 kB/sec.
fd <количество байт чтения> – чтение буфера, вывод на экран информации
Пример, выполнения
>fd 200
00000000: EF BB BF 3C 3F 70 68 70 0D 0A 2F 2A 2A 0D 0A 20 …<?php../**..
00000010: 2A 20 46 4F 4F 54 45 52 0D 0A 20 2A 0D 0A 20 2A * FOOTER.. *.. *
00000020: 20 54 68 69 73 20 66 69 6C 65 20 63 6F 6E 74 72 This file contr
00000030: 6F 6C 73 20 74 68 65 20 65 6E 64 69 6E 67 20 48 ols the ending H
00000040: 54 4D 4C 20 3C 2F 62 6F 64 79 3E 3C 2F 68 74 6D TML </body></htm
00000050: 6C 3E 20 61 6E 64 20 63 6F 6D 6D 6F 6E 20 67 72 l> and common gr
00000060: 61 70 68 69 63 61 6C 0D 0A 20 2A 20 65 6C 65 6D aphical.. * elem
00000070: 65 6E 74 73 20 69 6E 20 79 6F 75 72 20 73 69 74 ents in your sit
00000080: 65 20 66 6F 6F 74 65 72 2E 20 59 6F 75 20 63 61 e footer. You ca
00000090: 6E 20 63 6F 6E 74 72 6F 6C 20 77 68 61 74 20 73 n control what s
000000A0: 68 6F 77 73 20 75 70 20 77 68 65 72 65 20 75 73 hows up where us
000000B0: 69 6E 67 0D 0A 20 2A 20 57 6F 72 64 50 72 65 73 ing.. * WordPres
000000C0: 73 20 61 6E 64 20 50 61 s and Pa
fw <Количество байт для записи> <Значение записываемого байта> – запись в файл
Пример, выполнения
>fw 100 0x36
100 bytes written with 100 kB/sec.
fn <old_name> <new_name> – Изменения имени файла/каталога
Пример, выполнения, изменение имени каталога 123
>fl
—-A 2061/01/23 00:48 0 nini.txt
D—A 2013/06/16 15:37 0 mounfer
D—- 2013/06/16 15:37 0 123
D—- 2013/06/16 15:37 0 456
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2061/01/23 00:03 3011 footer.txt
—-A 2013/06/16 18:34 220 789.txt
—-A 2013/06/16 18:55 2391 4523.txt
5 File(s), 6908 bytes total
3 Dir(s), 1965555712 bytes free
>fn 123 catalogMOBI
rc=0 FR_OK
>fl
—-A 2061/01/23 00:48 0 nini.txt
D—A 2013/06/16 15:37 0 mounfer
D—A 2013/06/16 15:37 0 CATALO~1 catalogMOBI
D—- 2013/06/16 15:37 0 456
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2061/01/23 00:03 3011 footer.txt
—-A 2013/06/16 18:34 220 789.txt
—-A 2013/06/16 18:55 2391 4523.txt
5 File(s), 6908 bytes total
3 Dir(s), 1965555712 bytes free
fu <path> – удаление файла или каталог (каталог должен быть пустым)
Пример, выполнения
>fl
—-A 2061/01/23 00:48 0 nini.txt
D—A 2013/06/16 15:37 0 CATALO~1 catalogMOBI
D—- 2013/06/16 15:37 0 456
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2061/01/23 00:03 3011 footer.txt
—-A 2013/06/16 18:55 2391 4523.txt
4 File(s), 6688 bytes total
2 Dir(s), 1965686784 bytes free
>fu 4523.txt
rc=0 FR_OK
>fl
—-A 2061/01/23 00:48 0 nini.txt
D—A 2013/06/16 15:37 0 CATALO~1 catalogMOBI
D—- 2013/06/16 15:37 0 456
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2061/01/23 00:03 3011 footer.txt
3 File(s), 4297 bytes total
2 Dir(s), 1965719552 bytes free
fv – урезать файл, файл урезается по установленному указателю
Пример, выполнения, урезание файла footer.txt до 1кБ
>fl //смотрим каталог
—-A 2061/01/23 00:48 0 nini.txt
D—- 2061/01/23 01:28 0 cat01
D—- 2061/01/23 01:28 0 cat2
D—A 2013/06/16 15:37 0 CATALO~1 catalogMOBI
D—- 2061/01/23 01:28 0 car03
D—- 2061/01/23 01:29 0 cat03
D—- 2061/01/23 01:31 0 test
D—- 2013/06/16 15:37 0 456
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2061/01/23 00:03 3011 footer.txt
D—- 2061/01/23 01:30 0 CAT2CA~1 cat2 cat77
D—- 2061/01/23 01:32 0 test03
3 File(s), 4297 bytes total
9 Dir(s), 1965490176 bytes free
>fo 2 footer.txt // открываем файл на запись
rc=0 FR_OK
>fe 1000 // устанавливаем указатель на 1000
rc=0 FR_OK
fptr = 1000(0x3E8)
>fv // урезаем размер файла
rc=0 FR_OK
>fc // закрываем файл
rc=0 FR_OK
>fl // смотрим каталог, что получилось
—-A 2061/01/23 00:48 0 nini.txt
D—- 2061/01/23 01:28 0 cat01
D—- 2061/01/23 01:28 0 cat2
D—A 2013/06/16 15:37 0 CATALO~1 catalogMOBI
D—- 2061/01/23 01:28 0 car03
D—- 2061/01/23 01:29 0 cat03
D—- 2061/01/23 01:31 0 test
D—- 2013/06/16 15:37 0 456
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2061/01/23 01:40 1000 footer.txt
D—- 2061/01/23 01:30 0 CAT2CA~1 cat2 cat77
D—- 2061/01/23 01:32 0 test03
3 File(s), 2286 bytes total
9 Dir(s), 1965490176 bytes free
fk <имя каталога> – Создайте каталог
Пример, выполнения создать каталог с именем test03
>fk test03
rc=0 FR_OK
fa <атрибут> <маска> <имя файла или каталога> – Изменение атрибута файла/каталога. Аnритут показывает какие флаги сбросить или установить 0 – сбросить, 1 – установить, маска какие влаги активировать, если использовать бинарные числа, то 0b000 – старший байт S, средний H, младший R.
Пример, выполнения
>fa 0b000 0b111 nini.txt // сбросить все атрибуты файла
rc=0 FR_OK
>fl
—-A 2061/01/23 00:48 0 nini.txt
D—- 2061/01/23 01:28 0 cat01
D—- 2061/01/23 01:28 0 cat2
D—- 2061/01/23 01:28 0 car03
D—- 2061/01/23 01:29 0 cat03
D—- 2061/01/23 01:31 0 test
D—- 2013/06/16 15:37 0 456
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2061/01/23 01:40 1000 footer.txt
D—- 2061/01/23 01:30 0 CAT2CA~1 cat2 cat77
D—- 2061/01/23 01:32 0 test03
3 File(s), 2286 bytes total
8 Dir(s), 1965654016 bytes free
>
>fa 0b101 0b111 nini.txt // установить флаги R-S и сбросить H
rc=0 FR_OK
>fl
-R-SA 2061/01/23 00:48 0 nini.txt
D—- 2061/01/23 01:28 0 cat01
D—- 2061/01/23 01:28 0 cat2
D—- 2061/01/23 01:28 0 car03
D—- 2061/01/23 01:29 0 cat03
D—- 2061/01/23 01:31 0 test
D—- 2013/06/16 15:37 0 456
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2061/01/23 01:40 1000 footer.txt
D—- 2061/01/23 01:30 0 CAT2CA~1 cat2 cat77
D—- 2061/01/23 01:32 0 test03
3 File(s), 2286 bytes total
8 Dir(s), 1965654016 bytes free
ft <year> <month> <day> <hour> <min> <sec> <name> – Изменить временную метку
fx <src_name> <dst_name> – Скопировать файл
Пример, выполнения
>fx 11111.txt 456/11.txt // копируем файл 11111.txt с текущего каталога в каталог 456 с переименованием 11.txt
Opening “11111.txt”
Creating “456/11.txt”
Copying…
1286 bytes copied.
>fl 456
D—- 2013/06/16 15:37 0 .
D—- 2013/06/16 15:37 0 ..
—-A 2013/06/01 10:20 1286 11111.txt
—-A 2013/06/01 10:03 3011 222222.txt
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2061/01/23 01:40 1000 FOOTER~1.TXT
—-A 2013/06/01 10:20 1286 FUNCTI~2.TXT
—-A 2061/01/23 00:48 0 NINI-Š~1.TXT
—-A 2061/01/23 01:40 1000 footer.txt
—-A 2061/01/23 00:48 0 nini.txt
—-A 2061/01/23 00:15 1286 11.txt
9 File(s), 10155 bytes total
2 Dir(s), 1965260800 bytes free
fg <path> – Изменить текущий каталог
Пример, выполнения
>fl
—-A 2061/01/23 00:48 0 nini.txt
D—- 2061/01/23 01:28 0 cat01
D—- 2061/01/23 01:28 0 cat2
D—- 2061/01/23 01:28 0 car03
D—- 2061/01/23 01:29 0 cat03
D—- 2061/01/23 01:31 0 test
D—- 2013/06/16 15:37 0 456
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2061/01/23 01:40 1000 footer.txt
D—- 2061/01/23 01:32 0 test03
D—- 2061/01/23 01:30 0 test.dir
—-A 2061/01/23 01:40 1000 FOOTER~1.TXT
—-A 2013/06/01 10:20 1286 FUNCTI~2.TXT
—-A 2061/01/23 00:48 0 NINI-Š~1.TXT
—-A 2013/06/01 10:20 1286 11111.txt
—-A 2013/06/01 10:03 3011 222222.txt
8 File(s), 8869 bytes total
8 Dir(s), 1965260800 bytes free
>fg 456
rc=0 FR_OK
>fl
D—- 2013/06/16 15:37 0 .
D—- 2013/06/16 15:37 0 ..
—-A 2013/06/01 10:20 1286 11111.txt
—-A 2013/06/01 10:03 3011 222222.txt
—-A 2013/06/01 10:20 1286 FUNCTI~1.TXT functions.txt
—-A 2061/01/23 01:40 1000 FOOTER~1.TXT
—-A 2013/06/01 10:20 1286 FUNCTI~2.TXT
—-A 2061/01/23 00:48 0 NINI-Š~1.TXT
—-A 2061/01/23 01:40 1000 footer.txt
—-A 2061/01/23 00:48 0 nini.txt
—-A 2061/01/23 00:15 1286 11.txt
9 File(s), 10155 bytes total
2 Dir(s), 1965260800 bytes free
fj – <номер диска 0, 1…> – Сменить текущий диск (если устройство разбито на несколько дисков).
fq – Показать путь текущей директории
Пример, выполнения
>fq
0:/456
fb – переместить указатель в конец файла, для до записывания информации
Пример, выполнения
>fo 2 11.txt
rc=0 FR_OK
>fb
rc=0 FR_OK
fm – <partition rule> <sect/clust> – Создание файловой системы
Пример, выполнения
>fm 1 1
The memory card will be formatted. Are you sure? (Y/n)=Y
Formats, please wait…
rc=0 FR_OK
>fl
0 File(s), 0 bytes total
0 Dir(s), 1950350848 bytes free
>fs
FAT type = FAT32
Bytes/Cluster = 512
Number of FATs = 1
Root DIR entries = 0
Sectors/FAT = 30017
Number of clusters = 3809280
Volume start (lba) = 0
FAT start (lba) = 2751
DIR start (lba,clustor) = 2
Data start (lba) = 32768
0 files, 0 bytes.
0 folders.
0 KB total disk space.
0 KB available.
>
>fm 1 0
The memory card will be formatted. Are you sure? (Y/n)=Y
Formats, please wait…
rc=0 FR_OK
>fl
0 File(s), 0 bytes total
0 Dir(s), 1962934272 bytes free
>fs
FAT type = FAT16
Bytes/Cluster = 32768
Number of FATs = 1
Root DIR entries = 512
Sectors/FAT = 8159
Number of clusters = 59904
Volume start (lba) = 0
FAT start (lba) = 1
DIR start (lba,clustor) = 8160
Data start (lba) = 8192
0 files, 0 bytes.
0 folders.
1916928 KB total disk space.
1916928 KB available.
t – [<year> <mon> <mday> <hour> <min> <sec>] установка и индикация системного времени
Пример, выполнения
>t 2013 006 18 16 38 00
Setting the date and time
2013/6/18 16:38:00
Проект и библиотека в формате MPLAB® X v1.80, Microchip MPLAB XC16 v1.11
Гипертерминал для тестирования проектаЭто может быть интересно
- WiFi ESP8266 – AT команды связанные с функцией Wi-Fi
AT команды связанные с функцией Wi-Fi Функции Wi-Fi подключения, запускаться из командной строки Команда Описание 1 AT+CWMODE Проверка, настройка режима работы Wi-Fi (sta/AP/sta+AP), (не рекомендуется для новых проектов). 2 AT+CWMODE_CUR Проверка, …
- Гаджеты для домашней автоматики – Датчик приближения
Управление светодиодным освещением – Датчик приближения. Данный гаджет предназначен для управления внутренним освещением мебели. Датчик позволяет определить закрытие или открытие дверцы или ящика и при этом включать или выключать освещение. …
- DIXELL XWEB500D-EVO + RUT900 или как пробить NAT-сервер
Когда необходимо под какой нибудь контроллер имеющий вэб сервер в инет, то нужен статический IP, что оказалось проблемой при работе с операторами сотовых сетей, конкретно с оператором сети “Киевстар”. Их …
- NeoPixel LED и PIC18
Еще раз об управлении светодиодами на драйвере WS2812 и ему подобных. Как известно эти светики управляются по однопроводной шине. Основная особенность, что программно можно описать передачу данных, но это …
- LATINO – открытый проект ch-светомузыки
Проект построенный на некоторых принципах ch-светомузыка. Проект ознакомительный предназначен, для самостоятельного построения простого и эффективного светосинтезатора. Вывод осуществляется на ВОУ собранной на драйверах HL1606. Для этого была применена светодиодная …
- Цифровой спидометр для автомобиля
Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например, для города и …
- Сенсорный выключатель света
Хотя в настоящий момент актуальны системы управления освещением с передачей данных по электросети, но я думаю, что проекты такого рода тоже имеют право на жизнь. Анонс Три вида сенсора – …
- Arduino LCD + STONE STVI056WT-01 + Strain gauge
Author li grey email: [email protected] The strain assessment instrument is used to assess the degree of corresponding muscle strain by obtaining the muscle surface action potential through silver oxide electrodes …
- Простой цифровой вольтметр ch-c3200
В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип построения цифровых …
- Простой цифровой милливольтметр постоянного тока
Простой цифровой вольтметр постоянного тока. Три диапазона измерений с автоматическим переключением 1 – 0,001 – 0,999 V, 2 – 0,01-9,99 V, 3 – 0,1-99,9. Четыре управляемых выхода с возможностью задания функции контроля и времени реакции на …
Слот для карты памяти что это: особенности использования карт памяти
Карты памяти настолько тесно вошли в жизнь современного человека, что он попросту не представляет дальнейшее существование без них. Карты памяти уже давно вытеснили дискеты, диски и даже постепенно вытесняют флешки. Основным преимуществом карт памяти является их миниатюрный размер, посредством которого изделие является достаточно мобильным и удобным в эксплуатации. Что касаемо эксплуатации, то не все еще знают, как правильно пользоваться картами памяти. Слот для карты памяти, что это такое, и как правильно пользоваться микрокарточками, узнаем детальней.
Слоты для карт памяти
Слот для подключения карты памяти представляет собой отверстие в виде щели до 2,5 см, в которую вставляется устройство. Эта щелка оснащена специальными контактами, которые при вставлении карты памяти соединяются с нею, после чего происходит считывание информации ПК или ноутбуком.
Стандартные ноутбуки оснащены с завода, зачастую, только одним слотом для подключения карт памяти типа microSD. Как подключить карту памяти к персональному компьютеру? Если на ПК отсутствует слот для подключения карт памяти, то эту проблему всегда можно исправить. Для этого необходимо приобрести переносной слот или картридер, в котором зачастую имеется не менее 3 щелей для различных видов устройств. Преимуществом переносных слотов является их мобильность и дешевизна.
Что такое карта памяти
Выяснив, что такое слот для подключения карт памяти, следует уделить внимание вопросу о том, что же такое карты памяти. Карты памяти представляют собой маленькую и тоненькую пластинку, выполненную из пластика, внутри которой имеется модуль памяти. Преимуществом данного модуля является энергонезависимость, посредством чего информация на устройстве сохраняется даже тогда, когда изделие не подключено к ноутбуку, ПК или прочим видам гаджетов.
Информацию на карте памяти можно удалять, записывать, перезаписывать в многократном режиме повторений. Карта памяти имеет довольно продолжительный срок службы, измеряемый в десятилетиях при условии правильного обращения с изделием. Дополнительно, некоторые карты памяти оснащены специальным язычком, при помощи которого можно обезопасить изделие от случайного форматирования или удаления информации.
Карты памяти подразделяются на следующие виды:
- SD – один из наиболее популярных видов карт памяти, используемых на различных современных гаджетах. Максимальный объем такого изделия составляет 4 Гб.
- SDHC – изделия, память которых свыше 4 Гб и достигает 32 Гб. По размерам они идентичны с предыдущим вариантом, только отличаются стоимостью и объемом вместимости информации.
- SDXC – карты, который имеют очень большой объем памяти до 2 Тб.
- MiniSD – прямой аналог карты SD, отличающийся размерами изделия. Данные устройства сегодня практически не используются.
MicroSD – очень маленькая карта памяти, которая используется в современных телефонах, плейерах и прочих гаджетах. Она имеет миниатюрные размеры, но в то же время достаточно большой объем до 64 Гб. Недостатком такого размера является возможность легко потерять изделие.
- Memory Stick – карты памяти от популярной компании Sony. Максимальный объем их составляет до 16 Гб, а по размерам они бывают как маленькие, так и большие.
- CompactFlash – формат карт памяти, которые уже устарели. Максимальный объем равен 256 Гб, а преимуществом является высокая скорость передачи данных.
Существуют и другие виды карт памяти, которые уже также устарели и встретить их можно разве что в магазине электроники.
Адаптеры для карт памяти
Ноутбуки оснащены слотом для карт памяти, которые имеют большие размеры. Но как же быть с карточками типа microSD или miniSD? Для них существуют специальные адаптеры, которые представляют собой большую обычную карту памяти. С торцевой части адаптер оснащен маленькой щелкой, через которую осуществляется установка карт памяти типа MicroSD.
Установив microSD-карту в адаптер, можно использовать изделие с устройством, которое поддерживает большие карточки (ноутбук, картридер, фотоаппарат). Адаптеры продаются зачастую совместно с картами памяти маленьких размеров. Если же адаптера в комплекте нет, то его всегда можно приобрести отдельно, тем более, что его стоимость незначительная.
Особенности использования карт памяти
Наиболее популярными картами памяти, которые используются повсеместно, являются устройства типа SDHC и microSD. Стандартная карта памяти имеет прямоугольную форму со срезанным углом. Этот угол срезан с той целью, чтобы вставить карту в слот можно было только одной стороной.
Важно знать! Если при попытке вставить карточку в слот у вас ничего не выходит, то следует перевернуть изделие на 180 градусов и снова попытаться его установить в слот. При правильной установке карты обязательно последует щелчок.
Для извлечения карточки необходимо надавить на нее пальцем или ногтем, после чего последует характерный щелчок, и изделие выскочит из слота. Принцип установки карт, как в ноутбуки, так и в фото и видеоаппаратуру идентичен. Чтобы вставить карту в картридер, для этого достаточно расположить ее в правильном положении и всунуть в щелку. При вставке карты в картридер, она входит в щелку не полностью, а только большей частью, что упрощает способ ее извлечения.
Если возникла необходимость перенести информацию с телефона, которая хранится на карте памяти, в ноутбук, то для этого понадобится адаптер. Карточка microSD может быть установлена в слот ноутбука при помощи переходника или адаптера. Для начала микрокарта устанавливается в переходник, а уже затем последний вставляется в слот.
Как считать информацию с карты памяти на ПК
Если на системном блоке ПК отсутствуют слоты для подключения карт памяти, то для этого можно приобрести картридер. Представляет изделие небольшую пластиковую коробку с несколькими щелями для подключения карт. С другой стороны устройство имеет USB-разъем, посредством которого изделие подключается к компьютеру.
Определить видимость компьютером карты памяти достаточно просто, для чего следует кликнуть дважды на значок «Мой компьютер». В открывшемся окне появится значок карты памяти или дополнительный диск, который и является подключенным изделием.
Для открытия содержимого карты на компьютере, достаточно кликнуть по папке двойным щелчком мышки. В открывшемся окне можно скопировать необходимые файлы для перенесения в память ПК или наоборот. По окончанию обязательно следует правильно научиться извлекать карту памяти. Для этого необходимо отыскать в правом нижнем углу значок флешки с зеленой стрелочкой. Необходимо кликнуть по этому значку один раз, после чего выбрать из всплывающего окна функцию «Безопасное извлечение устройства…».
Важно знать! Если осуществлять извлечение карты памяти, пренебрегая безопасным способом, то срок годности изделия значительно снижается. Кроме этого снижается и срок годности картридера, и самого слота на ноутбуке.
В завершении следует отметить, что карты памяти хотя и просты в эксплуатации, но при этом обязательно необходимо соблюдать правила и рекомендации по их использованию. Хранить карты памяти не рекомендуется вблизи электромагнитных излучений, так как они влияют на срок годности изделий.
MicroSD шилд — модуль микро-сиди карты для ардуино
При конструировании той или иной системы на основе аппаратной платформы Arduino может возникнуть задача сохранения данных для последующего анализа. Осуществить такую операцию можно при помощи SD или microSD карты и соответствующего модуля. Шилд для microSD карты был приобретен на Али всего за 1 доллар с доставкой. Рассматриваемое устройство продается под брендом RobotDyn [1]. Поставляется данный шилд в обычном антистатическом пакете.
Модуль имеет габаритные размеры 40 х 25 мм, массу 4,3 г, без microSD карты. На плате располагаются два светодиода зеленый – индикатор питания, синий загорается при работе с microSD картой.
На плате имеются четыре отверстия, диаметром 3 мм, что позволяет надежно закрепить модуль.
Рассматриваемый шилд имеет восемь выводов. Они имеют следующее назначение
- 5V – питание 5В,
- 3.3V – питание 3,3 В (данный контакт специфичен именно для шилда от RobotDyn),
- GND – общий, четыре контакта интерфейса SPI:
- CLK – SCK, D0 – MISO, D1 – MOSI, CS – выбор устройства,
- а также опциональный CD – обнаружение карты (может быть не подключен, данный контакт специфичен именно для шилда от RobotDyn).
Контакты интерфейса SPI [2-7] в случае использования платы Arduino UNO следует подключать к следующим выводам CS – D4, D0(MOSI) – D11, D1(MISO) – D12, CLK(SCK) – D13. Следует иметь в виду, что порт для подключения CS в различных проектах может отличаться [8-11].
В режиме ожидания модуль потребляет около 23 мкА при напряжении питания 5 В, при кратковременном обращении к карте ток возрастает до 1,8 мА, если осуществляется непрерывная запись на карту, то ток возрастает до 11 мА. При напряжении питания 3,3 В устройство не заработало.
Задача подключения microSD карты является стандартной и для ее решения можно использовать библиотеку SD, которая прилагается к среде разработки Arduino IDE. В папке этой библиотеки имеется целый ряд примеров, раскрывающих различные нюансы взаимодействия с microSD картой. Самая простая программа CardInfo просто выводит информацию о установленной в разъем карте.
На рисунке выше результат работы CardInfo в случае отформатированной карты. Программа ReadWrite производит создание на microSD карте текстового файла и запись информации в него.
После работы ReadWrite программа CardInfo покажет, что на microSD карте появился файл TEST.TXT.
Программа Datalogger позволяет записывать данные с 0, 1 и 2 аналоговых портов в файл на microSD карте. Также эти данные передаются через последовательный порт. В качестве датчика в данном случае использован переменный резистор сопротивлением 10 кОм.
После работы Datalogger программа CardInfo покажет, что на microSD карте к файлу TEST.TXT. добавился файл DATALOGGER.TXT.
В общем, данный модуль позволяет очень серьезно расширить потенциальные возможности устройств на платформе Arduino, радикально решив проблему с «амнезией» при перерыве в электропитании, позволяя сохранять для последующего анализа данные о срабатывании датчиков на какой-либо мобильной платформе или работе датчиков умного дома.
Полезные ссылки
- robotdyn.ru/catalog/modules/memory/microsd_card_module.html
- arduinomaster.ru/datchiki-arduino/podklyuchenie-spi-arduino/
- avrbeginners.net/architecture/spi/spi.html
- robocraft.ru/blog/arduino/518.html
- arduino.ru/Reference/Library/SPI
- www.arduino.cc/en/Reference/SPI
- soltau.ru/index.php/arduino/item/382-interfejs-spi-i-arduino
- robotclass.ru/tutorials/arduin-read-write-micro-sd-card/
- all-arduino.ru/arduino-urok-15-sd-karta/
- arduinoplus.ru/podkluchaem-sd-kartu-k-nashemu-arduino/
- arduinomaster.ru/datchiki-arduino/podklyuchenie-sd-karty-k-arduino/
Специально для сайта 2 Схемы.ру — Denev.
Восстановление данных с MicroSD карт памяти в Москве
Утеря ценной информации с цифрового носителя часто становится большой проблемой для владельцев техники. На компактном устройстве могут быть записаны фотографии или видео с семейных праздников, отдыха, рабочие файлы, необходимые учебные материалы. Восстановление данных с MicroSD карты своими силами часто заканчивается неудачно, информация затирается окончательно.
Считыватель микросхем памяти
PC3000 Data Extractor
Чистая комната
Считыватель flash
Паяльные станции
Для того, чтобы обеспечить эффективное восстановление MicroSD карты, лучше всего обратиться к специалистам. Сотрудники нашей компании обладают большим опытом и квалификацией, выполнят работы быстро и качественно. Обращение к нам выгодно по следующим причинам:
- восстановление данных с MicroSD карты памяти выполняется с использованием специализированного программного и аппаратного обеспечения, недоступного большинству пользователей;
- в работе используются инновационные технологии и инструменты, что существенно повышает эффективность восстановления информации;
- сроки выполнения работ устраивают большинство заказчиков, сотрудники начинают операции сразу после получения носителя;
- стоимость услуги доступна для любого заказчика, зависит от продолжительности и сложности операций, выгодно отличается от средней по рынку.
Для того, чтобы максимально качественно восстановить информацию, необходимо не пытаться сделать работу самостоятельно. Лучше сразу обратиться к профессионалам, обладающим соответствующими компетенциями и опытом.
Технология восстановления MicroSD карты
Утеря информации на компактном носителе может случиться по нескольким причинам. В первую очередь, такие ситуации фиксируются при программных сбоях техники или неправильном изъятии карты памяти из цифрового устройства. В некоторых случаях затирание данных связано с низким качеством носителя.
Флешки, карты памяти, SSD диски
Описание проблемы | Стоимость |
---|---|
Диагностика | бесплатно |
Доставка курьером | бесплатно |
«Логика» (удаление, форматирование, пропали файлы/папки, вирусы, просит отформатировать/пропал раздел) | от 3 000 р. |
«Физика» для флешек меньше 32 Гб (не определяется, 0 объем, не читается/ошибки чтения) | от 6 000 р. |
«Физика» для флешек 32 Гб и больше | от 10 000 р. |
«Физика» для SSD дисков | от 20 000 р. |
Услуга по восстановлению данных с MicroSD карты является востребованной на рынке. Работы выполняются в несколько этапов. В первую очередь определяется тип носителя и вид проблемы. Для исправной MicroSD карты подбирается соответствующее ПО. Далее программное обеспечение выполняет сканирование карты, находит все имевшиеся на ней файлы. Следует понимать, что MicroSD – это всегда монолитные карты. Поэтому методика восстановления, связанная с отпайкой чипов, для таких неисправных карт не применима. Утерянные данные по причине физической неисправности карты восстанавливаются путем зачистки контактов, подпайки к ним по определенной распиновке, считывания и последующей расшифровки на специальном программно-аппаратном комплексе.
Схема работы
Доставка
курьером бесплатно
Диагностика
быстро и бесплатно
восстановление
на профессиональном оборудовании
проверка
качества и полноты восстановления
Оплата
только при успешном результате
Время выполнения операций зависит от характера проблемы, объема носителя и сложности работ. Часто удается восстановить данные на уже отформатированном цифровом устройстве, или карте памяти, имеющей механические повреждения. Наша компания предоставляет качественные услуги, когда самостоятельно восстановить данные невозможно.
За 19 лет
87 750 клиентов выбрали насОпытные специалисты
Нас рекомендуют производители
Знаем RAID лучше производителей
Прозрачная схема работы
Настоящая лаборатория
Нас рекомендуют благодарные клиенты
Выгодные цены
Конфиденциальность и полный комплект документов
Остались вопросы?
Оставьте телефон и менеджер перезвонит Вам
SD/MMC карта памяти и микроконтроллер AVR (часть 1) Базовые операции.
Как-то давно хотел себе сделать логгер температуры, возникла необходимость использовать внешнюю EEPROM память. Прикинув, что в наличие имеется 512кб память с i2c интерфейсом, сделал на ней экспериментальный логгер. Но когда возникла необходимость скинуть данные на компьютер для последующей обработки, то вылезли трудности с написанием софтины, которая бы считывала данные с EEPROM и писала бы их в текстовый файл.
Софтину я написал, только работала она как-то корявенько и медленно, для меня сойдет, а вот для массового производства корявости недопустимы. Захотелось писать данные на карту памяти, которую можно потом вставить в карт-ридер и через проводник перекинуть на компьютер, где их уже можно обрабатывать чем удобно. Для этого нужно уметь собственно писать данные на карту памяти, и знать файловую систему FAT, чтобы карточка распозналась компьютером. С этого вступления хочу начать небольшой цикл из 3-х статей, в котором я напишу про то, как работать с SD/MMC картой памяти и файловой системой FAT.
Карточку SD я выбрал из-за того, что внутри ее есть встроенный контроллер и что с ней можно работать в SPI 0 режиме (положительный синхроимпульс, защёлкивание по переднему фронту, сдвиг по заднему фронту), с которым довольно просто совладать. Посмотрим на распиновку(цоколевку) SD карты:
Видно, что карточка имеет 9 контактов, предназначение их следующее.
При работе с микроконтроллерами режима SPI за глаз хватает по скорости, потому использовать родной режим работы карты памяти будет нецелесообразно. Нам понадобятся пины DI, DO, CLK, CS для передачи данных и VSS, VDD для питания. Теперь немного про питание, SD карта требует от 2,7В до 3,6В, и тока до 100мА. Также если планируется горячее подключения, нужно предусмотреть просадку питающего напряжения при подсоединении карты. Иначе питание может просесть до такого уровня, когда BOD детектор сработает и ресетнет микроконтроллер. Этого можно избежать, налепив по питания конденсаторов и индуктивность. Учитывая все это, была слеплена стендовая платка для работы с SD картой:
Схема платки показана ниже:
Для питания карты памяти предусмотрен стабилизатор на 3,3В — LP2980-3.3. Его обвязка из конденсаторов C1,C3 – 100мкф, танталовые; C2,C4 – 0,1мкф, керамика; L1 – индуктивность на 22мкГн. Для сопряжения TTL уровней сигналов предусмотрены резистивные делители R2-R4 по 5,6кОм; R5-R7 по 10кОм. Светодиод D1 – сигнальный, для него ограничивающий резистор R1 – 470 Ом. Также на разъеме оказались выводы WP и INS, отслеживая состояния которых можно понять, защищена ли карта от записи механической защелкой, и присутствует ли карта в разъеме соответственно. Далее дело за подключением, все сигналы с карты подключил к PortB микроконтроллера. Нежелание использовать аппаратный SPI микроконтроллера буду аргументировать плохой переносимостью кода на разные модели микроконтроллеров. Для работы с SD картой сразу буду использовать ATmega32 (при работе с FAT нам понадобится около 20кб флеша). Хотя можно использовать хоть Atmega8, благо код для этого переделывать не нужно. Схема подключения к микроконтроллеру показана ниже:
Тактовый генератор – встроенный RC на 8Мгц, хотя можно использовать любой, но с 8Мгц работает шустро. Конденсаторы C5,C7 – по 100мкФ, электролиты, С4,С6 – 0,1мкф, керамика. Так как мы будем передавать большие объемы данных (стандартный блок – 512 байт), то выводить их будем по UART на компьютер в программу Terminal 1.9. Про сопряжение UART микроконтроллера с компьютером я писал уже неоднократно вот здесь, здесь и даже здесь.
Теперь у нас есть все железо для экспериментов с картой памяти. Но прежде чем перейти к программной части, упомянем, что карта типа MMC также может работать в SPI режиме. Для ее управления также стоит использовать выводы DI, DO, CLK, CS. Схемотехнические рассуждения для MMC такие же, как и для SD карты. Распиновка MMC карты показана ниже:
Перейдем к программной части. Рассмотрим, как инициализировать карту, и писать/читать из нее. Для перехода в режим SPI нужно дождаться, пока питающее напряжения на карте достигнет 3В (несколько миллисекунд, после включения) и подать более 74 импульса на выводе CLK, при высоком уровне на CS и DI выводах.
После нужно выставить на CS нулевой уровень, далее карта входит в режим SPI, теперь для успешной работы следует подать команды сброса и инициализации CMD0, CMD1 прежде, чем мы сможем писать/читать данные из карты. Команд для карты довольно много, часть из них приведена в таблице ниже:
Команд много, но основанная масса работы производится командами CMD0, CMD1 (сброс и инициализация) CMD17 (чтение), CMD24 (запись). Весь перечень команд и как с ними работать, можно просмотреть в родной спецификации SD карты на английском.
Рассмотрим формат команды для SD карты.
Сперва идет индекс команды. Индекс команды в десятичном виде определяется как 64+имя команды. Далее следует 4 байта аргументов (данные, адрес), после следует 7-ми битная контрольная сумма. После успешной отправки команды следует послать байтовую паузу из 8*N тактовых импульсов (N — целое), после чего карта ответит. Ответ может быть типа R1,R2,R3. В нашем случае, ответы будут только типа R1. Поэтому рассмотрим только его.
Старший бит R1 всегда равен 0. Назначения остальных битов хорошо видно с рисунка.
Рассмотрим процесс инициализации карты памяти командами CMD0,CMD1. Сперва, при высоком уровне на выводах CS и DI подаем 80 тактовых импульсов на вывод CLK. Далее на все время работы с картой сажаем CS на землю, подаем команду CMD0, контрольная сумма для которой равнa 0x95 (контрольная сумма в нашем случае нужна только для команды CMD0, в остальных случаях она не проверяется, поэтому все время будем использовать 0х95 как контрольную сумму). Далее, после байтовой паузы, карточка должна ответить 0х01, что означает, что она вошла в SPI режим и готова принимать команды. Теперь подаем команды CMD1, и после паузы ожидаем от карточки ответа 0х00, которые говорит о том, что карта готова к обмену данными.
Обмен данными между картой памяти и микроконтроллером будет производиться стандартными блоками по 512 байт. Адресация карты побайтная, начиная с нуля, но считывать данные можно только блоками. Адресом блока служит первый его байт. То есть 0-й блок имеет адрес 0х0000, 1-й блок — 0х0200, 2-й блок – 0х400 и т.д. (справедливо для размера блока 512 байт). В SDHC картах адресация поблочная, адресом блока служит его номер. Операция чтения блока производится в следующем порядке. Подается команда CMD17, байтовая пауза, если принимается ответ 0х00, то после еще одной байтовой паузы принимается блок данных, структура которого показана ниже.
Некое подобие временной диаграммы операции чтения можно посмотреть на рисунке ниже
Как видно, блок начинается с байта 0хFE (для команд CMD17/18, CMD24), далее идет 512 байт информации и 2 байта контрольной суммы (которая по умолчанию не используется). Операция записи производиться похоже, команда CMD24, пауза, ответ карты 0х00, и блок данных (так как контрольная сумма не проверяется, то ее поле можно заполнить случайно ). Далее следует ответ карты про прием блока данных.
После чего busy состояние, когда карта записывает полученные данные. Временная диаграмма операции записи приведена ниже.
Для подтверждения вышесказанного хочу привести пример работы с картой. Запишем в блок под номером 1 (адрес 0х0200) какие-то циклически повторяющиеся данные, например чередующиеся цифры от 0 до 9, а потом считаем этот же блок и посмотрим, записались ли наши данные. Для этого была написана небольшая программка :
#include <avr/io.h> //Cтандартная библиотека ввода/вывода
#include <string.h> //Библиотека для работы с строками
#define DI 0
#define DO 1
#define CLK 2
#define CS 3
#define INS 4
#define WP 5
char buffer [512]={}; //Буфер данных для записи/чтения
//Программа инициализации UART
void uart_init(void)
{
UBRRH = 0x00; //256000 битрейт, 1 стоп бит, без проверки четности
UBRRL = 0x01;
UCSRA = 0x00;
UCSRB = (1<<RXEN)|(1<<TXEN); //Прием и передача разрешена
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
//Программа передачи байта по UART
void uart_transmit(unsigned char data)
{
while ( !( UCSRA & (1<<UDRE)) );
UDR = data;
}
//Программа приема байта по UART
unsigned char uart_receive (void)
{
while ( !(UCSRA & (1<<RXC)) );
return UDR;
}
//Программа передачи строки по UART
void uart_transmit_message(char* msg)
{ unsigned char i;
i=0; //Начальное значение переменной
//Цикл до перебора всех элементов строки
while ((i<256)&(msg[i]!=0x00) )
{
//Отправка поэлементно символов строки
uart_transmit(msg[i]);
i++; //Увеличиваем номер элемента строки
}
}
//Программа передачи байта карте SD|MMC
void spi_transmit (unsigned char data)
{
unsigned char i;
for (i=0;i<8;i++) //Цикл перебора битов отправляемого байта
{
if ((data&0x80)==0x00) //Если все данные переданы
PORTB&=~_BV(DI); //Выставить бит данных
else
PORTB|=_BV(DI);
data=data<<1;
PORTB|=_BV(CLK); //Импульс
asm("nop"); //Пауза в 1 такт
PORTB&=~_BV(CLK);
}
}
//Программа приема байт от карты SD|MMC
unsigned char spi_receive (void)
{
//Декларация переменных
unsigned char i, res=0;
for(i=0;i<8;i++)
{
PORTB|=_BV(CLK); //Фронт импульса
res=res<<1;
if ((PINB&_BV(DO))!=0x00)
res=res|0x01; //Считать бит данных
PORTB&=~_BV(CLK); //Спад испульса
asm("nop");
}
return res;
}
unsigned char sd_cmd(char b0, char b1, char b2, char b3, char b4, char b5)
//Отправка команды карте SD|MMC
{ unsigned char res;
long int count;
spi_transmit (b0); //Передать индекс команды
spi_transmit (b1); //Передать аргумент
spi_transmit (b2);
spi_transmit (b3);
spi_transmit (b4);
spi_transmit (b5); //Передать CRC
count=0;
do { //Подождпть R1 ответа
res=spi_receive();
count=count+1;
} while ( ((res&0x80)!=0x00)&&(count<0xffff) );
return res;
}
unsigned char sd_card_init(void)
{ unsigned char i,temp;
long int count;
if ((PINB&_BV(INS))!=0x00) return 1; //Проверка карты в слоту
for (i=0;i<10;i++) //80 импульсов
spi_transmit (0xff);
PORTB&=~_BV(CS); //CS опустить
temp=sd_cmd (0x40,0x00,0x00,0x00,0x00,0x95); //CMD0
if (temp!=0x01) return 3; //Выйти, если ответ не 0х01
spi_transmit (0xff);
count=0;
do{
temp=sd_cmd (0x41,0x00,0x00,0x00,0x00,0x95); //CMD1
spi_transmit (0xff);
count=count+1;
} while ( (temp!=0x00)&&(count<0xffff) ); //Ждем 0x01 ответа R1
if (count>=0xffff) return 4;
return 0;
}
unsigned char read_block (char* buff, unsigned char a1, unsigned char a2, unsigned char a3, unsigned char a4)
{ unsigned char temp;
long int count;
if ((PINB&_BV(INS))!=0x00) return 1; //Проверка карты в слоту
temp=sd_cmd (0x51,a1,a2,a3,a4,0x95); //CMD17
if (temp!=0x00) return 5; //Выйти, если ответ не 0x00
spi_transmit (0xff);
count=0;
do{ //Ждем начала пакета данных
temp=spi_receive();
count=count+1;
} while ( (temp!=0xfe)&&(count<0xffff) );
if (count>=0xffff) return 5;
for (count=0;count<512;count=count+1) //Сохраняем данные
buff[count]=spi_receive();
spi_receive(); //Сохраняем CRC
spi_receive();
return 0;
}
unsigned char write_block (char* buff, unsigned char a1, unsigned char a2, unsigned char a3, unsigned char a4)
{ unsigned char temp;
long int count;
if ((PINB&_BV(INS))!=0x00) return 1; //Проверка карты в слоту
if ((PINB&_BV(WP))!=0x00) return 2; //Проверка write protect
temp=sd_cmd(0x58,a1,a2,a3,a4,0x95); //CMD24
if (temp!=0x00) return 6; //Выйти, если ответ не 0x00
spi_transmit (0xff);
spi_transmit (0xfe); //Начало пакета данных
for (count=0;count<512;count=count+1) //Отослать данные
spi_transmit(buff[count]);
spi_transmit (0xff); //Отослать CRC
spi_transmit (0xff);
temp=spi_receive();
if ((temp&0x05)!=0x05) return 6; //Выйти, если данные не приняты
count=0;
do { //Ждем окончания busy состояния
temp=spi_receive();
count=count+1;
}while ( (temp!=0xff)&&(count<0xffff) );
if (count>=0xffff) return 6;
return 0;
}
int main(void)
{ unsigned char temp;
int i;
PORTB=_BV(CS)|_BV(DO)|_BV(DI)|_BV(WP)|_BV(INS); //Инициализация портов
DDRB=_BV(CS)|_BV(DI)|_BV(CLK);
uart_init(); //Инициализация UART
temp=sd_card_init(); //Инициализация карты
if (temp==0x00)
{
uart_transmit_message("sd_card_init: initialization succes\r\n");
for (i=0;i<512;i=i+1)
buffer[i]=0x30+(i%10); //Заполнить буфер 12345...
temp=write_block(buffer,0x00,0x00,0x02,0x00);//Записать буфер
if(temp==0x00) uart_transmit_message("write_block: block writte succes\r\n");
else if (temp==1) uart_transmit_message("write_block: fail, no card in the slot\r\n");
else if (temp==2) uart_transmit_message("write_block: fail, card write protected\r\n");
else uart_transmit_message("read_block: CMD24 fail\r\n");
temp=read_block(buffer,0x00,0x00,0x02,0x00); //Считать буфер
if(temp==0x00) {
uart_transmit_message("read_block: data block read succes:\r\n");
for (i=0;i<512;i=i+1) //Выслать буфер по UART
uart_transmit(buffer[i]);
}
else if (temp==0x01) uart_transmit_message("read_block: fail, no card in the slot\r\n");
else uart_transmit_message("read_block: CMD17 fail\r\n");
}
else if (temp==0x01) uart_transmit_message("sd_card_init: fail, no card in the slot\r\n");
else if (temp==0x03) uart_transmit_message("sd_card_init: CMD0 fail\r\n");
else uart_transmit_message("sd_card_init: CMD1 fail\r\n");
while (1);
return 1;
}
Код программы прост, название функций говорит само за себя. Вначале инициализируем UART, посредством которого будем связываться с компьютером на скорости 256кбод/с, с одним стоп битом, без проверки четности (если такая скорость покажется большой по ряду причин, то ее легко подредактировать в строке 16). Функция void uart_init(void) инициализирует UART; void uart_transmit(unsigned char х) – пересылает байт х по UART; unsigned char uart_receive(void) – принимает байт; void uart_transmit_message(char * msg) – пересылает строку, на которую ссылается msg по UART. Подключение карты к микроконтроллера определяется директивами define в начале программы. Рассмотрим функции работы c картой SD/MMC. Функции void spi_transmit(unsigned char x), unsigned char spi_receive(void) отвечают за пересылку байт по SPI; unsigned char sd_cmd(unsigned char b0, unsigned char b1, unsigned char b2, unsigned char b3, unsigned char b4, unsigned char b5) – отвечает за пересылку команды карте памяти.
b0 – индекс команды, b1-b4 – аргумент команды, b5 – контрольная сумма, функция возвращает ответ R1 от карточки. Пользовательские функции: unsigned char sd_card_init(void) служит для инициализации карты командами CMD0, CMD1, при успешном выполнении возвращает результат 0х00. Функции unsigned char read_block (char* buff, unsigned char a1, unsigned char a2, unsigned char a3, unsigned char a4) и unsigned char write_block (char* buff, unsigned char a1, unsigned char a2, unsigned char a3, unsigned char a4) служат для чтения/записи блока, на который указывает buff, по адресу a1-a4, в случае выполнения возвращают 0х00. Во всех пользовательских функция предусмотрена проверка наличия карты в слоте и режима Write Protect, который устанавливается механическим ползунком на самой карте памяти.
При внутрисхемном программировании следует вынимать карту из слота, иначе программатор не сможет залить прошивку в микроконтроллер (сигналы WP, INS при вставленной карте садят на землю выводы нужные для внутрисхемного программирования). Выполнение приведенной выше программы приведет к тому, что целостность файловой системы (существовавшей до этого на карточке) будет нарушена, так что перед экспериментами не забудьте скопировать с карточки всю важную информацию.
Вот что я увидел в Terminal 1.9 при запуске программы:
Решил перепроверить с помощью утилиты WinHex содержание первого блока карты памяти:
Результаты совпадают. Запись чтение удалось. Теперь смело можно писать/читать данные на карту. Про то, как писать данные в файлы и про файловую систему FAT я напишу чуть позже.
Cледующая статья цикла: «SD/MMC карта памяти и микроконтроллер AVR (часть 2) Система FAT, Petit FatFs.»
Последняя стать цикла: «SD/MMC карта памяти и микроконтроллер AVR (часть 3) Система FAT, FatFs.»
Код программы в формате проекта для AVR Studio 4.
Разводка печатной платы в формате .lay для программы Sprint Layout 5
microSD, характеристики и техническое описание
Конфигурация контактовНомер контакта | Имя контакта | В режиме SD | В режиме SPI |
1 | DAT2 / X | Разъем линии передачи данных 2 | Не используется |
2 | DAT3 / CS | Разъем линии передачи данных 3 | Выбор микросхемы |
3 | CMD / DI | Строка команды / ответа | Ввод данных |
4 | VDD / VDD | Источник питания (+3.3 В) | Электропитание (+3,3 В) |
5 | CLK / SCLK | Часы | Последовательные часы |
6 | VSS / VSS | Земля | Земля |
7 | DAT0 / D0 | Разъем линии передачи данных 0 | Выход данных |
8 | DAT1 / X | Разъем линии передачи данных 1 | Не используется |
Рабочее напряжение: 2.От 7 В до 3,3 В
Емкость: 4 ГБ, 8 ГБ, 16 ГБ, 32 ГБ и т. Д.
Файловая система: SD / SDHC / SDXC
Система хранения: FAT12 и FAT16
Скорость передачи: 95 мегабайт в секунду (обычно)
Класс скорости: от класса 2 до класса 10
Форм-фактор: 11 мм × 15 мм × 1 мм
Где использовать SD-карту SD-картыявляются наиболее часто используемыми Устройства хранения во встроенных приложениях .Почти все микроконтроллеры имеют ограниченную флэш-память для программирования и ограниченную память EEPROM для хранения важных данных. Однако для проектов, связанных с регистрацией данных или изображениями или другой тяжелой графикой, программисту, возможно, придется сохранять огромные фрагменты данных в мегабайтах. В этой ситуации используется SD-карта.
Как использовать SD-картуТермины SD-карта означает карту « Secure Digital », существует различных типов SD-карт , начиная от больших RS-MMC, используемых в камерах, до микро- и мини-карт SD, которые обычно используются в мобильных телефонах. , MP3-плееры и т. Д.Хотя между всеми этими картами есть несколько важных различий, основной принцип работы одинаков.
SD-карты могут работать в двух режимах работы: в одном используются команды SD mode , а в другом — SPI mode . Большинство цифровых камер и мобильных телефонов будут использовать режим SD для связи с SD-картой, однако это не представляет нашего интереса, потому что только режим SPI для связи между SD-картой и микроконтроллером, таким как Arduino (ATmel), PIC, AVR. и т.п.. Ниже представлена простая схема подключения для SPI с микроконтроллером :
Для связи SPI требуется всего четыре провода, и он широко поддерживается большинством микроконтроллеров. Однако SD-карта работает с напряжением 3,3 В, и все ее контакты говорят только с 3,3 В, микроконтроллер, с другой стороны, может работать с + 5 В в этих случаях двунаправленный логический переключатель уровня (например, 74HC245), который может преобразовывать Рекомендуется использовать сигналы от 5 В до 3,3 В. После того, как вы подключили карту, вам нужно будет инициализировать ее, а затем начать общаться с ней с помощью команд SPI, здесь невозможно охватить весь процесс, поэтому вы можете прочитать таблицу ниже, чтобы получить дополнительную информацию.
Приложения- Портативная электроника
- Регистраторы данных
- Графические дисплеи
- MP3-плееры
- Обработчики аудиофайлов
- Обработчики изображений
Распиновка карты
Secure Digital (SD) @ pinouts.ru
SD-картыоснованы на более старом формате Multi Media Card (MMC), но большинство из них физически немного толще, чем карты MMC.Они также могут похвастаться более высокой скоростью передачи данных. Функции DRM доступны, но мало используются. SD-карты обычно имеют размеры 32 мм × 24 мм × 2,1 мм, но могут быть и 1,4 мм, как карты MMC.
Доступны различные классы скорости. Они упоминаются с той же нотацией nx, что и компакт-диски; кратно 150 кБ / с. Устройства со слотами SD могут использовать более тонкие карты MMC, но стандартные карты SD не помещаются в более тонкие слоты MMC. Карты MiniSD и MicroSD можно использовать непосредственно в слотах SD с помощью адаптера.Существуют считыватели, которые позволяют получить доступ к SD-картам через множество портов подключения, таких как USB, FireWire.
Штифт | Режим SD | Режим SPI | ||||
Имя | Тип | Описание | Имя | Тип | Описание | |
1 | CD / DAT3 | В / В / PP | Обнаружение карты / Разъем линии передачи данных 3 | КС | I | Выбор микросхемы в низком состоянии |
2 | CMD | PP | Строка команды / ответа | DI | I | Ввод данных |
3 | Vss1 | S | ЗЕМЛЯ | VSS | S | ЗЕМЛЯ |
4 | Vdd | S | Блок питания | VDD | S | Блок питания |
5 | CLK | I | Часы | SCLK | I | Часы |
6 | Vss2 | S | ЗЕМЛЯ | VSS2 | S | ЗЕМЛЯ |
7 | DAT0 | В / В / PP | Разъем линии передачи данных 0 | DO | О / ПП | Вывод данных |
8 | DAT1 | В / В / PP | Разъем линии передачи данных 1 | RSV | ||
9 | DAT2 | В / В / PP | Разъем линии передачи данных 2 | RSV |
совместим со стандартными операциями с MMC-картами.Все карты памяти SD и SDIO должны поддерживать более старый режим SPI / MMC, который поддерживает несколько более медленный четырехпроводной последовательный интерфейс (часы, последовательный вход, последовательный выход, выбор микросхемы), совместимый с портами SPI на многих микроконтроллерах. Многие цифровые камеры, цифровые аудиоплееры и другие портативные устройства, вероятно, используют исключительно режим MMC. Режим MMC не обеспечивает доступа к проприетарным функциям шифрования SD-карт, и бесплатная документация SD не описывает эти функции. Поскольку шифрование SD предназначено в первую очередь для производителей мультимедиа, от него мало пользы для потребителей, которые обычно используют SD-карты для хранения незащищенных данных.
SD поддерживает три режима передачи: режим SPI (отдельный последовательный вход и последовательный выход), однобитовый режим SD (отдельные каналы команд и данных и собственный формат передачи) и четырехбитный режим SD (используются дополнительные контакты плюс некоторые переназначенные контакты) для поддержки четырехразрядной параллельной передачи. Низкоскоростные карты поддерживают скорость передачи данных от 0 до 400 кбит / с, а также режимы передачи SPI и однобитного SD. Высокоскоростные карты поддерживают скорость передачи данных от 0 до 100 Мбит / с в четырехбитном режиме и от 0 до 25 Мбит / с в SPI и однобитном режимах SD.
Функции безопасности SD-карт включают:
- Механизм защиты авторских прав со стандартом SDMI (Secure Digital Music Initiative)
- Интегрированная система защиты и шифрования файлов CPRM (CPRM — это защита контента для записываемых носителей)
: основы | Устройства Delkin — защищенное управляемое хранилище
Последовательный интерфейс SD-карт сделал их чрезвычайно популярными как в бытовых, так и в промышленных устройствах OEM-производителей.Ассоциация SD-карт строго контролирует спецификации SD-карт, включая распиновку SD-карты, поэтому существуют универсальные стандарты для всего, от физических интерфейсов до командных протоколов, которые делают интеграцию бесшовной и простой. Карты SD предназначены для удовлетворения потребностей как потребительского, так и промышленного рынков и их различного бюджета. Большинство потребительских устройств полагаются на флэш-память MLC, в то время как промышленные устройства используют флэш-память SLC. Распиновка SD-карты может отличаться в зависимости от режима карты.
Режимы SD-карты
SD-карты автоматически используют режим SD для протокола шины.Режим SD обеспечивает высокую скорость и ширину шины от одного до четырех бит в последовательном режиме тактовой частоты. Однако пользователи могут изменить режим SD по умолчанию, чтобы использовать карту в режиме SPI. Режим SPI лучше всего подходит для приложений, в которых идеально подходит более медленная и простая карта. Разница в скорости с режимами SD и SPI может быть значительной, поскольку карта может работать только с одним битом в режиме SPI.
Распиновка SD-карты в режиме SD
Каждая SD-карта, независимо от режима, имеет 9 контактов, с восьмым контактом на одном конце и девятым на другом.При работе в режиме SD распиновка и сигнальные функции выглядят следующим образом:
- DAT1 — Бит данных один
- DATA0 / DO — Бит данных 0
- Vss2 — Земля 2
- CLK — Часы
- Vcc — Питание напряжение
- Vss1 — Земля 1
- CMD / DI — Командная строка
- DAT3 / CS — Бит данных 3
- DAT2 — Бит данных 2
С этой распиновкой карты SD могут поддерживать нормальный и высокоскоростной режимы.
Распиновка SD-карты в режиме SPI
Режим SPI обеспечивает более простое функционирование, и не каждый вывод имеет соединение.Распиновка и функции сигналов следующие:
- RSV — зарезервировано
- DO — Master In / Slave Out (или MISO)
- Vss — Земля
- CLK — Clock
- Vcc — Напряжение питания
- DI — Master Out / Slave In (MOSI)
- CS — Chip Select
- NC — Нет соединения
- RSV — Зарезервировано
У вас есть вопросы о распиновке SD-карты и использовании SD-карт для флэш-памяти? Компания Delkin предоставит вам необходимую информацию и поможет оценить все варианты надежной памяти промышленного уровня.Поговорите с нашей командой разработчиков сегодня.
Обзор стандарта SD | SD Association
Введение в стандарты SD
СтандартыSD позволяют производителям выпускать высокопроизводительные продукты, которые ежедневно расширяют возможности миллионов людей, слушающих музыку, записывающих видео, фотографирующих, сохраняющих данные и использующих мобильный телефон.
В качестве отраслевого стандарта стандарт SD используется во многих сегментах рынка портативных запоминающих устройств, включая мобильные телефоны, цифровые камеры, MP3-плееры, персональные компьютеры, планшеты, принтеры, автомобильные навигационные системы, электронные книги и многие другие потребительские электронные устройства. устройств.
«Универсальные, портативные и удобные стандарты SD лидируют на рынке сегодня и будут развиваться вместе с будущим цифрового мира».
SD-карта имеет три определенных форм-фактора; полноразмерные, miniSD и microSD. microSD пришла на смену miniSD, поэтому на рынке чаще встречаются два форм-фактора, которые показаны в таблице ниже.
Обычные карты памяти SD имеют только один ряд контактов, включая VDD источника питания 3,3 В, которые используются для режимов интерфейса шины по умолчанию, высокой скорости и UHS-I.У полноразмерных карт 9 контактов (два VSS), а у карт microSD 8 контактов (один VSS).
Карты с более высокой скоростью передачи данных по шине имеют новое расположение выводов во втором ряду для поддержки скоростей передачи UHS-II, UHS-III и SD Express. 1.8V VDD входит во второй ряд контактов. Для всех карт UHS-II, UHS-III и SD Express требуется два источника питания
напряжением 3,3 В и 1,8 В.
Non UHS-II может выдвигать две антенные площадки для бесконтактных приложений, но антенные площадки будут мешать второму ряду карт UHS-II / UHS-III.В качестве альтернативы был определен интерфейс NFC (Near Field Communication), использующий протокол Single Wire через площадку во втором ряду.
Форм-фактор | SD | microSD | |
Размер | |||
Тип емкости карты | SD, SDHC, SDXC и SDUC | ||
Физический | Кол-во выводов | High Speed и UHS-I: 9 контактов UHS-II и UHS-III: 17 контактов SD Express 1-полосный: 17-19 контактов SD Express 2-полосный: 25-27 контактов | High Speed и UHS-I: 8 контактов UHS-II и UHS-III: 16 контактов SD Express 1-полосный: 17 контактов |
Рабочее напряжение | 3.Диапазон 3 В VDD в первом ряду: 2,7 В — 3,6 В Диапазон 1,8 В VDD во втором ряду: 1,70–1,95 В | ||
Переключатель защиты от записи | ДА | НЕТ |
Технология NAND показала поразительный прогресс, обеспечив экспоненциальный рост объема памяти. В соответствии с увеличением объема памяти требуется гораздо более высокая скорость интерфейса шины, чтобы сократить время доступа к карте такой емкости.
UHS-II и UHS-III предлагают гораздо более высокие скорости шины, чем UHS-I, используя низковольтный дифференциальный сигнал (LVDS) на выводах второго ряда. Новая скорость SD Express самая высокая. Первый ряд контактов на картах UHS-II, UHS-III и SD Express обеспечивает обратную совместимость
и взаимодействие с обычными интерфейсными хост-устройствами.
Стандартные карты памяти SD
Упрощенные спецификации Загрузки
Упрощенные версии некоторых спецификаций карт памяти SD доступны для загрузки разработчиками.Чтобы получить доступ к полным спецификациям, просто присоединитесь к SD Association.
Начните использовать стандарты SD в своих продуктах
Заинтересованы в использовании стандартов SD в вашем следующем продукте?
Узнайте, как
Взаимодействие микроконтроллеров с SD-картой
Secure Digital Card (SD) — это недорогой, энергонезависимый формат карты памяти, разработанный SD Card Association. С момента своего появления в начале века спрос на это устройство хранения памяти среднего размера, энергоэффективное и компактное, росло быстрыми темпами.Поэтому, чтобы соответствовать требованиям рынка, SDA была создана как некоммерческая организация для продвижения и создания стандартов SD-карт. Существуют различные темы, связанные с SD-картой, такие как различные семейства устройств, классы скорости, смарт-карты, безопасность карты и т. Д., И она используется на различных рынках, таких как цифровые камеры, персональные компьютеры и встроенные системы. Некоторые из стандартных вариантов включают SD, SDHC, SDXC, SD-сверхвысокую скорость и т. Д. MicroSD — это миниатюрный формат карты памяти SD с малым форм-фактором, который широко используется в различных электронных устройствах.
Мы собираемся узнать об использовании SD-карт во встроенных системах. Чтобы быть конкретным, мы будем иметь дело с использованием SD-карт в небольших встроенных системах.
Схема и интерфейс
SD-карта имеет собственный хост-интерфейс, кроме режима SPI, для связи с ведущими устройствами. Собственный интерфейс использует четыре линии для передачи данных, где микроконтроллер имеет модуль контроллера SD-карты, и для его использования требуется отдельная лицензия. Поскольку SPI является широко используемым протоколом и доступен в большинстве недорогих микроконтроллеров, режим SPI является широко используемым интерфейсом в недорогих встроенных системах.Диапазон рабочего напряжения семейства SD составляет от 2,7 В до 3,6 В, и это указывается в регистре условий работы (OCR).
Распиновка SD-карты
Распиновка MicroSD-карты
Большинство микроконтроллеров используют протокол связи SPI для взаимодействия с SD-картами. На SD-картах есть микроконтроллер, который показывает их доступность главному контроллеру (микроконтроллеру). Микроконтроллер видит SD-карту как адресный сектор, на котором возможны функции чтения / записи.Когда микроконтроллер находится в режиме SPI, связь между ведущим и ведомым осуществляется через 4 контакта, а именно. часы, выбор микросхемы, ввод и вывод данных. Следует иметь в виду, что во время обмена данными между двумя устройствами микроконтроллер будет посылать часы.
Большинство плат для разработки имеют специальный слот для SD-карты. Но чтобы разобраться в связях, разберем эту довольно простую схему.
Подробнее о курсе
Схема
Если логический уровень микроконтроллера отличается от уровня SD-карты, для преобразования линейных напряжений необходимо использовать устройство сдвига уровня.
Вывод MISO (ведущий последовательный выход) должен быть подключен к выводу SDI (последовательный ввод данных) на микроконтроллере.
Вывод MOSI (главный выход — последовательный вход) должен быть подключен к выводу SDO (последовательный выход данных) на микроконтроллере.
Контакт SCK (последовательные часы) должен быть подключен к контакту SCK (последовательные часы) на микроконтроллере.
Вывод CS (выбор микросхемы) должен быть подключен к соответствующему выводу CS на микроконтроллере или к любому цифровому выводу ввода / вывода на микроконтроллере. Общая земля обеспечена.
ВАЖНОЕ ПРИМЕЧАНИЕ : При подключении источника питания убедитесь, что питание поступает от источника питания 3,3 В, поскольку источник питания 5 В приведет к тому, что ваша карта станет дымом.
Интерфейс
После того, как соединения установлены, мы готовы сопрягать наше оборудование с программным обеспечением.
Правильно установите направление каждого из четырех штифтов. При активации режима SPI идеальной конфигурацией должен быть режим (0,0) и фаза с дискретизацией входных данных в середине выходных данных.Кроме того, тактовая частота должна быть установлена в диапазоне от 100 кГц до 400 кГц до инициализации карты. После завершения инициализации часы можно установить на более желаемую частоту.
Команды SD
Затем следует сложная часть, инициализация SD-карты и выполнение обмена необработанными данными. Системный подход к программированию программного обеспечения упростил бы задачу.
Но сначала важно узнать, как микроконтроллер активирует SD-карту. Существует фиксированный набор команд и ответов, которым необходимо следовать, чтобы создать структуру команды для ответа в нашей программе.Данные передаются в байтовом формате определенной длины.
В следующей таблице показаны необходимые команды для карты и соответствующий ответ от карты.
Каждая команда имеет постоянную длину 6 байтов.
Первый байт — это сложение номера команды и числа 64.
Пример :
Для CMD0: номер команды 0 + 64 = 64 = 0x40 в шестнадцатеричном формате.
Для CMD1: номер команды 1 + 64 = 65 = 0x41 в шестнадцатеричном формате.
И так далее.
За ним следует набор из четырех байтов, которые известны как аргументы. Эти аргументы обычно содержат адрес данных или длину блока.
Последний байт — это байт CRC (Cyclic Redundancy Check). Большинство команд в режиме SPI не требуют контрольного байта, если функция CRC не включена. Для некоторых команд, таких как CMD0, CRC равен 0x95, и в большинстве случаев отправляется 0xFF. Для включения CRC необходимо отправить правильный контрольный байт с микроконтроллера.Итак, убедитесь, что функция CRC включена или отключена.
Командный кадр выглядит так:
Карта получит команду, когда на выводе DO (вывод данных) будет установлен высокий уровень, как показано выше. Вывод CS (Chip Select) должен быть переведен из высокого в низкий уровень перед отправкой команды и должен оставаться на низком уровне во время процесса. Время между командой и ее ответом известно как время ответа на команду (NCR). Как упоминалось ранее, что касается тактовых импульсов от микроконтроллера, соответствующий байт ответа, отправленный обратно с карты в микроконтроллер, должен управляться последовательными тактовыми импульсами микроконтроллера.Существует вероятность того, что байт ответа с карты может быть пропущен микроконтроллером из-за отсутствия управляющего тактового импульса. Следовательно, необходимо убедиться, что 8-битный тактовый импульс отправляется на карту вскоре после отправки командного кадра (см. ТЕХНИЧЕСКОЕ ПРИМЕЧАНИЕ ниже). Также при получении байта от карты вывод DI (Data In) должен быть установлен в высокий уровень.
Кроме того, давайте проанализируем различные типы ответов , которые мы получаем от карточки, и их значение.
Ответ R1, 0x01 означает, что команда, отправленная до ответа, привела к тому, что карта перешла в состояние ожидания.
Байт ответа 0x00 означает, что команда была принята, и карта будет ожидать наступления предложенного события. Если какие-либо другие биты в ответе R1 установлены, это результат ошибки, и это будет меньше коэффициента, указанного в каждом бите ответа R1 на рисунке.
Инициализация SD-карты
Теперь, что касается отправки команд, существует порядок, в котором они должны отправляться.Только команды CMD0, CMD1, ACMD41, CMD58 и CMD59 будут приняты, когда карта находится в состоянии ожидания. Отправка любой другой команды может привести к недопустимому ответу.
ТЕХНИЧЕСКОЕ ПРИМЕЧАНИЕ : После подключения карты микроконтроллер всегда должен отправлять набор байтов, которые мы будем называть фиктивными байтами. Один фиктивный байт равен 0xFF. Эти фиктивные байты имеют простое, но важное назначение. Перед инициализацией карта должна знать частоту отправки данных.Отправив примерно 75 фиктивных битов (фиктивный байт * 10 раз = 80 бит), карта будет готова к обмену данными. Кроме того, даже после отправки каждой команды рекомендуется отправлять хотя бы один фиктивный байт. Логическим объяснением этого является то, что связь управляется тактовым импульсом микроконтроллера. Тактовый импульс отправляется только при заполнении буфера данных. После отправки каждого ответа и до следующей команды или между командой и ответом SCK перестанет генерировать импульсы из-за пустого буфера данных.Чтобы гарантировать непрерывную передачу тактовых импульсов между каждой командой, заполните буфер данных ненужным значением, например фиктивным байтом. Чтобы создать фиктивную байтовую функцию с количеством циклов в качестве аргумента.
Первая команда , которая должна быть отправлена на карту, — это команда CMD0 . Структура каждой второй команды-ответа должна быть основана на этой модели.
- Установите вывод DO на высокий уровень.
- Переместите штифт CS от высокого к низкому.
- Отправить фиктивный байт.
- Затем непрерывно отправляйте следующую 6-байтовую команду
Первый байт: 0x40
Следующие четыре байта: 0x00000000
Байт CRC: 0x95
- Отправить еще один фиктивный байт или столько, сколько требуется, чтобы сгенерировать SCK, дающий время для SD карта для ответа на запрос команды.
- Подождите, пока установится бит флага приема, а затем прочтите ответ с SD-карты или создайте цикл для чтения ответа несколько раз. Ответ должен возвращаться в пределах времени от команды до ответа (Ncr).Или что-то должно быть не так.
- Желаемый ответ — 0x01, что означает, что карта находится в состоянии ожидания, и все готово.
Отправьте команду CMD8 рядом, чтобы проверить версию вашей SD-карты.
Разница в 6-байтовых командах:
Первый байт: 0x48
Следующие четыре байта: 0x000001AA
Байт CRC: 0x87
Мы ищем две возможности в нашем байте ответа. Либо 0x01, либо 0x05.
Ответ 0x01 означает, что у вас есть SD-карта версии 2.За ответом 0x01 следуют 4 байта 0x00, 0x00, 0x01, 0xAA в порядке их передачи с SD-карты, что, по сути, является аргументом, который вы отправляете в своей команде.
Если ответ 0x05, это означает, что карта является версией 1 или картой MMC. Если карта действительно является SD-картой версии 2, то этот ответ является результатом недопустимой команды. Кроме того, карта теперь находится в состоянии ожидания.
После выполнения двух вышеуказанных команд (CMD0 и CMD8) можно с уверенностью сказать, что наша SD-карта работает в хорошем состоянии и готова к чтению / записи данных.
Кроме того, чтобы убедиться, что SD-карта работает при правильном рабочем напряжении, отправьте команду CMD58 .
Затем мы должны запустить процесс инициализации i . Для этого отправьте команду CMD1 и дождитесь ответа 0x00, означающего, что бит состояния ожидания сброшен.
Если вы используете SDC или с целью создания общего кода, рекомендуется сначала отправить команду ACMD41 , чтобы начать процесс инициализации, а затем отправить команду CMD1 , если ACMD41 отклонен.
В любом случае процесс инициализации может занять несколько сотен миллисекунд, поэтому рекомендуется выполнить несколько итераций для проверки байта ответа.
Предположим, что ответ CMD8 привел к 0x05, необходимо учесть некоторые соображения относительно процедуры инициализации. Карты версии 1 могут не поддерживать команду ACMD41. И даже если они поддерживают команду ACMD41, отправьте команду CMD55 и проверьте ответ, который будет 0x05 вместо 0x01, а затем вместо отправки команды CMD41 отправьте команду CMD1 для завершения процесса инициализации.
Чтение / запись SD-карты
Теперь мы готовы к чтению / записи необработанных данных.
Первое, что нужно сделать здесь, это установить размер блока чтения / записи.
Для этого отправьте команду CMD16 . Аргументы этой команды должны указывать длину блока.
Пример : Чтобы установить длину блока равной 512 байтам, отправьте 4-байтовый аргумент как 0x00000200.
Отправить 0xFF в качестве байта CRC и дождаться байта ответа 0x00.
Что касается команд для чтения / записи, общая структура отправки команд такая же, но с некоторыми дополнительными деталями.
4-байтовый аргумент каждой команды будет содержать указанный адрес сектора, из которого данные читаются или записываются.
Отправить команду CMD17 для одного блока чтения и дождаться ожидаемого ответа 0x00. Как только это будет сделано, дождитесь, пока SD-карта отправит другой ответ, 0xFE. Этот ответ, передаваемый SD-картой, является индикатором начала непрерывной передачи блока данных. В конце отправьте фиктивный байт или два, и процесс будет завершен.
Временная диаграмма однократного чтения
Временная диаграмма многоблочного чтения
охватывать { цвет фона: # cb2d46! важно; } .fusion-content-box-1 .fusion-content-box-hover .link-area-box-hover .heading .icon> span { цвет границы: # cb2d46! важно; }]]>Этот контент доступен только нашим зарегистрированным пользователям. Создайте бесплатную учетную запись для доступа к контенту.
SignUp / SignInВ случае CMD18 для блока с множественным чтением , выполните процедуру до ответа 0xFE.После этого карта будет передавать блоки данных до тех пор, пока не получит команду CMD12 , которая является указанием микроконтроллера о завершении чтения блока.
В случае выполнения одноблочной записи или многоблочной записи , отправьте CMD24 или CMD25 соответственно и дождитесь ответа 0x00. Для каждой записи блока требуется начальный токен 0xFE в случае записи одного блока и 0xFC в случае записи нескольких блоков, чтобы карта могла начать запись одного блока данных в указанный сектор.Убедитесь, что 0xFC отправляется для каждой записи блока во время записи нескольких блоков. После каждой записи блока должен быть выпущен маркер остановки 0xFD (не требуется в случае записи одного блока). После завершения записи всего блока данных команда CMD13 является обязательной .
Не забывайте отправлять фиктивные байты между ответами, а также перед отправкой стартовых токенов.
Временная диаграмма однократной записи
охватывать { цвет фона: # cb2d46! важно; } .fusion-content-box-2.fusion-content-box-hover .link-area-box-hover .heading .icon> span { цвет границы: # cb2d46! важно; }]]>Этот контент доступен только нашим зарегистрированным пользователям. Создайте бесплатную учетную запись для доступа к контенту.
SignUp / SignInВременная диаграмма многоблочной записи
охватывать { цвет фона: # cb2d46! важно; } .fusion-content-box-3 .fusion-content-box-hover .link-area-box-hover .heading .icon> span { цвет границы: # cb2d46! важно; }]]>Этот контент доступен только нашим зарегистрированным пользователям.Создайте бесплатную учетную запись для доступа к контенту.
SignUp / SignInВзаимодействие микроконтроллеров с SD-картой — блок-схема
Создание функции для каждого из разделов чтения / записи — идеальный способ кодирования программного обеспечения. Это основная структура, которой необходимо следовать во время операций чтения / записи, выполняемых с необработанными данными на SD-карте.
охватывать { цвет фона: # cb2d46! важно; } .fusion-content-box-4 .fusion-content-box-hover .link-area-box-hover .heading.icon> span { цвет границы: # cb2d46! важно; }]]>Этот контент доступен только нашим зарегистрированным пользователям. Создайте бесплатную учетную запись для доступа к контенту.
SignUp / SignInДополнительная литература
Поделитесь любовью, поделитесь этим
Коннектор Micro SD Express | Входные выходные разъемы
ВЫСОКОПРОИЗВОДИТЕЛЬНЫЙ РАЗЪЕМ ДЛЯ КАРТЫ ПАМЯТИ, СООТВЕТСТВУЮЩИЙ СПЕЦИФИКАЦИИ SD V7.1
Компания Amphenol первой в отрасли предлагает разъемы для карт памяти microSD Express и Micro SD (UHS-I).17-контактный разъем microSD Express обеспечивает высокую скорость до 985 МБ / с и соответствует требованиям PCIe ® 3.0. Коннектор позволяет платформе microSD Express полностью раскрыть свой потенциал; возможность использования карты microSD Express в качестве съемного твердотельного накопителя (SSD). Эта новая платформа идеально подходит для контента с высоким разрешением и требовательных к скорости мобильных вычислений и устройств IOT.
- Скорость передачи данных: 8 ГТ / с (требование PCIe ® Gen 3)
- Поддерживает функцию обнаружения карты
- Обратная совместимость и взаимодействие с устаревшими картами Micro SD
microSD и соответствующие знаки и логотипы являются товарными знаками SD- ООО «3С».Спецификация карты памяти microSD Express v7.1 является собственностью SD Association.
PCIe — зарегистрированная торговая марка PCI-SIG.
ВЫСОКОПРОИЗВОДИТЕЛЬНЫЙ РАЗЪЕМ ДЛЯ КАРТ ПАМЯТИ, СООТВЕТСТВУЮЩИЙ СПЕЦИФИКАЦИИ SD V7.1
Компания Amphenol первой в отрасли предлагает разъемы для карт памяти microSD Express и Micro SD (UHS-I). 17-контактный разъем microSD Express обеспечивает высокую скорость до 985 МБ / с и соответствует требованиям PCIe ® 3.0. Коннектор позволяет платформе microSD Express полностью раскрыть свой потенциал; возможность использования карты microSD Express в качестве съемного твердотельного накопителя (SSD).Эта новая платформа идеально подходит для контента с высоким разрешением и требовательных к скорости мобильных вычислений и устройств IOT.
- Скорость передачи данных: 8 ГТ / с (требование PCIe ® Gen 3)
- Поддерживает функцию обнаружения карты
- Обратная совместимость и взаимодействие с устаревшими картами Micro SD
microSD и соответствующие знаки и логотипы являются товарными знаками SD- ООО «3С». Спецификация карты памяти microSD Express v7.1 является собственностью SD Association.
PCIe — зарегистрированная торговая марка PCI-SIG.
Коммутационная плата для карты microSD
Обзор
Карты памяти MicroSD (первоначально известные как TransFlash) предоставляют компактный и недорогой способ добавить в проект гигабайты энергонезависимой памяти. Все SD-карты поддерживают связь по шине SPI (Serial Peripheral Interface), что упрощает взаимодействие одной из этих карт с микроконтроллером с поддержкой SPI.
Эта несущая плата упрощает подключение к карте microSD, разделив все контакты разъема для карты microSD на два ряда по 0.Штифты с шагом 1 ″. Размер платы составляет всего 0,8 ″ × 0,7 ″, и в комплект входит набор отрывных 0,1 ″ штыревых штырей (одна 1 × 7 и одна 1 × 4), которые можно припаять для использования платы с макетными платами, перфорированными платами или 0,1. ″ Розетки. (Заголовки могут быть отправлены как одна часть размером 1 × 11, которую можно разделить на две части).
|
|
У нас также есть большая коммутационная плата для карт памяти microSD с регулятором 3,3 В и переключателями уровня, которые можно напрямую интегрировать в системы 5 В; он выламывает только более часто используемые контакты интерфейса режима шины SPI и имеет два монтажных отверстия. На изображениях ниже показаны две версии бок о бок.
|
|
Использование коммутационной платы
Поскольку многие микроконтроллеры имеют встроенные интерфейсы SPI, большинство проектов для любителей обмениваются данными с картами Secure Digital в режиме шины SPI. (Альтернативный режим шины SD является проприетарным, и для доступа к полным спецификациям требуется лицензия SD Association.) Где возможно, контакты на этой плате помечены в соответствии с их функциями в режиме SPI.
Все контакты питания карты microSD и все сигнальные контакты, необходимые для взаимодействия с картой через SPI, расположены на правой стороне платы.На левой стороне платы видны дублированные выводы питания, а также две дополнительные сигнальные линии (DAT1 и DAT2), которые не нужны для связи SPI, но используются в режиме 4-битной шины SD. Вывод DAT1 также служит выводом прерывания (IRQ) в устройствах SDIO. (Обратите внимание, что если вы используете этот модуль в макете, вы можете припаять контакты заголовка к обеим сторонам платы для дополнительной стабильности, даже если вы планируете использовать только контакты SPI.)
В следующих таблицах описывается функция каждого вывода на коммутационной плате в режимах SPI и SD:
Штифт | Описание | ||
---|---|---|---|
ЗЕМЛЯ (VSS) | Питание и логическая земля | ||
VDD | Напряжение питания (2.От 7 В до 3,6 В для стандартных карт microSD) | ||
CD | Обнаружение карты. Когда карта вставлена, этот штифт плавающий; когда карта не вставлена, она замкнута на массу. При наличии карты можно использовать подтягивающий резистор, чтобы подтянуть линию к высокому уровню. | ||
Режим SPI | Режим SD | ||
Штифт | Описание | Штифт | Описание |
DI | Данные в (MOSI) | CMD | Команда / ответ |
DO | Вывод данных (MISO) | DAT0 | Данные (бит 0) |
SCLK | Часы | CLK | Часы |
КС | Выбор микросхемы (активный низкий) | DAT3 | Данные (бит 3) |
— IRQ | Зарезервировано Прерывание (активный низкий уровень; только устройства SDIO) | DAT1 IRQ | Данные (бит 1) Прерывание (активный низкий уровень; только устройства SDIO) |
– | Зарезервировано | DAT2 | Данные (бит 2) |
Предупреждение: Стандартные карты microSD используют 3.Сигналы логического уровня 3 В, поэтому при подключении к системе 5 В. требуются переключатели уровня или делители напряжения.
Обмен данными с картой microSD
SD Association публикует набор упрощенных спецификаций для SD-карт, содержащих информацию о взаимодействии с ними. Однако есть несколько способов начать работу без понимания спецификаций или написания собственного кода с нуля, поскольку многие платформы разработки микроконтроллеров предоставляют библиотеки для связи с SD-картами.Например:
Схема
Схема коммутационной платы для карты microSD. |
---|
Эту схему также можно загрузить в формате pdf (140 КБ pdf).