• 資料介紹
  • 在線預覽
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1216 BlueNRG系列芯片F(xiàn)lash操作與BLE事件的互斥處理

03/26 10:33
618
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1216 BlueNRG系列芯片F(xiàn)lash操作與BLE事件的互斥處理

910.91 KB

引言

在許多基于 BlueNRG-1/2 系列芯片低功耗藍牙的設計項目時,客戶通常會在 Flash的特定區(qū)域存儲定制的數(shù)據(jù)。然而需要特別注意的是,在 BlueNRG-1/2 方案中,用戶對Flash 的讀寫操作必須在射頻空閑的情況下進行,兩者是互斥的關系。

問題描述

客戶經(jīng)常反饋類似問題,諸如:當用戶程序嘗試將用戶定制數(shù)據(jù)寫入 Flash 中特定區(qū)域時,發(fā)現(xiàn) BLE 射頻部分停止工作,或芯片直接死機了。

解決辦法

使用一個雙向鏈表來管理 Flash 操作(Flash 擦除或者是 Flash 寫,F(xiàn)lash 讀無需和BLE 相關事件互斥),并使用一個雙向鏈表來管理空余時間狀態(tài)。在空余的時間執(zhí)行Flash 操作。從芯片手冊可以知道,操作 Flash,特別是擦除時,會占用比較多的時間。為了避免操作 Flash 占用過多的時間片,把每次寫或者擦除 Flash,用一個列表來管理,每次寫或者擦除操作,插入 Flash 操作鏈表的最后。 在主循環(huán)中檢測是否有足夠的時間寫,如果當前空閑的時間足夠,取出 Flash 操作鏈表中最前的一個節(jié)點,執(zhí)行 Flash 操作,然后將節(jié)點移除。對于如何檢測空閑時刻,也用一個鏈表來管理空閑時刻。

將上述方案加入客戶工程的步驟示例

小結

  1. 如果使用此方法中的 Flash 擦除,沒有任何 BLE 事件時,直接調(diào)用此方法不會執(zhí)行任何 Flash 的操作。所以當沒有藍牙事件時,可以使用 SDK 默認的 Flash 訪問接口或者是手工調(diào)度函數(shù),類似這樣:flash_list_tick(~0u)
  1. 工程測試源碼參考附件壓縮包:BlueNRG Flash vs BLE event handle source code.7z
  1. 工程路徑為:BlueNRG_Demo/BlueNRG-1_2 DK 3.1.0/Project/Supply/BLE_Chat_Master_Slave_WithFlashAccess/

在線預覽

相關推薦