
Secure Digital (SD) — это формат карт памяти, энергонезависимого типа хранения данных. Разработана компанией SD Card Association (SDA) для использования в портативных устройствах, таких как мобильные телефоны, камеры, навигаторы и т.д.
Типы карт Micro SD
Secure Digital включает в себя четыре семейства карт:
- SDSC: SD стандартной емкости. Карта имеет емкость 2 ГБ. Для карт данного типа оптимальной будет файловая система FAT-16, так же можно использовать и FAT-12.
- SDHC: SD большой емкости. Такая карта имеет емкость от 2 ГБ до 32 ГБ. Для карт данного типа оптимальной будет файловая система FAT-32. FAT-16 применяется для карт не превышающих 4 Гб. Можно использовать и 32 ГБ, но максимальный размер файла, который можно записать 4 Гб.
- SDXC: данный тип SD карт имеет увеличенную емкость. Карты данного типа имеют емкости от 32 ГБ до 2 ТБ. Для таких карт разработана специальная файловая система exFAT (расширенный фат).
- SDIO: объединяет функции ВВОДА/ВЫВОДА с хранением данных.
SD-карты различаются не только объемом хранимой информации но и разным размером.
- Обычная SD — 1,25 на 0,95 дюйма
- Мини SD — 0,87 на 0,79 дюйма
- Micro SD — 0,43 на 0,59 дюйма
SD карта и файловая система
SD-карта — это устройство, которое позволяет записывать или считывать записанную информацию. Данные хранятся в блоках с фиксированным размером. Каждый блок имеет свой адрес, поэтому данный тип хранения данных называется хранением с блочной адресацией. В этом случае управляющее устройство может считывать или записывать блоки фиксированного размера, указывая их адрес этого блока.
Большинство SD-карт форматируются заводом изготовителем под оптимальную файловую систему. Пользователь может сам отформатировать карту под нужную ему файловую систему.
Ниже представлена зависимость размера и предпочтительной файловой системы.
- Для карты SDSC
- Емкость менее 16 МБ — FAT 12
- Емкость от 16 МБ до 32 МБ — FAT 16
- Емкость более 32 МБ — FAT 16B
- Для SDHC-карт
- Емкость менее 7,8 ГБ — FAT 32
- Емкость более 7,8 ГБ — FAT 32
- Для карт SDXC
- exFAT
Внимание!
- Библиотека Arduino поддерживает только файловые системы FAT16 и FAT32. Убедитесь, что ваша SD-карта отформатирована только в одной из этих систем, иначе вы получите ошибку инициализации.
- Для форматирования SD-карты вы можете скачать SD-форматтер по следующей ссылке — SD Memory Card Formatter. Или отформатировать встроенными средствами Windows.
Модуль SD карты для Arduino
Модуль карты micro-SD представляет собой простое решение для передачи данных на стандартную карту SD и обратно. Этот модуль имеет интерфейс SPI, совместимый с любой SD-картой, и использует источник питания 5 В или 3,3 В, совместимый с Arduino UNO/Mega.
Назначение контактов
Название контакта | Описание |
---|---|
CS | Chip Select |
SCK | Тактирование |
MISO | Master вход Slave выход |
MOSI | Master выход Slave вход |
Схема подключения модуля Micro SD
На схеме показаны подробные соединения модуля SD с Arduino.
MOSI | контакт 11 |
MISO | контакт 12 |
CLK | контакт 13 |
CS | контакт 4 |
Примечание!
Вы можете подключить VCC модуля либо к 5В, либо к 3,3В.
Пример
В этом примере мы собираемся связать карту micro SD с Arduino и выполнить на ней операцию чтения-записи.
Мы будем использовать встроенный код, предоставленный Arduino IDE.
Код в Arduino IDE использует два библиотечных файла:
- SPI.h
- SD.h
Эти библиотечные файлы непосредственно содержат определения функций, которые используются для операций чтения-записи карты памяти.
Для доступа к коду в Arduino IDE вы можете выполнить следующие шаги:
Откройте IDE ⇒ Нажмите «Файлы» ⇒ Нажмите «Примеры» ⇒ Выберите «SD» ⇒ Открыть «ReadWrite».
Эти библиотечные файлы непосредственно содержат определения функций, которые используются для операций чтения-записи карты памяти.
Что бы вам было проще, мы разместим этот код ниже.
Скетч для чтения и записи на SD-карту с помощью Arduino
#include <SPI.h> #include <SD.h> File myFile; void setup() { // Откройте последовательную связь и подождите, пока откроется порт: Serial.begin(9600); while (!Serial) { ; // дождитесь подключения последовательного порта. Требуется только для родного порта USB } Serial.print("Initializing SD card..."); if (!SD.begin(4)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); // открываем файл. обратите внимание, что одновременно может быть открыт только один файл, // так что вы должны закрыть это, прежде чем открывать другое. myFile = SD.open("test.txt", FILE_WRITE); // если файл открылся нормально пишем в него: if (myFile) { Serial.print("Writing to test.txt..."); myFile.println("testing 1, 2, 3."); // закрываем файл: myFile.close(); Serial.println("done."); } else { // если файл не открылся, вывести ошибку: Serial.println("error opening test.txt"); } // повторно открыть файл для чтения: myFile = SD.open("test.txt"); if (myFile) { Serial.println("test.txt:"); // читаем из файла, пока в нем больше ничего нет: while (myFile.available()) { Serial.write(myFile.read()); } // закрываем файл: myFile.close(); } else { // если файл не открылся, вывести ошибку: Serial.println("error opening test.txt"); } } void loop() { // после настройки ничего не происходит }