WSCKY 发表于 2014-10-16 10:12:01

STM32F401RE-Nucleo开发分享'^_^'(SD & FATFS)

 这回分享一下SD卡与文件系统的例程,先上资料:
1,SD卡以及文件系统相关资料:(更多的资料还靠大家到网上淘,比如原子哥的战舰开发板就有不少资料)
2,代码:
这次上传的代码把另一个库文件夹(Middlewares)也已经上传了,这样所有的库应该就已经完整了,高手们也可以不用把后面的帖子看完,直接就跑吧:)
这个功能看起来实现起来不容易,不过ST提供的库已经实现了一个文件系统的移植,并且还有一个电子相册的实现例程(运行在Adafruit shield),我们参照这个代码实现起来就会容易多了,与非网上还有这个视频的,给个地址:)(点击标签图片进入)
我这块板与Adafruit shield基本没有区别,都是使用SPI驱动的,只需要修改一下引脚就OK了,下面看一下官方代码的文件结构吧:

首先文件系统的内核,3个文件,不管什么时候都是不需要改的,直接导入就行。sd_diskio.c是ST编写的驱动,我们也直接添加进去,不用修改,真正对SD卡的操作都是在stm32_adafruit_sd.c中实现的,因为我们也是用SD卡,所以其实也是不用修改的,最后就是文件stm32f4xx_nucleo.c中对SPI的配置了,我想说的是,这也是一样 的:funk:,好吧,这似乎就是我们唯一要做得事情了:改引脚。。。不得不说,这是我移植文件系统最简单的一次了:funk:,底层几乎什么代码都不用敲了,直接复制粘贴就行!我想这也应该是ST想实现的目标吧,让使用STM32变得轻而易举(代码我都给你写好了,你就用吧!一定要记得买我们的芯片呦~)当然了,要用到我们自己的工程还是需要我们自己整理的,而且对于初学者代码还是要好好读一读,理解一番的,毕竟还是骗不了自己,懂不懂自己心里有数,玩了,也要学了:D(一堆废话完)
本次提供的代码与这个也是大同小异的,SPI配置也是添加在了stm32f4xx_nucleo.c中,大家具体的看代码,文件系统的配置都是在ffconf.h中,每个项目都有独立的配置文件,不能共用。
注意:1,要使用中文文件名支持的时候是要添加cc936.c的
2,长文件名支持需要另开辟数组。
3,记得在stm32f4xx_hal_conf.h中去掉支持SPI的注释,不然编译会出错的。
4,启动文件中要把栈调大一点比如改成 Stack_Size      EQU     0x900;
5,diskio.c中的函数DSTATUS disk_status(BYTE pdrv)直接return 0;就行了
范例提供了两个,两个main文件,选不同的添加进去就行了。
一个是在SD卡中新建一个STM32.TXT文件,并写入一些内容,再读出内容进行比较,所有操作均测试通过。就不贴图啦。
另一个就是官方例程Demonstrations的实现了,修改不大,另外把摇杆控制改成了按键控制,用于切换自动与手动模式以及上下张图片。
(注意,这里只能显示128*160,色彩深度为16位的BMP图片,代码提供了几张这类图片供测试。图片解码会在后面介绍)
https://v.youku.com/v_show/id_XODA0NDkzMzc2.html
视频上传很坑爹,转码很坑爹,发布很坑爹,天哪!都好坑爹!:L

create_ce 发表于 2014-10-17 16:23:02

RE: STM32F401RE-Nucleo开发分享'^_^'(SD & FATFS)

你没用stm32cubemx配置吗?

MouseCat 发表于 2015-6-14 09:21:27

f_mkfs能用吗?

你好啊! 发表于 2015-6-14 10:09:50

不错,资源挺多,你值得拥有!

mcuyangyifan 发表于 2015-11-4 14:39:43

楼主讲的好详细啊

斜阳__ 发表于 2016-3-11 22:26:06

保存一下

nashchen17 发表于 2016-8-13 21:41:55

感謝分享,學習了
页: [1]
查看完整版本: STM32F401RE-Nucleo开发分享'^_^'(SD & FATFS)