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() {
// после настройки ничего не происходит
}





