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

开发板:K210 AIRV R3版 widora

开发环境:kendryte IDE 官方的

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

(一) 新建文件夹 08my_code_tfcard

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

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

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

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

 

老规矩 礼物  + 地球

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

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

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

安装依赖

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

清理 + 构建

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

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

(二) 修改代码

先看原理图

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

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

TF_CS -> IO29

TF_MOSI-> IO28

TF_CLK-> IO27

TF_MISO -> IO26

config -> device 那边绑定引脚

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

先绑定TF_CLK-> IO27和TF_CS -> IO29

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

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

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

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

直接看sdcard_init就行

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

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

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

进入sd_lowlevel_init() 看看

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

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

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

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

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

那就把IO29配给这个

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

这个非常重要

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

SPI在第16章

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

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协议)与文件系统说明_第17张图片

重新把TF_CS -> IO29 分配给SS3

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

这边也绑定以下引脚

TF_MOSI-> IO28

TF_MISO -> IO26

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

 

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

其他的配置不用看

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

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

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

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

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

已经读到我的SD卡了

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

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

sd init =0 说明 初始化SD卡成功(说明读到卡了)

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

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

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

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

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

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

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

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

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

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

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

 

-------------------------------------------------------------------------------------------------------------------------------

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

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

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

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

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

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

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

这边配置的对应引脚为

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

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

TF_CS -> IO29

TF_MOSI-> IO28

TF_CLK-> IO27

TF_MISO -> IO26

这个GPIOHS高速引脚没用到 

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

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

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

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

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

我们再按下复位

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

就正常显示了

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

 

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

 

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

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

所以这次放个连接下载

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

 

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

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

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

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

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

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

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

dir就是 文件名

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我这边小改了一下 测试

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

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

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

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

一条龙走起 

先打开串口

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

清理 +构建 +下载

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

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

我靠, 这尼玛的给我创建了UTF-16去了不管了,这期就这样

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

不行 我再改改

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

再一条龙看看

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

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

 

下次再见

 

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

 

 

你可能感兴趣的:(K210)