goodjob 发表于 2021-3-1 22:17

请教下如何提高SPIM的写入速度

本帖最后由 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;
}

huangcunxiake 发表于 2021-3-3 13:25

要看速度是卡在哪儿了。

里面有晴雨 发表于 2021-3-3 15:08

没有看明白楼主问的问题了。卡在哪里了?

名字是啥样 发表于 2021-3-4 12:19

速度是卡在哪儿了?

goodjob 发表于 2021-3-8 22:15

名字是啥样 发表于 2021-3-4 12:19
速度是卡在哪儿了?

测试发现页擦除时间很长,4K要110ms左右,按flash手册应该是50ms,打算换wq25试试。另外FAT的格式化,是把flash格成0x00,导致每次写入都需要擦除一次,将读写数据都取反后,格式化后第一次写入很快,重复写入需要擦除页的话就还是慢。

自己的灌饼 发表于 2021-3-9 08:47

SPIM和SPI有什么区别呢?

goodjob 发表于 2021-3-9 09:57

自己的灌饼 发表于 2021-3-9 08:47
SPIM和SPI有什么区别呢?

SPIM应该就是QSPI,比SPI多几条线通信速度快。在AT32的应用上,是直接硬件映射到内存地址上的,读取的时候直接访问地址就可以得到数据,和内部FLASH操作一样。

答案很长吧 发表于 2021-3-9 12:14

检查速度,需要一点点测试,要有耐心的。

goodjob 发表于 2021-3-10 17:48

本帖最后由 goodjob 于 2021-3-10 19:28 编辑

答案很长吧 发表于 2021-3-9 12:14
检查速度,需要一点点测试,要有耐心的。
额,测试了几天就是擦除这块耗时比预计长一倍,但这个操作全部是硬件的内部控制的,没办法优化了

zpwang 发表于 2021-8-24 13:47

会不会是FLASH有质量问题或坏区太多了?

084425 发表于 2021-8-29 20:29

不要循环调用FLASH_ProgramWord 函数,自己封装函数,循环用在往地址写值阶段
页: [1]
查看完整版本: 请教下如何提高SPIM的写入速度