第一章 K210 关于SD卡的学习教程(Maix bit)

目录

一、SD卡在Maix bit中的作用

二、怎么向SD卡写入文本或读取文本

三、 详细操作及代码


一、SD卡在Maix bit中的作用

Maix Bit 是一款基于 K210 芯片的 AIoT 开发板,它具有丰富的外设接口和强大的计算能力。SD卡在 Maix Bit 上的作用主要包括:

1.扩展存储空间:Maix Bit 板载的 Flash 存储有限,SD 卡可以提供额外的存储空间,用于存放大型文件,如模型文件、图像数据等。


2.文件系统:SD 卡可以被格式化为 FAT 文件系统,这样 Maix Bit 就可以直接读取和写入文件,方便数据的交换和存储。


3断电存储:对于需要长期保存的数据,如训练好的模型、配置文件等,可以存储在 SD 卡中,即使断电数据也不会丢失。


4.运行脚本:可以将 Python 脚本或模型文件存储在 SD 卡中,然后在 Maix Bit 上直接运行这些脚本,进行数据处理和机器学习任务。


5.自动运行:可以将开机自启动脚本放置在 SD 卡中,这样每次上电时,Maix Bit 可以自动执行 SD 卡中的脚本,实现自动化操作。


6.数据交换:SD 卡可以方便地从 Maix Bit 转移到其他设备(如电脑),用于数据交换或备份。


7.文件系统挂载:Maix Bit 支持将 SD 卡挂载为文件系统,这样开发者可以使用标准的文件操作 API 来操作 SD 卡中的文件。


8.多媒体资源扩展:对于需要处理音频、视频等多媒体内容的应用,SD 卡可以提供必要的存储空间。

注意:

使用 SD 卡时,需要注意以下几点:
确保 SD 卡已经正确格式化为 FAT 文件系统。
确保 Maix Bit 的 SD 卡槽已经正确插入 SD 卡。
在代码中正确指定 SD 卡的文件路径和操作模式。
避免在 SD 卡读写过程中断电,以免造成数据损坏。

SD插入卡槽但​​​​​​读取不到的解决方法

二、怎么向SD卡写入文本或读取文本

  读操作

import uos    #文件操作需要导入uos这个包
#读操作
with open("/sd/Test.txt", "r") as f:
    while(1):
        line = f.readline()
        if not line:
          break
        print(line)

写操作

#写操作
with open("/sd/Test.txt", "a") as f:
    f.write("I Love China\n")

下面是代码关键字的详细解释:
1.with 关键字:它用于创建一个上下文环境,这可以确保代码块执行完毕后,文件会被正确地关闭,即使在读取文件时发生了异常。
2.open() 函数:这是 Python 的内置函数,用于打开一个文件。
3."/sd/Test.txt":这是文件的路径和名称。在这个例子中,文件位于根目录下的 sd 子目录中。
"r":这是文件打开模式的参数,表示“读取模式”。如果文件不存在,尝试以读取模式打开文件将导致 FileNotFoundError。
4.as f:这表示将打开的文件对象赋值给变量 f。在 with 代码块内部,可以使用变量 f 来访问文件内容。
5.reline:读取单行:每次调用 readline() 时,它只读取文件中的一行
返回值是一个字符串。如果到达文件末尾,没有更多的行可读,它将返回一个空字符串。
readline() 是一种内存效率高的读取方式,因为它一次只读取文件的一行。
用途:非常适合逐行处理文件,例如读取日志文件或文本数据。

关于文件打开关键字的类型

读取文本除了 readline() 之外,还有以下几种常用的方法

read(size)

  • 读取指定数量的字符。如果未指定 size,则读取整个文件。
  • 返回值是读取的字符串,如果到达文件末尾,则返回空字符串。
    with open('example.txt', 'r') as f:
        content = f.read(10)  # 读取前10个字符
        print(content)

readlines()

  • 读取整个文件并返回一个列表,其中每个元素代表文件的一行。
  • 通常用于较小的文件,因为它会将整个文件内容加载到内存中。with open('example.txt', 'r') as f: lines = f.readlines() for line in lines: print(line.strip())
