Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
文件系统
NXP-MCXN947
SD卡_TF卡
NXP MCXN947测评:SDIO模块
发布于 2024-04-11 12:58:56 浏览:571
订阅该版
[tocm] # 开箱 整个包装比较简洁,从正面去看,能清楚直接地看出这是一个MCU 开发套件,右下角则印着MCU厂商名字。开发板名则印在左下角;侧面则对开发板名进行了大写和加粗处理。 ![包装.jpg](https://oss-club.rt-thread.org/uploads/20240406/27ec20247b25b7b422f0f46cda3f1d51.jpg.webp) 打开包装盒,内含: 1) 一个frdm-mcxn947开发板 2) 说明书 3) 一根USB-A TO C线缆 4) 两个跳线帽 开发板搭载了一颗芯片作为固件烧录和调试,使用USB-A TO C线缆连接开发板和电脑。 ![板子正面.jpg](https://oss-club.rt-thread.org/uploads/20240406/f9ed47b6a35c7bbc3249c2e66ee93c5d.jpg.webp) 背面有个TF卡座空贴,NXP的BOM里使用的封装是 MEM2075-00-140-01-A。 ![板子背面.jpg](https://oss-club.rt-thread.org/uploads/20240406/aec8b0bb2d6338cbbe458ecb2c8a5d7e.jpg.webp) 这里使用的是tf-01a,也可以焊接上去,座子底下的定位柱要用指甲钳剪掉。 ![43a53c81b27647c965d2a42bce405ee8 00_00_00-00_00_30.gif](https://oss-club.rt-thread.org/uploads/20240406/2c5702132ea7e1a67758689ad7b5e9cc.gif) # 硬件介绍 本次测评的是SDIO模块。 SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。 比如SDIO可以访问micro SD卡、SD卡等存储类设备,或蓝牙、WIFI、GPS等无线设备。 这次测试的是使用SDIO接口访问micro SD卡,即所谓的TF卡,TF卡的引脚定义和SD卡会有所不同: | 引脚号 | SD卡 | TF卡(SD卡模式) | TF卡(SPI模式) | | ------------ | ------------ | ------------ | ------------ | | 1 | data3 | data2 | rsv | | 2 | cmd | data3 | cs | | 3 | vss | cmd | di | | 4 | vdd | vdd | vdd | | 5 | clk | clk | sclk | | 6 | vss | vss | vss | | 7 | data0 | data0 | do | | 8 | data1 | data1 | rsv | | 9 | data2 | -- | -- | frdm-mcxn947提供对应的驱动文件是bsp_sdhc.c SDHC是大容量SD卡,也就是SD High Capacity,支持最大32GB大小容量。 SDHC,Secure Digital High Capacity,大容量SD,也就是说,超过2G的SD都叫SDHC,因为早期的SD使用的是FAT16文件系统,并不支持大容量,而SDHC升级为FAT32,才支持2G以上的大容量。 # 搭建开发环境 Keil :v5.32,官方推荐5.36及以上 RT-Thread env-windows-1.5.0 ## 构建工程 1. 获取 RT Thread 当前最新的工程 [https://github.com/RT-Thread/rt-thread/](https://github.com/RT-Thread/rt-thread/) 2. 通过 env 工具进入 BSP目录: rt-thread-master\bsp\nxp\mcx\mcxn\frdm-mcxn947 3. 拷贝 rt-thread-master\bsp\nxp\mcx\tools\sdk_dist.py 到刚才的BSP目录 4. 执行 ```shell scons --dist --target=mdk5 ``` ![重新 scons --dist成功.png](https://oss-club.rt-thread.org/uploads/20240406/83209512fc43de5f23f4b868fc3dc36b.png) **生成的工程在dist目录,进入到dist下的project目录,需要做以下两个修改**: · 删除 sdk_dist.py,上传服务器或本地备份的时候不需要此文件 · 修改工程目录的Kconfig,否则menuconfig会找不到Libraries文件夹下的其它Kconfig ![进入工程目录.png](https://oss-club.rt-thread.org/uploads/20240406/557830eded9e4581c3697b48d19af7ed.png) 最后在生成的工程下执行 ```shell pkgs --update ``` ![pkgs --update.png](https://oss-club.rt-thread.org/uploads/20240406/46274b0f6c804b38e1fd7bdd8af0b241.png) 到这里,就可以在KEIL愉快的玩耍了。 # 配置 SDIO 驱动 芯片的 SDIO 外设驱动 ![配置SDIO驱动.png](https://oss-club.rt-thread.org/uploads/20240406/9b769786492503d432bf7ae1643ceeda.png) RT-Thread 的 SD/MMC 设备驱动 ![SD设备驱动.png](https://oss-club.rt-thread.org/uploads/20240406/6f405098263c1bcf5079cbc54793d376.png) 这里使用的是 elm-chan fatfs,即fat32;而 DFS 是对各种文件系统的抽象层,用于适配不同的文件系统 ![配置文件系统.png](https://oss-club.rt-thread.org/uploads/20240406/77d55c54cc5693f2fdf4f25f9b7db416.png) 配置完成后,保存到新的 .config, 并在env工具下执行: ```shell scons --target=mdk5 ``` # 挂载文件系统 在 **main.c** 包含头文件,编译新生成的源文件,并下载到我们的开发板。 ```c #include "dfs_fs.h" ``` **如果挂载失败,可以优先进行这两个动作**: 1. 检查卡座的引脚是否存在虚焊 2. TF卡没有被格式化为FAT32文件系统,插入下面第10行代码进行格式化 ```c #ifdef RT_USING_SDIO rt_thread_mdelay(2000); if (dfs_mount("sd", "/", "elm", 0, NULL) == 0) { rt_kprintf("sd mounted to /\n"); } else { rt_kprintf("sd mount to / failed\n"); dfs_mkfs("elm", "sd"); } #endif ``` 我这里使用的是闪迪 16GB TF卡,使用读卡器可以看到TF卡已经成功被格式化 ![格式化文件系统.png](https://oss-club.rt-thread.org/uploads/20240406/b1decb1582ca7c571c49e6e5f0427cc5.png) ![挂载文件系统成功.png](https://oss-club.rt-thread.org/uploads/20240406/bebcd482f38f8e11cc83775fe84d6cf9.png) # 文件读写测试 回到主干 rt-thread-master\examples 目录,将目录名为 file 的文件夹拷贝到 sdio-project\rt-thread\components\utilities\file ## 测试准备 ![file文件夹.png](https://oss-club.rt-thread.org/uploads/20240406/81f769250d2d996837c8f5262abd3530.png) 这里参照其它单元测试案例写 Kconfig 文件 和 SConscript 文件 ```shell Import('rtconfig') from building import * cwd = GetCurrentDir() src = Glob('*.c') CPPPATH = [cwd] group = DefineGroup('FilesUnitTest', src, depend = ['RT_USING_FILE_IO_TEST'], CPPPATH = CPPPATH) Return('group') ``` ```shell menu "File IO Unit Test" config RT_USING_FILE_IO_TEST bool "RT-Thread File TestCases" default n endmenu ``` ![修改Kconfig.png](https://oss-club.rt-thread.org/uploads/20240406/d85367e3fdd469a83978837956ac5892.png) ![FILE IO单元测试.png](https://oss-club.rt-thread.org/uploads/20240406/a8b7ca73dad08b09bbf34da12fd1247f.png) ![使能文件IO单元测试.png](https://oss-club.rt-thread.org/uploads/20240406/f6dfaccf5592807dbc5b483cfaa55550.png) 配置完成后,保存到新的 .config, 并在env工具下执行: ```shell scons --target=mdk5 ``` 在KEIL重新编译,烧录,开始测试 ## 测试结果 **读写的速度跟卡本身,DMA,文件系统等等因素有关,这里仅表示单个文件的读写测试结果。** 通过串口助手发送指令 readwrite 来进行测试,MCU接收到指令后,会写入240字节到目标文件 用法:readwrite + [filename] ![文件读写命令.png](https://oss-club.rt-thread.org/uploads/20240406/19996c3156205f14290cfaff63336320.png) 通过串口助手发送指令 writespeed 来进行测试,MCU接收到指令后,会写入1048576(**1M**)字节到目标文件,并输出计算出的写入速度,速度为**565KB/s** 用法:writespeed + [filename] ![写速度测试.png](https://oss-club.rt-thread.org/uploads/20240406/1abdf2f9afc456a6c2986c1d4e21f5ec.png) 通过串口助手发送指令 readspeed 来进行测试,MCU接收到指令后,会去读取目标文件,这里测试是紧跟着上一写测试进行的,测试出速度为**1938KB/s** 用法:readspeed + [filename] ![读取文件速度.png](https://oss-club.rt-thread.org/uploads/20240406/a3ec96d331d51e12fa722c8c7399e45e.png) # 演示视频 [frdm-mcxn947 sdio-project 演示](https://www.bilibili.com/video/BV1dJ4m1G7ML/?share_source=copy_web&vd_source=fec7ef9def5c4576cce231913b62e741 "frdm-mcxn947 sdio-project 演示") # 源码工程 [源代码工程](https://gitee.com/tomjieli/sdio-project "源代码工程") # 总结 在RT-Thread的设备驱动框架下,NXP现成的驱动还是十分完善,可以快速的跳过设备的驱动,进而聚焦应用程序的开发。同时RT-Thread的生态十分强大,此次测试组件也是现成的代码,基本上是“零代码”测评。 此次测评还有很多RT-Thread和mcxn947的强大功能没有使用,还需要继续学习。
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
tomjieli
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
1
【文件系统】目录查询
2
文件系统Posix 接口 的close API疑问
3
dfs_mount挂载文件系统路径的路径必须为‘/’才能成功
4
SD卡连续读写文件报错
5
文件系统挂载断言机制
6
文件系统是否支持挂载NFS网络文件系统
7
文件系统挂载失败!!!
8
dfs_filesystem_lookup() 返回NULL
9
webnet 是否可以做全动态网页,使用内存池来加快速度
10
“文件系统装在表”报错
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
SFUD
msh
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1518
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
549
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
3
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部