SDCard 类 – 安全数字存储卡

SD 卡是最常见的小型可移动存储介质之一。SD 卡有多种尺寸和物理外形。MMC 卡是类似的可移动存储设备,而 eMMC 设备是电气类似的存储设备,旨在嵌入其他系统。所有这三种形式共享一个通用协议来与它们的主机系统进行通信,并且高级支持对它们来说看起来都是一样的。因此,在 MicroPython 中,它们是在一个名为machine.SDCard .

SD 和 MMC 接口都支持以各种总线宽度进行访问。当使用 1 位宽接口访问时,可以使用 SPI 协议访问它们。不同的 MicroPython 硬件平台支持不同的宽度和引脚配置,但对于大多数平台,任何给定硬件都有标准配置。通常SDCard,在不传递任何参数的情况下构造对象会将接口初始化为当前硬件的默认卡槽。下面列出的参数代表为了使用非标准插槽或非标准引脚分配可能需要设置的通用参数。支持的参数的确切子集因平台而异。

class machine.SDCard(slot=1, width=1, cd=None, wp=None, sck=None, miso=None, mosi=None, cs=None, freq=20000000)

此类使用专用 SD/MMC 接口硬件或通过 SPI 通道提供对 SD 或 MMC 存储卡的访问。该类实现了由 定义的块协议uos.AbstractBlockDev。这使得 SD 卡的安装变得如此简单:

uos.mount(machine.SDCard(), "/sd")

构造函数采用以下参数:

  • slot选择要使用的可用接口。不设置此项将选择默认界面。

  • width选择 SD/MMC 接口的总线宽度。

  • cd可用于指定卡检测引脚。

  • wp可用于指定写保护引脚。

  • sck可用于指定 SPI 时钟引脚。

  • miso可用于指定 SPI miso 引脚。

  • mosi可用于指定 SPI mosi 引脚。

  • cs可用于指定 SPI 片选引脚。

  • freq以 Hz 为单位选择 SD/MMC 接口频率(仅在 ESP32 上支持)。

特定于实现的细节

所述的不同的实施方式 SDCard上的上述选项不同的硬件支持不同的子集类。

PyBoard

标准的 PyBoard 只有一个插槽。不需要或支持任何参数。

ESP32

ESP32 提供两个 SD/MMC 硬件通道,还支持通过用户通常可用的两个 SPI 端口之一访问 SD 卡。因此,槽参数可以采用 0 到 3 之间的值,包括 0 和 3。插槽 0 和 1 使用内置 SD/MMC 硬件,而插槽 2 和 3 使用 SPI 端口。插槽 0 支持 1、4 或 8 位宽访问,而插槽 1 支持 1 或 4 位访问;SPI 插槽仅支持 1 位访问。

笔记

插槽 0 用于与大多数 ESP32 模块上的板载闪存通信,因此用户无法使用。

笔记

大多数使用专用硬件提供 SD 卡插槽的 ESP32 模块仅连接 1 个数据引脚,因此宽度的默认值为1。

专用 SD/MMC 硬件使用的引脚是固定的。SPI 硬件使用的引脚可以重新分配。

笔记

如果任何 SPI 信号被重新映射,则所有 SPI 信号都将通过 GPIO 多路复用器单元,这会限制高频信号的性能。由于 SD 卡的正常运行速度是 40MHz,这可能会导致某些卡出现问题。

默认(和首选)引脚分配如下:

Slot

0

1

2

3

Signal

Pin

Pin

Pin

Pin

sck

6

14

18

14

cmd

11

15

cs

5

15

miso

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

cc3200

您可以通过将元组作为管脚参数传递来设置用于 SPI 访问的 管脚。

注: 目前cc3200 SD卡实现名称的这一类 machine.SD,而不是 machine.SDCard