1120浏览
查看: 1120|回复: 0

[官方教程] K210入门-裸机开发(八)之TFCard修改(SPI协议)与文件系统说明

[复制链接]
本帖最后由 猪百岁 于 2021-3-11 10:22 编辑

K210入门-裸机开发(八)之TFCard修改(SPI协议)与文件系统说明

开发板:K210 AIRV R3版 widora

开发环境:kendryte IDE 官方的

必须的参考文档:Standalone SDK编程指南v0.5.0,以及widora的原理图

1.新建文件夹 08my_code_tfcard

ThuMarch-202103117144..png

要用到SD CARD或者TF CARD 我这边 是TF卡 你那边如果用SD卡也是一样的

格式化TF卡为fat32格式的 已经是fat32格式的就不用管

ThuMarch-202103117262..png

放2首歌,2张图,2个文档, 目前还不知道中文影响不影响,先这样就行

ThuMarch-202103111357..png

老规矩 礼物  + 地球

ThuMarch-202103115045..png

实例-> 搜索->选择开发-> 下载,          保存到刚才新建的文件夹中

ThuMarch-202103113565..png

安装依赖

ThuMarch-202103117008..png

清理 + 构建

ThuMarch-202103114518..png

环境搭建完毕, 下面修改代码

2.修改代码

先看原理图

ThuMarch-202103118675..png
ThuMarch-202103114932..png
TF_CS -> IO29

TF_MOSI-> IO28

TF_CLK-> IO27

TF_MISO -> IO26

config -> device 那边绑定引脚

ThuMarch-202103112583..png
先绑定TF_CLK-> IO27和TF_CS -> IO29

ThuMarch-202103112415..png

下面看主函数 还有引脚没配置 暂时先看看代码怎么改

ThuMarch-202103115024..png
圈住的3个是设置CPU频率, 初始化中断 和 开全局中断的 不用分析

直接看sdcard_init就行

ThuMarch-202103111020..png

就这一句才有用的 点进去看看

F12跳转, ALT+左键 返回上一步

进入sd_lowlevel_init() 看看

ThuMarch-202103114985..png

这里有 IO7作为输出 暂时不知道什么作用的,先不管,后面有用再回来改

下面的是配置了SPI0,速率200K

ThuMarch-202103114643..png

选中片选端,莫非那个TF_CS -> IO29是配置这个引脚的?

那就把IO29配给这个

ThuMarch-202103113157..png

这个非常重要

ThuMarch-202103115736..png
SPI在第16章

ThuMarch-202103117724..png

spi_init(SPI_DEVICE_INDEX, SPI_WORK_MODE_0, SPI_FF_STANDARD, 8, 0);

用了SPI0为主设备, 模式0,SPI_FF_STANDARD为标准3线,单次发8位, 大小端0是小端

ThuMarch-202103114629..png

重新把TF_CS -> IO29 分配给SS3

ThuMarch-202103118586..png

这边也绑定以下引脚

TF_MOSI-> IO28

TF_MISO -> IO26

ThuMarch-202103119458..png

貌似其中的GPIOHS的 CS信号是没用到的

其他的配置不用看

ThuMarch-202103112021..png

这里是将SPI配置为10M速率 前面是200K

清理 + 构建 + 下载看看有没有效果

ThuMarch-202103118567..png

打开串口 选择串口 连接 按下开发板上的复位

ThuMarch-202103118511..png

已经读到我的SD卡了

ThuMarch-202103117629..png

ThuMarch-202103112605..png
sd init =0 说明 初始化SD卡成功(说明读到卡了)

后面的是SD卡容量32G 和 区块大小512

断电开发板 把TF卡拔出来 拿读卡器插到电脑上

ThuMarch-202103114847..png

ThuMarch-202103111075..png

说明能正常写入到SD卡中了

安全退出U盘, 装回开发板 重新上电

打开回串口 分享下文件系统参数

ThuMarch-202103118126..png

ThuMarch-202103116628..png

上面文件系统读到了我TF卡的文件名 , 中文显示乱码,英文正常显示,但我不管他

