sdcard --- SD卡

安全数字或SD卡和微型microSD卡价格低廉,可为设备增加大量存储空间。MicroPython,只有1M的闪存来存储代码和数据。 如果你拥有更大的闪存空间,可以将micro SD卡通过SPI通讯方式连接到掌控板来扩展其存储空间。

https://www.digikey.com/maker-media/520920e2-79cd-4b23-8e89-1acc572496e8

SD卡

SDCard类

class sdcard.SDCard(spi, cs)

创建SDCard对象,初始化SD卡。

首先,须确保SPI总线的引脚与micro SD卡物理连接正确。确保您的micro SD卡使用FAT或FAT32文件系统格式化。然后,用os.mount(),将SD卡虚拟新的FAT文件系统挂载到指定的目录中。 挂载完成后,你就可以使用Python 的文件操作(如打开,关闭,读取和写入)来访问文件。

  • spi - machine.SPI对象

  • cs - SPI的CS控制引脚

示例-挂载SD卡
 1from machine import Pin, SPI
 2import machine, sdcard, os
 3
 4# 创建SPI对象,spi引脚如下述
 5spi = SPI(1, baudrate=10000000, polarity=0, phase=0, sck=Pin(Pin.P13), mosi=Pin(Pin.P15), miso=Pin(Pin.P14))
 6# 构建SDCard对象
 7sd = sdcard.SDCard(spi, Pin(Pin.P16))
 8# 挂载sd到 '/sd' 路径
 9os.mount(sd, '/sd')
10
11# 创建文件并写数据
12with open("/sd/test.txt", "w") as f:
13    f.write("Hello world!\r\n")
示例-列出所有文件
 1from machine import Pin, SPI
 2import machine, sdcard, os
 3
 4spi = SPI(1, baudrate=10000000, polarity=0, phase=0, sck=Pin(Pin.P13), mosi=Pin(Pin.P15), miso=Pin(Pin.P14))
 5sd = sdcard.SDCard(spi, Pin(Pin.P16))
 6
 7os.mount(sd, '/sd')
 8
 9def print_directory(path, tabs = 0):
10    for file in os.listdir(path):
11        stats = os.stat(path+"/"+file)
12        filesize = stats[6]
13        isdir = stats[0] & 0x4000
14    
15        if filesize < 1000:
16            sizestr = str(filesize) + " by"
17        elif filesize < 1000000:
18            sizestr = "%0.1f KB" % (filesize/1000)
19        else:
20            sizestr = "%0.1f MB" % (filesize/1000000)
21    
22        prettyprintname = ""
23        for i in range(tabs):
24            prettyprintname += "   "
25        prettyprintname += file
26        if isdir:
27            prettyprintname += "/"
28        print('{0:<40} Size: {1:>10}'.format(prettyprintname, sizestr))
29        
30        # recursively print directory contents
31        if isdir:
32            print_directory(path+"/"+file, tabs+1)
33
34
35print("Files on filesystem:")
36print("====================")
37print_directory("/sd")
38