硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2468|回复: 13
收起左侧

[Flash] H743片内NAND擦除和写入需要的时间

[复制链接]

57

主题

88

回帖

259

积分

高级会员

积分
259
发表于 2021-9-9 15:02:55 | 显示全部楼层 |阅读模式
请教:
H743主频480MHz,FLASH 使用4个clock延时。测试发现:
1、擦除1个sect,时间为1us(有效内容32字节);
2、调用HAL_FLASH_Program写入32个字节,时间将近1s,太不可思议了,这样如果写入128K,得多长时间呀。

是有没有注意到的什么地方吗(没有使用DCACHE)。

谢谢!

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2021-9-9 15:27:31 | 显示全部楼层
楼主的是内部Flash吗,自动的那个2MB  Flash。
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

QQ截图20210909152856.png

回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2021-9-9 15:35:24 | 显示全部楼层
eric2013 发表于 2021-9-9 15:27
楼主的是内部Flash吗,自动的那个2MB  Flash。
1、这个Flash不是NAND型的,应该属于NOR型的。
2.  内部Fl ...

多谢硬汉!!!
说错了,是内部NOR FLASH(128K)

我用I/O口翻转来测量一个SECT擦除和写入的时间。每次都是先擦除(里面只有上次写入的32个字节),然后写入32个字节,发现擦除只需不到1us(不知是否同有效数据有关),但是写入的确花费1s(HAL_FLASH_Program)。

不知道是不是哪里用得不对?


回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2021-9-9 15:36:36 | 显示全部楼层
eric2013 发表于 2021-9-9 15:27
楼主的是内部Flash吗,自动的那个2MB  Flash。
1、这个Flash不是NAND型的,应该属于NOR型的。
2.  内部Fl ...

代码在BANK2运行,擦除BANK1的一个SECT,并写入32个字节

谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2021-9-9 16:46:37 | 显示全部楼层
twodiamond 发表于 2021-9-9 15:35
多谢硬汉!!!
说错了,是内部NOR FLASH(128K)

擦除并写入的话,1s还可以理解。

不能往固定地址写入,你要考虑地址递增,用满128KB了再考虑擦除。
回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2021-9-9 16:51:09 | 显示全部楼层
eric2013 发表于 2021-9-9 16:46
擦除并写入的话,1s还可以理解。

不能往固定地址写入,你要考虑地址递增,用满128KB了再考虑擦除。

只调用一次HAL_FLASH_Program写入32个字节,需要耗费1s,感觉不可接受呀,用JLINK烧录整个code(100K)都很快的。

硬汉你们有测试过吗?
谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2021-9-9 17:02:46 | 显示全部楼层
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字节时是不需要再次擦除的,你是不是这个点没有理解对,我感觉你是这个地方里面偏差了。
回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2021-9-9 17:13: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

可以这样理解不?
谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2021-9-9 18:02:47 | 显示全部楼层
你这个已经完全异常了,我的测试。
QQ截图20210909180220.png
回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2021-9-10 15:12:46 | 显示全部楼层
eric2013 发表于 2021-9-9 18:02
你这个已经完全异常了,我的测试。

请问硬汉,你的写入函数也是HAL_FLASH_Program吗?
我可以跑一下你的测试工程不?

谢谢!!!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2021-9-10 16:21:04 | 显示全部楼层
twodiamond 发表于 2021-9-10 15:12
请问硬汉,你的写入函数也是HAL_FLASH_Program吗?
我可以跑一下你的测试工程不?

就是二楼发你的例子。
回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2021-9-10 16:59:01 | 显示全部楼层
eric2013 发表于 2021-9-10 16:21
就是二楼发你的例子。

感谢!!!
回复

使用道具 举报

3

主题

8

回帖

17

积分

新手上路

积分
17
发表于 2024-3-30 11:33:07 | 显示全部楼层
eric2013 发表于 2021-9-9 18:02
你这个已经完全异常了,我的测试。

硬汉哥您好,针对这个擦除问题,我发现每次擦除用时不同,最大相差60ms,想请教一下您那边测试也会出现这么大时间差么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2024-4-1 08:21:04 | 显示全部楼层
SRIlyy 发表于 2024-3-30 11:33
硬汉哥您好,针对这个擦除问题,我发现每次擦除用时不同,最大相差60ms,想请教一下您那边测试也会出现这 ...

60ms不大,这个属于正常。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 03:11 , Processed in 0.320111 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表