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

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

[复制链接]

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

开发板:K210 AIRV R3版 widora

开发环境:kendryte IDE 官方的

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

1.新建文件夹 08my_code_tfcard

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

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

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

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

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

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

老规矩 礼物  + 地球

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

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

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

安装依赖

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

清理 + 构建

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

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

2.修改代码

先看原理图

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

TF_MOSI-> IO28

TF_CLK-> IO27

TF_MISO -> IO26

config -> device 那边绑定引脚

K210入门-裸机开发(八)之TFCard修改(SPI协议)与文件系统说明图10
先绑定TF_CLK-> IO27和TF_CS -> IO29

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

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

K210入门-裸机开发(八)之TFCard修改(SPI协议)与文件系统说明图12
圈住的3个是设置CPU频率, 初始化中断 和 开全局中断的 不用分析

直接看sdcard_init就行

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

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

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

进入sd_lowlevel_init() 看看

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

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

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

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

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

那就把IO29配给这个

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

这个非常重要

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

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

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

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

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

重新把TF_CS -> IO29 分配给SS3

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

这边也绑定以下引脚

TF_MOSI-> IO28

TF_MISO -> IO26

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

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

其他的配置不用看

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

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

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

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

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

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

已经读到我的SD卡了

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

K210入门-裸机开发(八)之TFCard修改(SPI协议)与文件系统说明图26
sd init =0 说明 初始化SD卡成功(说明读到卡了)

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

这边配置的对应引脚为

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

TF_CS -> IO29

TF_MOSI-> IO28

TF_CLK-> IO27

TF_MISO -> IO26

这个GPIOHS高速引脚没用到

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

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

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

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

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

我们再按下复位

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

就正常显示了

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

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

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

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

所以这次放个连接下载

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

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

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

K210入门-裸机开发(八)之TFCard修改(SPI协议)与文件系统说明图40
这边是把SD/TF卡根目录的文件名打印出来,直到打印到最后一个,再关闭根目录 不读了

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

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

dir就是 文件名

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我这边小改了一下 测试

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

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

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

一条龙走起

先打开串口

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

清理 +构建 +下载

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

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

这给我创建了UTF-16去了

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

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

再一条龙看看

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

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

下次再见

链接: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-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail