微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2640写入flash只能一次?

CC2640写入flash只能一次?

时间:10-02 整理:3721RD 点击:

大家好!请教一个关于用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是能够重写的。请教各位大神有什么办法?多谢!

对的,需要按页擦除的。

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

請問解決了嗎?

我使用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() 無作用..寫完一次之後就不能再次寫入了

都是第一次寫入的值

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top