MicroPython:Библиотеки/machine/Класс SDCard

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Класс SDCard – карта памяти типа Secure Digital[1]

SD-карты – это одни из самых распространенных компактных съемных накопителей. Они бывают совершенно разных размеров и форм-факторов. MMC-карты – это похожие на них съемные карты, а eMMC-карты – это тоже похожие на них карты, но предназначенные для встраивания в другие системы. Все три типа используют один и тот же протокол для коммуникации с системой-хостом, и высокоуровневая поддержка для всех этих карт тоже выглядит одинаково. По этой причине в MicroPython все они реализованы в одном классе под названием machine.SDCard.

Доступ к интерфейсам SD- и MMC-карт можно получить с помощью шин разной разрядности. Если это интерфейс 1-битной разрядности, то доступ к ним можно получить с помощью протокола SPI. Разные MicroPython-платформы поддерживают разные разрядности и конфигурации контактов, но есть стандартная конфигурация, используемая почти на всех платформах. Обычно при конструировании объекта SDCard безо аргументов интерфейс инициализируется со слотом, используемым на платформе по умолчанию. Перечисленные ниже аргументы нужно задавать в указанном порядке, и их можно использовать либо чтобы задать нестандартный слот, либо чтобы воспользоваться нестандартной конфигурацией контактов. Набор используемых аргументов варьируется в зависимости от используемой платформы.

Особенности реализаций на разных портах

Разные реализации класса SDCard могут поддерживать не весь функционал, описанный выше.

PyBoard

У стандартной PyBoard только один слот. Никакие аргументы не нужны и не поддерживаются.

ESP32

ESP32 оснащена двумя SD/MMC-каналами и вдобавок поддерживает доступ к SD-картам при помощи одного из двух SPI-портов, которые обычно открыты для использования. В результате в аргументе slot можно задать значение в диапазоне между «0» и «3» включительно. Слоты 0 и 1 используются для встроенных SD/MMC-компонентов, а 2 и 3 – для SPI-портов. Слот 0 поддерживает разрядность в 1, 4 и 8 бит, слот 1 – 1 и 4 бит, а SPI-слоты – 1 бит. Примечание: На большинстве ESP32-модулей слот 0 используется для коммуникации со встроенной flash-памятью и поэтому недоступен для пользователя.

Еще примечание: В большинстве ESP32-модулей доступ к слоту SD-карты осуществляется только через один контакт передачи данных, поэтому значением по умолчанию для width является «1». Контакты, используемые SD/MMC-компонентами – фиксированные. Контакты, используемые SPI-шинами, можно переназначить.

И еще примечание: Если какая-то из SPI-линий была переназначена, то все SPI-сигналы будут пропущены через GPIO-мультиплексор, который может урезать производительность высокочастотных сигналов. Поскольку нормальная рабочая скорость SD-карт составляет 40 МГц, это может создать проблемы при использовании некоторых карт.

Распиновка по умолчанию (она же – предпочитаемая распиновка) выглядит следующим образом:

Слот 0 1 2 3
Сигнал Контакт Контакт Контакт Контакт
sck 6 14 18 14
cmd 11 15
cs 5 15
mis** 19 12
mosi 23 13
D0 7 2
D1 8 4
D2 9 12
D3 10 13
D4 16
D5 17
D6 5
D7 18

cс3200

Вы можете задать контакты для SPI-доступа, задав в аргументе pins кортеж.

Примечание: В настоящий момент класс для SD-карт на платформе cc3200 называется machine.SD, а не machine.SDCard.


<syntaxhighlight lang="python" enclose="div">

См.также

Внешние ссылки