sd卡的读写验证流程介绍

原理图
下图是sdio的接线图
dat0-4 cmd 接了4.7k的上拉电阻。六根与mcu相连的线中均接了一个22欧的电阻,用于限制电流。
下图是mcu的接线
dat0接引脚p2.0,dat1接p2.1,dat2接p2.2,dat3接p2.3,cmd接p2.4,clk接p2.5,
板子的sd卡座是弹簧式的,卡片压下去 ,弹片与地相接,mcu_sd_cd低电平,mcu可检测到当前有卡片插入。
英飞凌提供了两种驱动依赖:
psoc 6 peripheral driver library(pdl),hardware abstraction layer (hal)。
pdl接口大概对sdio的支持度不很好,不太完善,当前测试按照以下流程初始化会失败,
pdl接口位于hal的上层,属于对hal接口的再次封装。
群里有位大佬使用了hal接口,初始化看起来问题不大,初始化效果如下,可以得到卡片的容量
rtt驱动结构
之前写linux驱动,学习rtt的驱动时,多少会带入linux的思维。
rtt的驱动要比linux的简单许多,大概框架相似。
整个系统结构分为三层,应用层,也就是我们的业务层。
第二层时rtt提供的中间层,虚拟文件驱动层。
第三层是针对具体硬件的硬件驱动层。
业务层直接调用虚拟驱动层,虚拟驱动层通过回调函数方式操纵硬件驱动代码了。
代码的文件结构如下图
application是存放应用层代码的文件夹。
rt-thread目录存放虚拟文件系统接口
libraries存放硬件驱动代码和厂商的bsp等支持代码。
调用官方的pdl接口导致硬件崩溃,对英飞凌的mcu了解不深,暂不知如何调查,借鉴群里大佬vandoul的sdhc驱动代码,测试了一下接口。
接口dfs_filesystem_get_partition 有一个小bug,sd卡是64gb容量的卡片,格式化为ntfs格式,读出的分区表解析到的容量错误,如下图所示。
代码参考了vandoul大佬的代码,删除了一些异常判断等代码。
提供两个接口 sdrd 和sdwt,仅是直接测试sd卡存储空间的读写,不涉及到文件系统的挂载。
sdrd 带一个参数,读取地址
sdwt带两个参数,第一个是地址,第一个是数值
下图是命令使用效果。

诺基亚提前布局好了5G覆盖的所有产品线希望跟运营商一起用好5G网络
2020年云计算市场下新联盟、无服务器的安全挑战
GaN功率开关、组件及对EMI产生造成怎样的影响
2月我国动力电池装机量达523MWh 三元电池占比98.8%
电源管理芯片价格上调已成必然?
sd卡的读写验证流程介绍
SK海力士立志成为AI存储全方位解决方案供应商
常用的大数据可视化分析工具,快速解决大数据分析难题
LoRa网关模组E106-433G27P2简述
DIR-882路由器评测 无论是在硬件配置还是软件资源的优化都非常的强
半导体进新成长周期仿冒元件蠢蠢欲动
你知道超薄贴片电感封装尺寸有哪些吗
微软262亿美元收购LinkedIn
浪潮存储中标中国电信集采项目,领跑中国存储市场
一种制造光学器件的新方法
激励器、分频器、均衡器、压缩限幅器定义详解
良性竞争迎机遇 多重因素推动先进封装技术快速发展
未来的智能家居有多智能
华为国外获赞:可行、可靠
九号电动E系列正式开售 售价4999元起