with open('example.txt', 'r') as f:
    lines = f.readlines()
    for line in lines:
        print(line.strip())

迭代文件对象

  • 直接迭代文件对象,每次迭代返回文件的一行
with open('example.txt', 'r') as f:
    for line in f:
        print(line.strip())

三、 详细操作及代码

1.首先通过读卡器在SD卡创建文本文件

2.随便在文本文件写入东西

3.拔出SD卡,插入Maix bit卡槽

4.打开MaixPy IDE

5.写入代码

import uos    #文件操作需要导入uos这个包
#读操作
with open("/sd/Test.txt", "r") as f:
    while(1):
        line = f.readline()
        if not line:
          break
        print(line)

代码功能:

读取SD卡的Test文本文件,f.reline()表示读取文本里面的一行,然后通过print打印在串口终端上面

如果文本没数据,则跳出

/sd表示文件路径,如果继续在sd卡里面建文件,可以写成这样

/sd/xx/Test.txt

 xx表示文件名

然后就点击编译运行代码

下面是运行结果

6.继续加入写入操作的代码

import uos    #文件操作需要导入uos这个包
#读操作
with open("/sd/Test.txt", "r") as f:
    while(1):
        line = f.readline()
        if not line:
          break
        print(line)
#写操作
with open("/sd/Test.txt", "a") as f:
    f.write("Hello World!\n")

编译运行

然后可以拔出你的sd卡查看一下Test文本文件

说明写入成功

以上就是我刚入手K210 学习的SD卡的学习笔记

后续还会更新怎么保存图片数据到SD卡,断电存储,人脸识别,模型训练等

### K210 SD使用教程及相关配置 #### 一、K210 SD驱动配置 对于K210芯片而言,其支持通过SPI或SDIO接口连接SD。要实现SD的正常挂载和使用,需完成以下操作: - **硬件连接** 需确认SD模块已正确焊接至开发板上,并确保电源供电稳定以及信号线无误接情况[^2]。 - **初始化设置** 在代码层面,可以通过调用`Maix.FS.mount()`函数来尝试挂载SD文件系统。如果挂载失败,则可能涉及时钟频率配置错误或者物理连接异常等问题[^1]。 ```python import Maix, lcd, image try: # 尝试挂载SD Maix.FS.mount("/sd", "/dev/sd0") except Exception as e: print(f"Mount failed: {e}") ``` 上述脚本展示了如何利用Python API执行基本的SD挂载逻辑。其中路径参数应依据实际环境调整。 #### 二、裸机环境下SD的操作流程 当不依赖操作系统而仅运行于裸机模式时,开发者可按照如下方式处理SD交互需求: - 获取官方提供的示例项目源码作为基础框架; - 修改部分默认行为以适配特定应用场景下的业务规则; - 应用内置API访问存储设备上的资源并实施必要的数据管理策略; 具体步骤参见文档说明中的描述:“...code modification..."即指代此过程。 此外,在某些情况下还需要额外编写用于检测现有媒体状态的功能模块以便动态响应变化条件——例如前述提到过的统计已有图像数目从而避免重复命名冲突现象的发生[^3]。 #### 三、高级应用实例分析 基于前面介绍的基础知识点之上还可以构建更加复杂的应用场景比如定时抓拍视频片段上传云端服务器等等。下面给出一段简单演示程序用来验证整个系统的连贯性和稳定性: ```python from fpioa_manager import * from maix import GPIO, camera, display import sensor,time fm.register(board_info.BOOT_KEY,fm.fpioa.GPIOHS0) boot=GPIO(GPIO.GPIOHS0,GPIO.IN) while True: if boot.value()==0:#press button to take photo img=camera.capture() fname="/sd/%d.jpg"%time.ticks_ms()//1000 with open(fname,"wb")as fp: fp.write(img.compress()) del img time.sleep(0.5)#anti jitter delay ``` 该例子实现了每次按压启动按钮都会拍摄当前画面并将结果保存成JPEG格式存入外部储存介质当中去。同时为了避免频繁触发造成干扰还加入了短暂停顿机制提高用户体验度。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值