你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【猪圈丶嗨情歌的开发分享】STM32F4通过SDIO使用FatFs读取SD卡 精华  

[复制链接]
猪圈丶嗨情歌 发布时间:2015-12-23 16:17

. j2 Z: \% g$ X5 i  u  i0 t/ f. O! ]
【猪圈丶嗨情歌的开发分享】/ O/ n* ~; w4 E* N$ b
  • 今天要给大家分享的是使用FatFs这个库来读写SD卡上面的文件。工程的初始化函数和FatFs都是通过STM32CubeMX配置生成的,不需要我们手动添加库。
  • 今天分享的内容和我的上一篇帖子 SDIO读取SD卡的扇区 有关,最好掌握了SDIO读取SD卡扇区的基础之后再来看这一篇帖子。
    2 j0 n8 I3 t/ x$ H. K
" P3 F1 q' e$ D  w) o$ @: d- p; @4 C7 q; C
写在前面的话
& I. }, M  @9 ^3 b2 f# M6 k9 q/ H
  • 上一次发表了关于SDIO读取SD卡的一篇开发分享的帖子,今天呢就更进一步使用了FatFs文件系统。同样我们完全使用ST公司提供的STM32CubeMX软件和HAL库来进行开发。如果喜欢我的帖子请多多回复我会努力更新的。
    9 r) p0 `) J/ o  W

2 L& Z$ K  F" d* u& @我使用的工具: \" E# v* F) O: m- p7 G; t
  • 开发平台:正点原子探索者STM32F407开发板
  • 硬件:使用了NUCLEO-F446RE开发板的ST-Link作为调试器、SD卡、数据线、开发板的电源适配器、DELL一体机
  • 软件:STM32CubeMX、Keil V5、串口助手0 q% X) b8 H) C2 p- {8 \' @
! z# o. y/ |7 n' b; X( @% u
学习的知识点' y8 A4 q* b, b2 F
  • 1、使用STM32CubeMX配置SDIO
  • 2、在Keil中初始化SDIO
  • 3、修改HEAP内存块的大小
  • 4、malloc函数的使用
  • 5、如何使用FatFs提供的一些库函数
    3 F! x4 X- ^# m6 C) D

5 @! g$ y4 N& |- ^; x共享的资源
7 \4 j& `. V5 E+ f' |( Q完整的工程文件  
FatFs.zip
# r, A* K2 N% I% y1 y, [STM32Cube中FatFs的中文帮助文档  
UM1721_DM00105259_CN.pdf (560.87 KB, 下载次数: 296)
收藏 7 评论30 发布时间:2015-12-23 16:17

举报

