沁恒risc-v蓝牙芯片的flash使用注意点
Ⅰ.调用接口方面(表格中使用CH592F实测)
①不论是codeflash还是dataflash,写之前一定要先擦除。dataflash的接口名中带有EEPROM字样,但本质上它还是flash。
②操作flash相关接口,在库中已包含失能/恢复中断 ,无需应用层代码再添加。
③操作flash接口导致硬件错误复位,常见情况是4字节对齐问题导致,排查方法见博客:CH57x/CH58x/CH32V wch risc-v 芯片hardfault问题追踪&程序卡死追踪 - iot-fan - 博客园 (cnblogs.com)

Ⅱ.手册信息,介绍了擦写寿命、单次扇区擦除操作时间。RISC-V内核的CH5Xx蓝牙MCU此处参数相差不大。

Ⅲ.BLE例程中使用到的dataflash区域。注意避开或是在宏定义中重新规划。
如果使用的是CH57x系列、CH58x系列(包括CH582系列和CH585系列),以及非CH592A这一型号且已使用了CH59x的24年9月前的EVT包的情况下,可以参考以下表格中的地址:

如果使用的是CH592A这一特定型号,那么dataflash一定要按下方表格配置。
25年及以后发布的CH592EVT包已改成兼容CH592A的下表地址。如果实际用其他59x系列MCU如CH592F、CH591D等,可自定义修改;可改成与上方表格一致的地址配置来节省空间;已量产的代码也可以继续使用,不必修改到兼容CH592A的代码。

BLE代码中,由于CH592A的dataflash擦除单位为4K,不建议在0x7000~0x7FFFF范围内存放自定义内容,实际默认使用256字节来保存单个设备的配对绑定信息(0x7000~0x70FF为1个,依次往后保存)。
Ⅳ.操作dataflash时间开销实测(表格中使用CH592F实测)
①注意CH592A这个型号,支持了105℃工作,其code/dataflash都只支持4096字节”块擦“。
②codeflash的擦写速度也可以参考该表格。
③仅做大致参考,未排除温度、逻辑分析仪性能(实测使用1G采样率)等因素的干扰。
|
字节数 |
擦除时长(ms) |
写入时长(ms) |
读出时长(us) |
|
1 |
17.14 |
2.2 |
7 |
|
100 |
17.15 |
2.2 |
48 |
|
256(1页) |
17.15 |
1.6 |
110 |
|
300 |
34.28 |
3.7 |
127 |
|
500 |
34.27 |
3.7 |
207 |
|
512(2页) |
34.28 |
3.2 |
212 |
|
513 |
51.45 |
5.3 |
212 |
|
4096(1块) |
17.13 |
25.5 |
1.65ms |
|
4096+256(1块+1页) |
34.32 |
27.1 |
1.75ms |
|
4096+300 |
51.44 |
29.2 |
1.76ms |
浙公网安备 33010602011771号