本帖最后由 goodjob 于 2021-3-1 22:31 编辑
小弟打算将SPIM的FLASH用于储存一些可变更的用户资料,用户可以使用U盘模式直接将文件复制进来,现在USB MSD+SPIM功能可以正常工作,写入程序是按SPIM例程的,先擦除一页,然后按word写入,速度只有88K每秒。请教下是否有提高写入速度的办法?平时操作QSPI FLASH都是按page(256字节)写入的,貌似SPIM没有按页写入的功能?uint16_t MAL_Write(uint8_t lun, uint32_t Memory_Offset, uint32_t *Writebuff, uint16_t Transfer_Length)
{
uint32_t i;
uint32_t addr=Memory_Offset+SPIM_TEST_ADDR;
u32 tmp;
switch (lun)
{
case 0:
FLASH_ErasePage(addr);
i=0;
while(i<SPIM_PAGE_SIZE)
{
FLASH_ProgramWord (addr+i,*(u32 *)(Writebuff+i/4));
i=i+4;
}
break;
case 1:
break;
default:
return MAL_FAIL;
}
return MAL_OK;
}
|
@muyichuan2012 :测试发现页擦除时间很长,4K要110ms左右,按flash手册应该是50ms,打算换wq25试试。另外FAT的格式化,是把flash格成0x00,导致每次写入都需要擦除一次,将读写数据都取反后,格式化后第一次写入很快,重复写入需要擦除页的话就还是慢。
@goodjob :可以把这个函数精简一下,FLASH_ProgramWord ();
@muyichuan2012 :目前这个写入速度主频没关系,我使用HSI48Mhz的时候,速度也是88K/s,不知道是哪里的问题限制了速度
@muyichuan2012 :主频设置了192
主频是多少呢