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

CC2640R2F Flash讀寫問題

使用SDK裡的simple_peripheral 範例做開發

SDK版本simplelink_cc2640r2_sdk_1_30_00_25

 

想要將data寫入Flash,試了一些方法都不成功

1.使用osal_snv_write/read

 

我的操作程式碼如下:

#define BUF_LEN 2

#define SNV_ID_APP 0x81

 

uint8_t wbuf[2]={0x2A,0x4D};

uint8_t rbuf[2]={0x00,0x00};

 

osal_snv_write(SNV_ID_APP, BUF_LEN, wbuf);

osal_snv_read(SNV_ID_APP, BUF_LEN, rbuf);

 

但一執行到osal_snv_write這行程式就卡住了…

停在一個看不懂的點

***********************************************************************************************************************

2.因為osal_snv_write/read本身也是引用HalFlashWrite/Read去做

有嘗試使用去對Flash讀寫

 

我的操作程式碼如下:

uint32_t flash_addr = 0x00014000;

uint8 page = 20;

uint8_t wbuf[1];

uint8_t rbuf[2]={0x00,0x00};

 

HalFlashErase(page);

wbuf[0]=0x2A;

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

wbuf[0]=0x55;

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

rbuf[0] = HWREG(flash_addr);      //read flash

rbuf[1] = HWREG(flash_addr+1);    //read flash

//HalFlashRead(16, 0, (uint8*)rbuf, 1);    <–這個function read 程式也會卡住..

第一次flash_addr(0x00014000)內的值為0xFF時,可以成功的將0x2A&0x55寫入Flash內

但是第二次要對相同位置寫入不同值時,無法再次寫入

有使用HalFlashErase(page)這個函數,但是看起來沒有對Flash做抹除動作,導致無法再次寫入data.

測試使用SmartRF Flash Programmer2 tool 將此位置的值寫入0xFF , 第一次可以成功寫入,以後依舊無法寫入失敗。

有什麼方式可以讓我順利的對Flash 進行抹除動作嗎….
各位版大有成功的做法也可以分享一下 感恩

user5111503:

你有解决这个问题吗?

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F Flash讀寫問題
分享到: 更多 (0)