请教CH592的dataflash操作问题

我看到例程中对dataflash操作是利用EEPROM_READ、EEPROM_ERASE、EEPROM_WRITE三个函数,针对这三个函数我有如下疑问:

1:dataflash的本质还是flash,是否存在页的概念?尤其是擦除和写的操作是,写入的数据长度必须是页的整数倍吗?还是的确做到了像EEPROM一样,可以单字节进行操作,不需要先将数据预存到RAM中。

2:函数说明无论读取、擦除和写入数据,输入地址必须是4的整数倍,则输入的数据长度是否必须是4的整数倍?

3:利用EEPROM_WRITE写入数据的时候,是否必须先要调用EEPROM_ERASE函数擦除一下。

您好,总的来讲,在应用层代码中,dataflash的flash特性体现在擦除上,读/写都可以按EEPROM的特性操作。

①也是有页的,体现在擦除接口中,至少擦256字节,即按页擦除。在读/写时,对应用层来讲,和EEPROM的使用一致,可以单字节读/写。

②读/写接口中的起始地址按接口注释,要求4字节对齐。擦除地址要求256字节对齐,即按页对齐。读/写长度都可以做到单字节。

③若写入的目标地址中已有数据,则必须要擦除。由于可以单字节操作,若写入的目标地址已经是擦除状态,即硬件层flash中全1,是可以直接写的。

下方代码举例:

image.png

image.png

image.png

image.png


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