FATFS系列之移植篇-存储介质外部SRAM

移植篇-存储介质外部SRAM

STM32F407基于外部SRAM的FATFS

软件

  1. keil5
  2. STM32CubeMX

硬件

  1. 正点原子STM32F407探索者

底部提供有Demo工程下载。

STM32CubeMX的配置图如下

  • FSMC配置
    FATFS系列之移植篇-存储介质外部SRAM_第1张图片

FATFS系列之移植篇-存储介质外部SRAM_第2张图片

片选号、地址位、数据位要根据实际的情况来设置,具体看原理图。
记得要 写操作要使能,否则会出现HardFault错误
时序使用默认的就行,之前网上看到有一个设置为0时序,翻车了…

  • FATFS的配置

FATFS系列之移植篇-存储介质外部SRAM_第3张图片

FATFS系列之移植篇-存储介质外部SRAM_第4张图片

USB Device是我实际工程用到的,可以忽略。

修改Keil工程

用STM32CubeMX生成工程之后,默认生成的SRAM设备地址和大小需要根据实际情况修改。

FATFS系列之移植篇-存储介质外部SRAM_第5张图片

以上配置就完成了,下面就可以试下创建文件系统进行操作了。

/* 全局变量 */
FRESULT f_result;
FIL myfile;
uint32_t br,bw;
uint8_t msg[] = "hello world";
uint8_t buff[20];
uint8_t work[4096]; 


f_result = f_mkfs(SRAMDISKPath, FM_FAT|FM_SFD, 512, work, 4096); /* 创建文件系统 */
if(f_result != FR_OK)
{
  //printf("f_mkfs() allocated failed\r\n");
  while(1);
}
f_result = f_mount(&SRAMDISKFatFS, SRAMDISKPath, 0); /* 挂载文件系统 */
if(f_result != FR_OK)
{
  //printf("f_mkfs() allocated failed\r\n");
  while(1);
}

/* 创建测试文件并写入内容 */
f_open(&myfile, "test.txt", FA_WRITE|FA_CREATE_ALWAYS);
f_write(&myfile,msg,11,&bw);
f_close(&myfile);

/* 读出测试文件的内容 */
f_open(&myfile, "test.txt", FA_READ);
f_read(&myfile,buff,11,&br);
f_close(&myfile);

/* 大家可以打断点看buff数组的内容,也可以用串口打印出来,
	注意要初始化串口,否则会卡死在printf()哦 */
//printf("buff content:[%s] \r\n",buff);

Demo工程下载

你可能感兴趣的:(文件系统)