打开cannan/test.txt的文本, 读到了1024个字节, 然后把64个字节打样了出来, 最后再入了1024个A


这说明了我们的读写SD卡是没问题的

总结一下这里的SD卡SPI模式

ThuMarch-202103117527..png

原理图的SPI是4线的,但实际上我们配置的时候 只有配置了3线的SPI 而不是使用4线的

ThuMarch-202103118995..png

ThuMarch-202103113317..png

如果修改4线的,需要把spi_receive_data_standard 这些SPI接发的函数 改为

ThuMarch-202103111176..png

这边配置的对应引脚为

ThuMarch-202103115134..png
ThuMarch-202103118542..png

TF_CS -> IO29

TF_MOSI-> IO28

TF_CLK-> IO27

TF_MISO -> IO26

这个GPIOHS高速引脚没用到

ThuMarch-202103116949..png

我把GPIO删了之后也是正常工作的

我拿读卡器吧cann那个文件夹删了之后重新插入 复位

ThuMarch-202103112417..png

会显示读取txt文件内容错误 这是正常的,因为他是在最后一个才写入

我们再按下复位

ThuMarch-202103117652..png

就正常显示了

TF卡可以热插拔 就是当U盘用就行

SD卡具体配置流程我是不懂的, 我只会用,知道怎么修改就行, 这节的TF/SD卡移植完毕,下次再见

因为main.c代码没有修改 所以不贴代码了

主要是在SDCARD.C那边修改的

所以这次放个连接下载

链接:https://pan.baidu.com/s/1v3IbitrwVWPVlWrfx8N9xw
提取码:x2rr

想了下  虽然我不会文件系统,但也要学一学的

这边是初始化文件系统,然后把0:那边给绑定上找到的SD卡盘符,找到了才输出status = 0(OK);

ThuMarch-202103117267..png
这边是把SD/TF卡根目录的文件名打印出来,直到打印到最后一个,再关闭根目录 不读了

ThuMarch-202103115293..png
ThuMarch-202103112863..png

然后这边定义了一个文件系统 叫 file

dir就是 文件名

mkdir学过linux都知道是创建一个文件,名字就叫dir对应的指针(指向了"cannan"这个字符串)

(如果有了 就返回err错误 说明已经有了)

ThuMarch-202103115153..png

我这边修改了一下,把文件夹改为我的CSDN名称

ThuMarch-202103117879..png

这边是遍历了txt文件,看看里面藏有多少个字符(好像是以EOF为结束符的)

ThuMarch-202103113837..png

ThuMarch-202103114466..png

然后用open 打开这个 path 字符串的文件 权限为读,读到的东西给file文件系统(FIL file;)

用了80个char缓存 , 下面的f_read 就是读前64个, v_ret_len指向读的第几个字符

最后再f_close关闭文件, (有open必须要有close,要不然会挂彩内存不足)

ThuMarch-202103113543..png

ThuMarch-202103113882..png

ThuMarch-202103111763..png

这边打开了文件系统 打开权限是 修改(创建)+写

ThuMarch-202103115876..png

ThuMarch-202103119520..png

准备了1024个数据 等下写入到读到的path路径(这里是txt文件)中

然后开写 写完就关文件(有open 必须写close 要不然泄漏)

ThuMarch-202103112550..png

我这边小改了一下 测试

ThuMarch-202103114345..png
ThuMarch-202103113172..png

注意ascii码好像是0~255,127之前是有东西的,后面不同标准有些有,有些没有,我这里用127之前是肯定有东西的

ThuMarch-202103119406..png

一条龙走起

先打开串口

ThuMarch-202103115969..png

清理 +构建 +下载

ThuMarch-202103111874..png

ThuMarch-202103119753..png

这给我创建了UTF-16去了

ThuMarch-202103118934..png
我再改改

ThuMarch-202103115249..png

再一条龙看看

ThuMarch-202103113318..png

还是不对劲 不过我不改了 就这样吧

下次再见

链接:https://pan.baidu.com/s/1roaFbSgv4uDA_Jq7JuLdSg
提取码:01hn

版权声明:本文为CSDN博主「jwdeng1995」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jwdeng1995/article/details/108058266

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail