这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【STM32F469I-DISCO】移植SD卡驱动

共2条 1/1 1 跳转至

【STM32F469I-DISCO】移植SD卡驱动

工程师
2025-04-11 14:07:48     打赏

【前言】

【STM32F469I-DISCO】播放器界面设计-电子产品世界论坛

在这篇中,我设计好了TouchGFX的界面,接下来这篇我介绍如何移植SD卡驱动。由于新版的TouhcGFX生成的工程使用MDK打开我经过几次编译都没有通过,因此此次设计采用stm32cubeIDE来做为设计工具。

【实现步骤】

1、通过TouchGFX生成工程后,打开工程stm32f469_stm32ide\STM32CubeIDE下面的.cproject工程文件:

image.png

2、打开后,工程如下图所示:

image.png

3、官方的开发板,是已经给出了SD卡的驱动了的,因此我们不必重复造轮子,他的驱动在sdk的STM32Cube\Repository\STM32Cube_FW_F4_V1.26.2\Drivers\BSP\STM32469I-Discovery目录下面,分别为stm32469i_discovery_sd.c/h

image.png

【移植步骤】

1、把这两个文件复制到工程的stm32f469_stm32ide\Drivers\BSP\STM32469I-Discovery目录下面:

image.png

2、在stm32cubeIDE工程中在Drivers->BSP->STM32469I-Discovery上鼠标右键->import-Genera->File System,然后点下一步,如下图所示:

image.png

3、选择stm32f469_stm32ide\Drivers\BSP\STM32469I-Discovery,然后钩选stm32469i_discovery_sd.c/h,点完成。就把这两个文件导入到工程中。

image.png

4、如果这样编译工程,会报找不到stm32sd的头文件的,有两个方法,一是在stm32f4xx_conf.h中把SD的#define HAL_SD_MODULE_ENABLED宏手动打开,还有就是使用stm32cubeMX打开SD,然后禁用生成SD的相关代码:

image.png

image.png

5、由于SD的总线时钟需要工作在45MHz以下,所以如果手工修改的,需要在时钟初始化的代码中把PLLQ修改为8:

image.png

如果使用stm32cubeMX,需要按下面的图示,修改PLLQ的分频系数为8,确保SDIO的总线为45MHz.

image.png

6、打开main.c,在主程序中添加初始化的代码:

/* USER CODE BEGIN 2 */
printf("start...\r\n");
if(BSP_SD_Init() != HAL_OK){
printf("sdcard init fail\r\n");
}else{
printf("sdcard init success\r\n");
}
/* USER CODE END 2 */

到此SD卡的驱动移植就结束了,编译后下载工程开发板,然后插上SD止,打开串口助手,重起后就会看到串口中打印去SD初始化成功的信息:

image.png

【总结】

做为stm32f469这款开发板,官方给出了bsp驱动,我们只需要很少的步骤,便可以实现对SD卡的驱动。但是有一些需要注意的地方,特别是SDIO的总线时钟一定要保证在45MHz以下。如果手工添加,还需要打开宏开关,要不会报找不到头文件的错误。




关键词: STM32F469I-DISCO     驱动     SDIO    

院士
2025-04-11 16:25:44     打赏
2楼

谢谢分享。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]