CH582M的flash/eeprom读写问题

在使用ISP583.h时有几个问题咨询一下:

问题1:EEPROM_WRITE/EEPROM_ERASE/EEPROM_READ接口的StartAddr使用的应该是相对地址,对于582M来说是相对0x70000作为首地址么?

问题2:FLASH_ROM_***接口中只提供了READ/WRITE/VERIFY三种,其参数StartAddr使用的是绝对地址么?(看起来像绝对地址)

问题3:如果上述FLASH_ROM***接口使用的是绝对地址,那么CH58x_flash.c中提供的FLASH_ROM_READ接口使用的应该也是绝对地址。那么使用这个接口能直接读取0x70000以后的数据(也就是EEPROM的数据)?(试了但读出来的数据对不上)

你好,EEPROM_WRITE/EEPROM_ERASE/EEPROM_READ接口的StartAddr使用的是相对地址,是相对0x70000作为首地址。

FLASH_ROM_接口中,其参数StartAddr使用的是绝对地址,不能直接读取0x70000以后的数据,仅限于操作codefalsh。


CH583 32K EEPROM 0地址开始保存了一些配置信息,比如节点地址,订阅地址,key信息等等,那么这些信息最大会占用多大空间,哪些地址可以留给用户使用会比较安全呢?比如我有温湿度、ADC值需要保存的话,应该放在哪里呢?EEPROM数据.png


dataflash总共32K。一般都是无数据存放可以使用。

注意:

    如使用蓝牙功能,则dataflash最后的512字节是作为snv存放ID信息使用。

    如使用蓝牙OTA功能,则此处会存放升级标志。

image.png



你好 我用的是adv_vendor_self_provision_with_peripheral例程,很明显32K data flash从0地址开始保存了配置信息,怎么会无数据存放呢?难道这里配置信息不是保存在data flash?


如果使用mesh,默认会占用前面12K的dataflash空间。


请问CH582M等内部的DATAFLASH的读写次数是多少?


你好,可以参考手册的参数章节:

image.png


你好,我在这里也看到了一些系统保存的信息,所以不太确定用户能用的dataflash 空间是多少,能给一个确定的范围吗?

image.png


使用蓝牙功能,默认是在dataflash最后512字节存放SNV信息:

1.png

使用MESH功能,会占用dataflash前12K。因为mesh也会涉及到配对绑定功能,所以也需要用到snv,也就是dataflash的最后512字节也会被占用;

使用OTA功能,则肯定是使用蓝牙的,那就是最后512字节会被占用。同时OTA的升级标志也会被存放在dataflash:

2.png


了解,谢谢!


请问下dataflash写之前需要先擦除吗?


您好,dataflash也是flash,也有flash须先擦再写的特性。

若确保目标地址距上一次擦除后没有被写过,当前仍是被擦除的状态,那么可以直接写;若无法保证目标地址中是否已被写过数据,一定要先擦再写,直接覆写会概率导致数据异常。


我测试过的,不擦除,直接写入,可以将位1写为0,但是不能将0写为1.


写之前一定要确保是被擦过的就好,否则实际写入的数据可能与目标数据不一致。


1


只有登录才能回复,可以选择微信账号登录