( s/ u: ~% U! W
3 Q7 I" t9 q" F# m9 F【猪圈丶嗨情歌的开发分享】
0 N1 ^: N, K0 H9 B. g- 今天要给大家分享的是使用FatFs这个库来读写SD卡上面的文件。工程的初始化函数和FatFs都是通过STM32CubeMX配置生成的,不需要我们手动添加库。
- 今天分享的内容和我的上一篇帖子 SDIO读取SD卡的扇区 有关,最好掌握了SDIO读取SD卡扇区的基础之后再来看这一篇帖子。
: `* ~. V: b6 q, N* m# [
1 V& d/ `% j& @3 j7 i- l6 A写在前面的话
0 t( M( N, J+ @& r* M3 ^- 上一次发表了关于SDIO读取SD卡的一篇开发分享的帖子,今天呢就更进一步使用了FatFs文件系统。同样我们完全使用ST公司提供的STM32CubeMX软件和HAL库来进行开发。如果喜欢我的帖子请多多回复我会努力更新的。; Y: _; F( x, k5 @2 a/ q
0 N! U K' H1 i" R我使用的工具
3 n% Z5 X" k: s% Q, w3 o- 开发平台:正点原子探索者STM32F407开发板
- 硬件:使用了NUCLEO-F446RE开发板的ST-Link作为调试器、SD卡、数据线、开发板的电源适配器、DELL一体机
- 软件:STM32CubeMX、Keil V5、串口助手
0 V' O) ^' ]1 j! B3 { & l; S' N! z2 Q$ z" d
学习的知识点6 w& H8 M! @; p* b! U
- 1、使用STM32CubeMX配置SDIO
- 2、在Keil中初始化SDIO
- 3、修改HEAP内存块的大小
- 4、malloc函数的使用
- 5、如何使用FatFs提供的一些库函数0 w. Q: y$ C6 z; o
/ N! P- Y! l! \' ]/ U) T共享的资源8 t+ h" j( m* u4 U0 c. g+ Z7 I# J, N
完整的工程文件 FatFs.zip
+ h' y( V& v+ D0 {3 I _9 ASTM32Cube中FatFs的中文帮助文档
UM1721_DM00105259_CN.pdf
(560.87 KB, 下载次数: 295)
|
(⊙v⊙)嗯,我也是平时兴趣爱好所以在玩MCU。让这个芯片工作起来是首要目标,刚开始的时候一直是看原子哥的手册,但是每次配置觉得好麻烦。后来接触到了STM32CubeMX用了几次之后才慢慢接受的,之前都觉得这个东西不是很好用。但是现在我每次学习新的东西的时候都是用HAL库了,再也没有用过老版的库函数了。
现在还没有遇到过底层机制的问题,不知道能否指点一下由于底层机制对开发造成影响的问题我好在后面的学习中多加注意。
我最近也在使用Cube配置SDIO和FATFS的应用。! \# F6 q. F# V, {: j' E) H
楼主说的BSP_SD_Init()这个函数其实可以不显性的调用,Cube生成的程序架构里会在第一次调用文件操作函数的时候调用该函数,然后将SD卡初始化标志变量置1,之后就不再调用该函数,除非出现底层操作失败。1 e) \% k# d( q/ Z3 b' e( t5 s' a
1 @- z' a6 g6 O$ S# i
当然,显性调用也有好处,就是可以在程序一开始就获取到SD卡类型,容量等信息。
SD卡信息会存放在结构体HAL_SD_CardInfoTypedef SDCardInfo;中。
理论上可以,在挂载文件系统的地方再挂载一个SD卡。但是这样的话,一部分底层驱动可能要自己写。SDIO接口一般是一个吧,另一个SD卡可能要SPI来读取了,SPI读取的SD卡底层驱动要自己提供才可以给FatFs调用。
谢谢鼓励, ]7 j- n! {+ l: g# {+ M9 p
送你一朵❀
使用图形化编程可能会导致对底层工作原理理解不深。
这样啊,其实我在做这次项目的时候遇到了太多的问题,所以写代码的时候还是很小心的。
(⊙o⊙)嗯,可能会用ST提供的库函数来进行音频解码。不过这个工作量不知道多少,所以我会放一阵子再弄。
期待