STM32CUBEMX | stm32cubemx+FATFS+SDMMC的相关配置与问题

本文档详细介绍了如何在STM32L431RCT6微控制器上配置和初始化SD卡,采用4位宽总线模式,设置时钟为48MHz,并使用DMA和中断。同时,配置了FATFS文件系统,选择了SDCard作为存储介质,支持长文件名并使用动态栈工作区。通过调整MX_SDMMC1_SD_Init和MX_FATFS_Init函数实现自定义初始化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我使用的是stm32L431RCT6、stm32cubemx6.3.0、L4的v1.151固件库、闪迪16GBTF卡。

配置:
1、使用SD 4 bits Wide bus 模式。
2、clock transition on which the bit capture is made:rising transition。
3、给sdmmc的时钟频率是48MHz,分频系数是4。(如果后面的代码调试过程中显示出错,可以再降低频率)
4、开启sdmmc的RX、TX的DMA。
5、开启sdmmc的中断。保证中断的优先级比DMA的优先级高
6、FATFS选择”SD Card”。
7、CODE_PAGE选择“simplified Chinese”
8、USE_LFN选择“enable with dynamic working buffer on the STACK”.
9、detect_sdio选择一个输入模式的引脚与TF卡相连。

在生成的代码中,将自动生成的“MX_SDMMC1_SD_Init”和“MX_FATFS_Init”注释掉,然后在自己的代码中,重新写上这两个函数。重新初始化。

### STM32CubeMX 配置 STM32L4 系列微控制器通过 SDIO 接口和 FatFS 文件系统进行 SD 卡读写 #### 使用 STM32CubeMX 初始化项目设置 为了实现 STM32L4 微控制器 SD 卡之间的通信,首先需要使用 STM32CubeMX 工具初始化硬件资源。具体操作如下: - 打开 STM32CubeMX 并创建新工程,选择目标设备为 STM32L4 系列。 - 启用 `SDMMC1` 外设用于管理 SD 卡接口,并将其模式设定为 `SDIO`[^1]。 - 设置时钟树结构,确保 SDIO 的输入频率不超过规定范围;推荐初始配置采用 4 分频得到大约 12 MHz 的工作频率以兼容更多类型的存储卡。 #### 安装并集成 FatFs 库支持 完成上述基础配置之后,则需引入第三方 FAT 文件系统的软件包——FatFs 来处理实际的数据存取逻辑: - 在 IDE 中导入官方提供的中间件组件或自行下载最新版本的 FatFs 源码加入到工程项目里; - 修改 `ffconf.h` 文件中的宏定义参数适配当前平台特性以及应用需求; - 实现必要的底层驱动函数(如 disk_initialize, disk_read 等),这些通常由 HAL 层提供辅助实现。 #### 编写应用程序代码片段 下面给出一段简单的 C 语言程序示范如何利用已有的环境框架执行基本文件 I/O 操作: ```c #include "main.h" #include "stm32l4xx_hal.h" #include "fatfs.h" FATFS fs; /* File system object */ FIL fil; /* File object */ int main(void){ // System Initialization... if(f_mount(&fs, "", 0) != FR_OK){ Error_Handler(); } if (f_open(&fil, "TEST.TXT", FA_CREATE_ALWAYS | FA_WRITE) != FR_OK){ Error_Handler(); } const char *msg = "Hello World!"; UINT bw; f_write(&fil, msg, strlen(msg), &bw); f_close(&fil); FIL fil_rd; if (f_open(&fil_rd, "TEST.TXT", FA_READ) != FR_OK){ Error_Handler(); } char buff[50]; UINT br; f_read(&fil_rd, buff, sizeof(buff)-1, &br); buff[sizeof(buff)-1]='\0'; printf("%s\n",buff); f_close(&fil_rd); } ``` 此段代码展示了从打开/关闭文件、写入字符串至新建文档再到重新加载其内容的一系列过程。需要注意的是,在真实开发过程中应当更加严谨地对待错误检测机制,并考虑增加更多的功能模块满足特定应用场景下的复杂要求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值