[STM32F4]

STM32F469DISCOVERY评测分享——CUBE配置SD卡及FATFS文件系统初始化

[复制链接]
1842|3
手机看帖
扫描二维码
随时随地手机跟帖
北斗stone|  楼主 | 2016-11-30 13:16 | 显示全部楼层 |阅读模式
本帖最后由 北斗stone 于 2016-11-30 13:26 编辑

这次第二波的测评准备挑这块板子上的SD卡的外设做一下测评,同样地,**和大家分享CUBE的使用心得:
楼主之前没用做过关于SD卡的任何工程项目,在SD卡方面是个小白新手,有不对或者不完善的欢迎大家指正和补充。
首先我上网学习了一些关于SD卡的基本资料,简单来说,SD卡支持两种模式:SD模式和SPI模式。简单地看过了SD卡的通信原理、各种状态的切换之后,当务之急就是将它驱动起来,能够读写。
另外看了很多资深工程师做SD驱动时候发的帖子。在一番深入了解之后,我也看了FATFS文件协议,从应用的角度出发,看FATFS的函数接口,用处是最大的。
先上传一份FATFS的API中文应用手册,这是我在网上找的,版本应该不是最新的(见附件内容)。最新的版本官网有,不过是英文的。这是英文的官网,大家可以在这上面找到最新、最全的内容。FATFS文件系统的官网
好了,万事俱备,首先还是打开Datasheet,确认下板子的引脚所在:

2

2
打开CUBE,这次我建立的是芯片级工程。
首先选中FATFS文件系统的SD card模式

3

3
使能SDIO外设,选择4线模式

4

4
另外我还加了自带的USART3用来作为调试使用,同时在右侧确认引脚的使用,确保引脚没有复用错

5

5
在第二个菜单页配置时钟,我们要把时钟配置为合理的范围,另外值得注意的是SDIO用的是自己的时钟,最大为48Mhz。

6

6

7

7
接下来第三个页面,首先配置SDIO,时钟分频因子不变,第二个子页面不添加常量,第三个子页面很关键,需要使能SDIO的全局中断,它要配合DMA使用。

8

8
第四个子页面,配置DMA。

9

9
能使得数据在内存与SD卡之间相互搬运。第一步添加可用DMA搬运的请求,一个收一个发,注意添加FIFO,第三步选择数据长度,这里是一个字(双字节)。第四步要做的便是选择地址自增,给memory打上勾,表示每次搬运后,内存地址自增。最后的GPIO子页面不做改动。
USART3用默认配置就行,不做改动。接下来大家可以看看DMA和NVIC内,之前在外设上已经配置好DMA之后,DMA2内也会有显示。

10

10
NVIC也是一样。

11

11
接下来关于FATFS的配置,点击中间件FATFS,我们可以看到有四个子页面需要设置。其中后三个页面几乎可以忽略,但是第一个页面的内容还是值得学习的。如果将CUBE用好了,很多东西关于FATFS的特性参数、其它外设的特性参数也是可以从中学到的

12

12
在此我讲几个重要的参数,编码格式GBK编码,能支持中文,第二项使能长文件名,名字保存于堆空间中(stack),其余不变。

13

13
点击generate,选择文件保存路径,由于上面长文件名用了堆空间保存,所以这里要增加堆空间的大小,改成0x0800。

14

14
选择生成代码,KEIL5换成SW4STM32。
好了,接下来就是写代码测试性能的问题了。
我找到了安装库里的例程代码,路径如下:
C:\Users\Administrator\STM32Cube\Repository\STM32Cube_FW_F4_V1.13.0\Projects\STM32469I-Discovery这里要强调一下,虽然cube可能安装到D盘,但是它的库会下载到C盘用户文件夹下。

15

15
这里面有四个子文件夹,第一个是应用案例代码,第三个是外设例程。在应用案例下,找到了FATFS带有SD卡的应用例程,我将它配置的初始化文件与CUBE生成的文件做了下对比。感觉差不多,于是就拿它进行了修改。
首先我做了SD卡不带FATFS系统的读写擦除的操作,通过串口发送数据,证明可以使用,之后我又做了带FATFS的一个测试代码,新建TXT文件以及jpg文件。两份测试代码是参考库中已有代码改写的。主要的文件代码已上传,由于库文件太大,删了库文件,另外保留了CUBE工程文件。
    关于程序内容不在这里展开分析,再讲一下我评测过程中遇到的一个细节
   

16

16

    CUBE生成的程序代码,在生成的代码里面,有很多块语句注释,user beginuser end之间能插入用户自己的东西,按照这个规范做,重新用CUBE导出初始化代码的时候,之前写过的东西不会被擦除掉,用户如果在其它地方加入代码,会被擦除掉。
    最后楼主打算按照论坛里面大神们的方法测一下SD卡的读写速率,还在写代码的阶段,后续有时间会上传上来。

1.pdf

170.53 KB

文件系统API(中文)

FATFS.rar

18.71 KB

用文件系统建TXT文件

SDIO.rar

14.72 KB

SD卡读写测试

merry_zsp| | 2016-11-30 21:50 | 显示全部楼层
话说这个软件配置外设的初始化确实不错,赞一个。

使用特权

评论回复
北斗stone|  楼主 | 2016-12-1 11:22 | 显示全部楼层
merry_zsp 发表于 2016-11-30 21:50
话说这个软件配置外设的初始化确实不错,赞一个。

谢谢支持,后续还有别的外设,欢迎继续关注哈~!

使用特权

评论回复
cyang812| | 2017-2-16 09:36 | 显示全部楼层
请问printf串口输出信息是怎么做到的?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

338

帖子

6

粉丝