移植篇-存储介质外部SRAM
STM32F407基于外部SRAM的FATFS
软件
- keil5
- STM32CubeMX
硬件
- 正点原子STM32F407探索者
底部提供有Demo工程下载。
STM32CubeMX的配置图如下
- FSMC配置


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


USB Device是我实际工程用到的,可以忽略。
修改Keil工程
用STM32CubeMX生成工程之后,默认生成的SRAM设备地址和大小需要根据实际情况修改。

以上配置就完成了,下面就可以试下创建文件系统进行操作了。
/* 全局变量 */
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);
本文详细介绍了如何在STM32F407上移植FATFS文件系统到外部SRAM,包括使用STM32CubeMX进行FSMC配置、FATFS配置以及Keil工程的修改。通过实例展示了如何创建文件系统、挂载、创建文件并读写内容。
4196

被折叠的 条评论
为什么被折叠?



