TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640写入flash只能一次?

大家好!请教一个关于用CC2640读写flash问题。

我用osal_snv_write(osalSnvId_t id, osalSnvLen_t len, void *pBuf)可以写入数据,也可以用uint8 osal_snv_read(osalSnvId_t id, osalSnvLen_t len, void *pBuf)正确读出。例如:

char buffer[20];

osal_snv_write(START_ID, 16, "Hello the world!");

osal_snv_read(START_ID, 16, buffer);

我的问题是,如果再次写入flash新的内容,读出来的仍然是原来的内容,flash不能被更细。例如:

osal_snv_write(START_ID, 16, "Greetings to ya!");

osal_snv_read(START_ID, 16, buffer);

读出来的内容还是"Hello the world!"。我怀疑是否在重新写入之前需要erase,但是没有找到osal_snv_erase()函数,手册中也没有看到怎样能够erase。我相信flash是能够重写的。请教各位大神有什么办法?多谢!

da qin zheng sheng:

对的,需要按页擦除的。

Viki Shi:

CC26XX没有SNV erase函数,你用osal_snv_write重写的时候就会覆盖原先的内容。请问你的重写操作有返回报错信息吗?

Eva Lo:

請問解決了嗎?

我使用Flash也遇到類似的問題…

但我的osal_snv_write/ read 無法使用,會卡程序…我是使用下面的函數去做的

uint32_t flash_addr = 0x00014000;

uint8 page = 20;

HalFlashErase(page) // erase flash

HalFlashWrite(flash_addr, (uint8*)&wbuf, 1); //

HWREG(flash_addr);

但是HalFlashErase() 無作用..寫完一次之後就不能再次寫入了

都是第一次寫入的值

赞(0)
未经允许不得转载:TI中文支持网 » CC2640写入flash只能一次?
分享到: 更多 (0)