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

共1条 1/1 1 跳转至

【STM32F469I-DISCO】移植FATFS

工程师
2025-04-11 20:47:39     打赏

【前言】

【STM32F469I-DISCO】移植SD卡驱动-电子产品世界论坛

在上篇,我介绍了如何移植SD,在移植好这个驱动后,就可以移植FATFS了,因为音乐播放器,fatfs是必须的。

【移植的例程】

在官方提供的示例中,有STM32Cube\Repository\STM32Cube_FW_F4_V1.26.2\Projects\STM32469I-Discovery\Applications\Display\LCD_AnimatedPictureFromSDCard这个例程是使用FATFS来实现使用SD卡的图片来显示到LCD上,因此可以拿到这个例程来实现对FATFS的移植。

【移植步骤】

1、打开这个示例,这个示例只有MDK的工程,但是文件是一样的,所以我先打开例程,分析他的结构,从而实现将示例移植过来。我先看下的工程结构:

image.png

从工程结构上来看,FatFs/Core下面的3个文件diskio.c、ff.c、ff_gen_drv.c,是FatFs的库文件,跟STM32是没有底层驱动相关的。而sd_diskio.c是FatFs对接stm32f469的驱动接口文件。而fatfs_storge.c是具体的文件读写用户实现。因此做如下移植。

2、理清楚上面的工程结构,那我们参照FatFs移植,我们先把SDK中的STM32Cube\Repository\STM32Cube_FW_F4_V1.26.2\Middlewares\Third_Party下的fatfs文件夹复制到工程中的stm32f469_stm32ide\Middlewares\Third_Party目录下:

image.png

3、在工程的Middlewares目录下面新建一个工程文件夹FatFs,并将diskio.c、ff.c、ff_gen_drv.c导入到该项目目录下面。

image.png

4、将示例STM32Cube\Repository\STM32Cube_FW_F4_V1.26.2\Projects\STM32469I-Discovery\Applications\Display\LCD_AnimatedPictureFromSDCard工程下的sd_diskio.c、fatfs_storage.c添加到Usrea项目目录下面:

image.png

5、将上面的几个文件夹路径添加进c、c++工程中:

image.png

image.png

6、因为,fatfs是需要通过sdio的dma传输的,需要在stm32f4xx_it.c中添加dma的中断回调函数:

void SDIO_IRQHandler(void)
{
	BSP_SD_IRQHandler();
}
void BSP_SD_DMA_Rx_IRQHandler(void)
{
	HAL_DMA_IRQHandler(uSdHandle.hdmarx);
}

同时也需要把stm32f469i_discovery_sd.h头文件加进,也需要exter sd的结构体。添加代码如下:

#include "stm32469i_discovery_sd.h"
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN TD */
extern SD_HandleTypeDef uSdHandle;
/* USER CODE END TD */

同时因上dma的中断与后面音频的的dma驱动中断有冲突,因此需要把中断修改为dma2_stream4与dma2_stream6:

image.png

到此fatfs就移植成功了,如果需要验证,那么我们只需要执行一下storge_Init,如果能返回正确,说明驱动是正常的,详细的验证,将在后面的播放中来验证:

uint32_t Storage_Init(void)
{
  BSP_SD_Init();
  
  /****************** FatFs Volume Access ******************************/
  if(f_mount(&fs, (TCHAR const*)"",0))
  {
    return 1;
  }
  return 0;
}

【总结】

根据官方的示例工程,来实现fatfs的移植,不需要重复造轮子还是比较方便的。

【感谢】

这次移植是学习西安交大严学文老师的TouchGFX课程来实现的。





关键词: STM32F469I-DISCO     FATFS    

共1条 1/1 1 跳转至

回复

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