Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

SD-карта (SDC/MMC)

Рано или поздно может понадобиться сохранять данные, собранные с датчиков, игровые файлы или другую информацию. Одно из идеальных решений — хранить их на SD-карте. В этом разделе мы научимся использовать модуль SD-карты с ESP32.

MMC

MultiMediaCard (MMC) появилась как один из ранних видов флеш-памяти и предшествовала SD-карте. Её обычно использовали в камерах, цифровых фотоаппаратах и портативных музыкальных плеерах. MMC хранит данные как электрические заряды в ячейках флеш-памяти, в отличие от оптических дисков, которые опираются на данные, закодированные лазером на отражающей поверхности.

SD (Secure Digital) карта

Secure Digital Card (SDC), которую обычно называют SD-картой, — это развитие MMC. SD-карты широко используются как внешняя память в электронных устройствах, например в камерах и смартфонах. Меньший вариант — microSD — обычно применяют в смартфонах, дронах и других устройствах.

SD-карты

Изображение: на основе SD card от Tkgd2007, распространяется по лицензиям GFDL и CC BY-SA 3.0, 2.5, 2.0, 1.0.

SD-карты читают и записывают данные блоками, обычно по 512 байт, благодаря чему работают как блочные устройства. Поэтому SD-карты ведут себя во многом как жёсткие диски.

Аппаратные требования

Мы будем использовать адаптер microSD-карты. Чтобы его найти, поищите «Micro SD Card Reader Module» или «Micro SD Card Adapter».

адаптер модуля microSD-карты

Конечно, понадобится и сама microSD-карта. Её нужно отформатировать в FAT32. В зависимости от аппаратного обеспечения вашего компьютера может понадобиться отдельный адаптер SD-карт (не тот, что указан выше), чтобы отформатировать microSD-карту. Некоторые ноутбуки имеют прямую поддержку microSD-карт.

Протокол

Для работы с SD-картой можно использовать протокол SD Bus, протокол SPI или шину UHS-II. Raspberry Pi (но не Raspberry Pi Pico) использует протокол SD Bus, который сложнее, чем SPI. Полные подробности протокола SD Bus публично недоступны и предоставляются только через SD Association. В этом руководстве мы будем использовать протокол SPI, потому что драйвер на Rust, который мы применяем, рассчитан именно на него.

Ссылки:

  • Настоятельно рекомендую посмотреть доклад Джонатана Паланта на Euro Rust 2024 о написании драйвера SD-карты на Rust. Он написал драйвер, который мы будем использовать (изначально он создавал его, чтобы запускать MS-DOS на ARM). Драйвер не предназначен для промышленной эксплуатации.
  • Если хотите понять, как всё работает внутри в режиме SPI, см. эту статью: How to Use MMC/SDC