使用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:
你有解决这个问题吗?