BPI-Leaf-S3 板载8MB Flash ROM,安装完micropython固件后,可用容量仍有5MB左右,可以存放大量的python脚本文件,或少量的多媒体内容。
如果有超过5MB的使用需求,或想要节约Flash的读写寿命,使用一张SD卡扩展存储容量是最经济实惠的选择,而且SD卡 SPI接口模块也很廉价。
准备
以下例程需要使用一块micro SDCard 与一个Micro SD卡SPI接口模块,一个已经安装了MicroPython固件的开发板,例如BPI-Leaf-S3。
python环境,mpremote安装, VScode打开终端,mpremote连接开发板, 基本文件操作参考此帖:
BPI-Leaf-S3使用mpremote工具在VScode IDE中编程,基础应用示例。 ESP32-S3 & MicroPython
推荐也尝试一下 PyCharm Community,此为社区版,可免费使用。
接线参考
SD卡SPI接口模块 | BPI-Leaf-S3开发板 |
---|---|
GND | GND |
VCC | 3.3V |
MISO | 15 |
MOSI | 16 |
SCK | 17 |
CS | 18 |
接线对应以下例程中的代码,可按需修改GPIO。
MicroPython
class SDCard
machine.SDCard(slot=1, width=1, cd=None, wp=None, sck=None, miso=None, mosi=None, cs=None, freq=20000000)¶
- slot 选择接口,0和1使用 内置SD/MMC硬件,而2和3使用SPI接口。
- sck,miso,mosi,cs用于设置SPI接口所用GPIO。
- freq 设置通信频率,默认的20Mhz不一定适配所有SD卡,如果无法正常使用,可以尝试降低频率,例如使用15Mhz。
更多信息参考 MicroPython DOCs: machine.SDCard。
-
在PC本地新建一个文件夹,新建 boot.py 文件,代码如下。
import os import machine try: sd = machine.SDCard(slot=2, miso=15, mosi=16, sck=17, cs=18, freq=15000000) vfs = os.VfsFat(sd) os.mount(vfs, "/sd") except OSError as e: print("OSError:", e) print("SDCard failed.") else: print("/sd:", os.listdir('/sd')) finally: print("/:", os.listdir('/'))
-
在终端中,进入此文件夹所在的路径,使用mpremote拷贝文件到开发板的flash中,命令如下。
mpremote connect COM21 cp boot.py :
-
进入REPL,使用快捷键 ctrl+D 使开发板软复位,如果SD卡正常工作,则会看到以下内容。
MPY: soft reboot /sd: [] /: ['sd','boot.py']
-
如果提示了报错信息,则需确定接线是否正确,SD卡是否有格式化为FAT32格式。若已检查确认无接线问题和格式问题,则可尝试降低SPI通信频率,例如以下代码。
sd = machine.SDCard(slot=2, miso=15, mosi=16, sck=17, cs=18, freq=1320000)
-
当确认SD卡正常工作后,新建一个 test.py 文件,代码如下。
import time from machine import Pin from neopixel import NeoPixel pin_48 = Pin(48, Pin.OUT) np = NeoPixel(pin_48, 1, bpp=3, timing=1) RED = (255, 0, 0) ORANGE = (255, 100, 0) YELLOW = (255, 255, 0) GREEN = (0, 255, 0) CYAN = (0, 255, 255) BLUE = (0, 0, 255) PURPLE = (180, 0, 255) WHITE = (255, 255, 255) OFF = (0, 0, 0) color_list = [RED, ORANGE, YELLOW, GREEN, CYAN, BLUE, PURPLE, WHITE, OFF] brightness = 0.1 while True: for i in color_list: color = (round(i[0] * brightness), round(i[1] * brightness), round(i[2] * brightness)) np[0] = color np.write() print(color) time.sleep(1)
-
将其拷贝至sd卡中,命令如下。
mpremote connect COM21 cp test.py :sd/test.py
-
再新建一个 main.py 文件,代码如下。拷贝到开发板后,此程序将读取并执行 sd/test.py 文件中的程序代码。
with open('sd/test.py', 'r') as file: exec(file.read())
-
将其拷贝至开发板的flash中,命令如下:
mpremote connect COM21 cp main.py :
-
复位开发板,板载RGB LED应点亮,打开REPL,能看到输出的RGB信息。
- BPI-Leaf-S3 开发板(ESP32S3) - Banana Pi Wiki (banana-pi.org)
- 官方淘宝
- 官方速卖通
- OEM&OEM 定制服务请邮件联系: [email protected]