• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

【藍牙開發(fā)筆記】中科藍訊SDK開發(fā) 內(nèi)置FLASH讀寫方法

02/06 14:43
817
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

我們在開發(fā)的時候經(jīng)常要存儲一些自定義參數(shù)寫入內(nèi)部FLASH并讀取出來,本文講解中科藍訊SDK的內(nèi)置FLASH讀法方法。

首先了解一下中科藍訊的芯片框架結(jié)構(gòu):

芯片內(nèi)部一般會封裝一顆 512K 或 1M SpiFlash,用于存放代碼及資源文件/參數(shù)記憶等。SpiFlash 和芯片之間通過 spi 接口進行通信。

首先,代碼不會直接在 SpiFlash 上運行,SpiFlash 中所有程序及數(shù)據(jù)均需要先通過 spi 接口加載到芯片 RAM 中,CPU 再從 RAM 中取指令或數(shù)據(jù)運行。

以上就是中科藍訊平臺 FLASH 相關(guān)內(nèi)容的介紹。下面我們探討一下內(nèi)部Flash讀寫方法,難免會有失誤,歡迎大家一起留言探討,謝謝大家!

設(shè)定寫入地址

文件:appplatformbspbsmatchp_param.h添加要寫的自定義參數(shù)的相對地址

調(diào)API讀寫FLASH

API

寫 flash cache函數(shù)

cm_write8(u32 addr, u8 val); ?? //注意:write 只是寫入 cache;
addr 是待寫入的地址值,val 是需要寫入的值;
cm_sync(); ? //將 write 寫入 cache 的內(nèi)容同步到 spiflash 中;

注意此接口函數(shù)在寫入操作后進行調(diào)用是必須的,否則寫入操作不會生效。

讀 flash cache函數(shù)

cm_read8(u32 addr);
addr 是準(zhǔn)備讀取的地址值,函數(shù)返回值是我們讀取到的結(jié)果值。

寫參數(shù)接口函數(shù)

void bsp_param_write(u8 *buf, u32 addr, uint len);

讀參數(shù)接口函數(shù)

void bsp_param_read(u8 *buf, u32 addr, uint len);

示例:

在main.c bsp_sys_init后添加下面代碼

#if FLASH_RW_TEST_EN
u8 readPram[16];
bsp_param_write("Prama testn", PARAM_USER_DATA, 16);
bsp_param_read(readPram, PARAM_USER_DATA,16);
printf("%s", readPram);

#endif // FLASH_RW_TEST_EN

在配置文件config.h里,添加

#define FLASH_RW_TEST_EN 1

正式發(fā)布不需要這個測試,在配置文件里,把定義值改為0即可。

編譯燒錄、調(diào)試

開啟開發(fā)功能,燒錄后,會打印日志, 驗證是否讀寫成功。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