借用CMSIS包,我们可以很方便的对eflash进行读写操作;
AC781X芯片的eflash在擦除写入时,是不需要将eflash驱动copy到RAM中去运行的(之前有遇到一些芯片,是不可以在flash中运行擦写flash的代码的),甚至可以擦除当前正在运行的代码块(当然了,擦完肯定就飞了)。
编程的流程也很简单,就四个步骤:
1,解锁
2,擦除块
3,写入
4,上锁
当然,擦除后也可以再进行一下擦除验证。
整个操作代码就像下面这样,要注意eflash一页是2K,按字(4字节)来写入。
uint8_t ret;
EFLASH_UnlockCtrl();
ret = EFLASH_PageErase(0x08010000); ///<erase page
if (ret != EFLASH_STATUS_SUCCESS) return;
ret = EFLASH_PageEraseVerify(0x08010000); ///< verify erase state
if (ret != EFLASH_STATUS_SUCCESS) return;
//EFLASH_LockCtrl();
//EFLASH_UnlockCtrl();
ret = EFLASH_PageProgram(0x08010000, writedata, 512); ///< 写入512字(2K byte)
EFLASH_LockCtrl();
eflash_sample.rar
(348.43 KB)
|