STM32f746g-Discovery 有外部 SDRAM,我想通过 FatFs 使用它。
然后我根据 BSP(板级支持包)驱动程序 [stm32746g_discovery_sdram.c][1] 在 cubeIDE 中启用了 FMC,除了一个参数“Write recovery
time”,IDE 不允许我将其设置为 2,其最小值为 3 .
然后我根据 FatFs_RAMDisk 项目的 [ffconf.h][2] 配置了“FATFS->external SDRAM”中间件,注意这个项目也使用相同的外部 SDRAM。
现在我试图在 main() 中执行这段代码:
结果结果;/* FatFs 函数公共结果码 */
uint32_t 字节写入,字节读取;/* 文件写入/读取计数 */
uint8_t wtext[] = "这是与 FatFs 一起工作的 STM32"; /* 文件写入缓冲区 */
uint8_t rtext[100];/* 文件读取缓冲区 */
如果(FATFS_LinkDriver(&SDRAMDISK_Driver,RAMDISKPath)== 0)
{
/*##-2-将文件系统对象注册到FatFs模块##############*/
if(f_mount(&RAMDISKFatFs, (TCHAR const*)RAMDISKPath, 0) != FR_OK)
{
/* FatFs 初始化错误 */
错误处理程序();
}
别的
{
/*##-3-在逻辑盘上创建FAT文件系统(格式)#########*/
if(f_mkfs((TCHAR const*)RAMDISKPath, FM_ANY, 0, buffer, sizeof(buffer)) != FR_OK)
.
.
.
但它挂在“f_mkfs”上。通过调试我发现它完全挂在 ff.c 上:
如果(disk_write(pdrv,buf,b_vol,1)!= RES_OK)返回FR_DISK_ERR;/* 写入VBR扇区 */
在 sdram_diskio.c 上更进一步:
DRESULT SDRAMDISK_write(BYTE lun, const BYTE *buff, DWORD sector, UINT count)
[那里][3] 是完整的 stm32cubeIDE 1.3 项目。