天天看点

从零实现 SD卡

cubemx软件版本是V4.23.0,芯片型号是stm32f103zet6,SD卡是闪迪的64G tf卡,然后用了转大卡的卡槽。

我起初是按照原子的实验去做,先验证自己的SD卡是好使的。

我买的闪迪64G tf卡,用tf卡转SD卡槽,充当SD卡。

从零实现 SD卡
从零实现 SD卡

STM32F103支持SDIO,这个SDIO就如同FMC支持NANDFLASH、外部SDRAM一样,就是一个专门支持SD卡的接口,那就很方便了,我们看他还支持MMC卡。那么SD 1bit、SD 4bits就是说你要用几个数据口,通过对比原理图,可以看出用到四个数据口。

那么我们选择4 bits wide bus。后面我又试了下1 bit,也能用,只不过慢了大约四倍呗,但是省管脚啊。

从零实现 SD卡

具体配置,把分频因子从0(默认)改为9,这是原子的配置。我自己测试是大于等于2就可以。我配置为5。

生成代码.........

增加读取扇区0的应用程序。

从零实现 SD卡

串口打印出来,扇区0是启动扇区,我强烈建议不要往这写,会把你的SD卡文件系统破坏掉。这就是之后FATFS实验挖的坑了。

从零实现 SD卡

完毕!

总结:

1.不要直接套用原子封装的函数操作SD卡,他的HAL版本比较老,入口参数是扇区地址。cubemx的生成的HAL是直接操作扇区号。

2.注意不要往0号扇区写东西,最好拿WinHex去看SD卡哪些扇区是空的,往空的地方去写。

3.如果读写不了,建议把分频因子改大一些,或者格式下SD卡。

4.如果读出来打印的过程中会出现重启,有可能不是SD卡问题,可能是时间太长触发了看门狗,把看门狗的时间改大一些。或者打印一条,喂一次狗。

继续阅读