H743片内NAND擦除和写入需要的时间
请教:H743主频480MHz,FLASH 使用4个clock延时。测试发现:
1、擦除1个sect,时间为1us(有效内容32字节);
2、调用HAL_FLASH_Program写入32个字节,时间将近1s,太不可思议了,这样如果写入128K,得多长时间呀。
是有没有注意到的什么地方吗(没有使用DCACHE)。
谢谢!
楼主的是内部Flash吗,自动的那个2MBFlash。
1、这个Flash不是NAND型的,应该属于NOR型的。
2.内部Flash的的扇区大小固定是128KB,你1us是绝对擦除不完的。
3.HAL_FLASH_Program写入32个字节,时间将近1s就更加诡异了。
我建议楼主使用下载器使用MDK,IAR等给你的板子下载几次不同大小的程序,就对这个有个全面的认识了。
另外楼主可以参考下我的这个例子,内部Flash模拟EEPROM的。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980
eric2013 发表于 2021-9-9 15:27
楼主的是内部Flash吗,自动的那个2MBFlash。
1、这个Flash不是NAND型的,应该属于NOR型的。
2.内部Fl ...
多谢硬汉!!!
说错了,是内部NOR FLASH(128K)
我用I/O口翻转来测量一个SECT擦除和写入的时间。每次都是先擦除(里面只有上次写入的32个字节),然后写入32个字节,发现擦除只需不到1us(不知是否同有效数据有关),但是写入的确花费1s(HAL_FLASH_Program)。
不知道是不是哪里用得不对?
eric2013 发表于 2021-9-9 15:27
楼主的是内部Flash吗,自动的那个2MBFlash。
1、这个Flash不是NAND型的,应该属于NOR型的。
2.内部Fl ...
代码在BANK2运行,擦除BANK1的一个SECT,并写入32个字节
谢谢! twodiamond 发表于 2021-9-9 15:35
多谢硬汉!!!
说错了,是内部NOR FLASH(128K)
擦除并写入的话,1s还可以理解。
不能往固定地址写入,你要考虑地址递增,用满128KB了再考虑擦除。 eric2013 发表于 2021-9-9 16:46
擦除并写入的话,1s还可以理解。
不能往固定地址写入,你要考虑地址递增,用满128KB了再考虑擦除。
只调用一次HAL_FLASH_Program写入32个字节,需要耗费1s,感觉不可接受呀,用JLINK烧录整个code(100K)都很快的。
硬汉你们有测试过吗?
谢谢! twodiamond 发表于 2021-9-9 16:51
只调用一次HAL_FLASH_Program写入32个字节,需要耗费1s,感觉不可接受呀,用JLINK烧录整个code(100K)都 ...
你的描述有问题,你到底是调用HAL_FLASH_Program就需要1s,还是调用SECT擦除再调用HAL_FLASH_Program的总时间是1s,
如果你是仅仅调用HAL_FLASH_Program就是1s显然是不正常。
如果你是擦除1个128KB sect再调用HAL_FLASH_Program,这个是1s,完全正常啊。本身擦除1个sect就需要1s左右。
特别注意一点,你擦除一个1个sect后,首地址写入32字节,然后偏移32字节地址后,再写32字节时是不需要再次擦除的,你是不是这个点没有理解对,我感觉你是这个地方里面偏差了。
eric2013 发表于 2021-9-9 17:02
你的描述有问题,你到底是调用HAL_FLASH_Program就需要1s,还是调用SECT擦除再调用HAL_FLASH_Program的总 ...
代码这样的:
//擦除1个SECT
SetIoOutput(0,0);//io0 输出0电平
HAL_FLASH_Unlock();
FLASH_Erase_Sector(FLASH_SECTOR_2, FLASH_BANK_1, VOLTAGE_RANGE_3);
HAL_FLASH_Lock();
SetIoOutput(0,1);//io0 输出1电平
//写入32个字节
SetIoOutput(1,0);//io1 输出0电平
HAL_FLASH_Unlock();
HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, writeAddr, (uint32_t)pData);
HAL_FLASH_Lock();
SetIoOutput(1,1);//io1 输出1电平
用示波器测量发现:
io0 的负脉冲为1us- 表示擦除为1us
io1的负脉冲为1s - 表示写入32个字节为1s
可以这样理解不?
谢谢! 你这个已经完全异常了,我的测试。
eric2013 发表于 2021-9-9 18:02
你这个已经完全异常了,我的测试。
请问硬汉,你的写入函数也是HAL_FLASH_Program吗?
我可以跑一下你的测试工程不?
谢谢!!! twodiamond 发表于 2021-9-10 15:12
请问硬汉,你的写入函数也是HAL_FLASH_Program吗?
我可以跑一下你的测试工程不?
就是二楼发你的例子。 eric2013 发表于 2021-9-10 16:21
就是二楼发你的例子。
感谢!!! eric2013 发表于 2021-9-9 18:02
你这个已经完全异常了,我的测试。
硬汉哥您好,针对这个擦除问题,我发现每次擦除用时不同,最大相差60ms,想请教一下您那边测试也会出现这么大时间差么? SRIlyy 发表于 2024-3-30 11:33
硬汉哥您好,针对这个擦除问题,我发现每次擦除用时不同,最大相差60ms,想请教一下您那边测试也会出现这 ...
60ms不大,这个属于正常。
页:
[1]