30个回答
猪圈丶嗨情歌 回答时间:2015-12-23 16:33:40
yanhaijian 发表于 2015-12-23 16:26
; Q' e8 j7 ]) Z! z5 E& H+ c使用图形化编程可能会导致对底层工作原理理解不深。
9 q$ Z- {! ^  s% Q9 ]  E# Y
(⊙v⊙)嗯,我也是平时兴趣爱好所以在玩MCU。让这个芯片工作起来是首要目标,刚开始的时候一直是看原子哥的手册,但是每次配置觉得好麻烦。后来接触到了STM32CubeMX用了几次之后才慢慢接受的,之前都觉得这个东西不是很好用。但是现在我每次学习新的东西的时候都是用HAL库了,再也没有用过老版的库函数了。
" Q9 Z: m4 N0 l现在还没有遇到过底层机制的问题,不知道能否指点一下由于底层机制对开发造成影响的问题我好在后面的学习中多加注意。
adlu 回答时间:2015-12-23 17:26:24
很不错!, G5 @4 _, B3 _$ |* s
我最近也在使用Cube配置SDIO和FATFS的应用。
( J7 }8 c6 `6 A" c; u- E楼主说的BSP_SD_Init()这个函数其实可以不显性的调用,Cube生成的程序架构里会在第一次调用文件操作函数的时候调用该函数,然后将SD卡初始化标志变量置1,之后就不再调用该函数,除非出现底层操作失败。
, B' q$ G. ^) d5 X9 U9 ~7 N% R# i7 A5 b. |
当然,显性调用也有好处,就是可以在程序一开始就获取到SD卡类型,容量等信息。
/ @* f0 r2 \0 |# ~# w  `! kSD卡信息会存放在结构体HAL_SD_CardInfoTypedef SDCardInfo;中。
猪圈丶嗨情歌 回答时间:2016-1-9 20:05:45
hanweng 发表于 2016-1-9 13:30- K4 u0 z- a! n
能否接2个SD卡呢????
- P, r8 v" Y" z5 `
理论上可以,在挂载文件系统的地方再挂载一个SD卡。但是这样的话,一部分底层驱动可能要自己写。SDIO接口一般是一个吧,另一个SD卡可能要SPI来读取了,SPI读取的SD卡底层驱动要自己提供才可以给FatFs调用。
yanhaijian 回答时间:2015-12-23 16:22:47
学生阶段能达到这个水平以及很高了。
猪圈丶嗨情歌 回答时间:2015-12-23 16:24:20
yanhaijian 发表于 2015-12-23 16:22
' V4 L0 A) g6 s# A; N学生阶段能达到这个水平以及很高了。

# K$ D  n% V+ _9 a, G6 P6 F& T谢谢鼓励3 E- F4 w' @; M& J
送你一朵
yanhaijian 回答时间:2015-12-23 16:26:20
zhangbolily 发表于 2015-12-23 16:24
) i/ [% \1 e! Y0 {3 U, C* l谢谢鼓励
1 V/ s* N1 L1 g/ D$ u! H' T送你一朵❀
/ I& F8 A! Q& @; |9 u2 y! n7 b  e
使用图形化编程可能会导致对底层工作原理理解不深。
猪圈丶嗨情歌 回答时间:2015-12-23 17:56:16
adlu 发表于 2015-12-23 17:26  d9 e( I" t- g8 W0 k& Q9 ^4 u; h
很不错!, g# }! |2 t( O7 H; q3 W! ?
我最近也在使用Cube配置SDIO和FATFS的应用。
' [4 e4 B9 S$ P- M# I% s楼主说的BSP_SD_Init()这个函数其实可以不显性的调用 ...
# {2 `/ f7 z% M7 h9 E/ V5 E

- w0 c9 q1 n0 E这样啊,其实我在做这次项目的时候遇到了太多的问题,所以写代码的时候还是很小心的。
lkl0305 回答时间:2015-12-23 20:59:13
多谢 分享
suoma 回答时间:2015-12-23 22:12:11
下一篇是音频放大吗?
猪圈丶嗨情歌 回答时间:2015-12-23 22:33:12
suoma 发表于 2015-12-23 22:12" H4 R5 H1 j" K, S- Z+ I8 i
下一篇是音频放大吗?

& n- \) z1 W  f(⊙o⊙)嗯,可能会用ST提供的库函数来进行音频解码。不过这个工作量不知道多少,所以我会放一阵子再弄。
mark0668 回答时间:2015-12-23 22:49:14
谢谢 分享
2602082487 回答时间:2015-12-24 00:08:36
楼主写的不错
烟花绽放 回答时间:2015-12-24 08:50:43
学习了,,支持
埃斯提爱慕 回答时间:2015-12-24 18:53:08
提示: 作者被禁止或删除 内容自动屏蔽
suoma 回答时间:2015-12-24 20:04:49
zhangbolily 发表于 2015-12-23 22:335 D0 ~5 I& S5 a3 B
(⊙o⊙)嗯,可能会用ST提供的库函数来进行音频解码。不过这个工作量不知道多少,所以我会放一阵子再弄。 ...
, a# H" }3 [- K2 P% a( E# P
                       期待
123下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版