在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

應用筆記|Blue NRG-1/2系列芯片Flash操作與BLE事件的互斥處理

STM32單片機 ? 來源:未知 ? 2023-04-06 03:10 ? 次閱讀

在許多基于 BlueNRG-1/2 系列芯片的低功耗藍牙的設計項目時,客戶通常會在 Flash的特定區域存儲定制的數據。然而需要特別注意的是,在 BlueNRG-1/2 方案中,用戶對Flash 的讀寫操作必須在射頻空閑的情況下進行,兩者是互斥的關系。本文檔描述Blue NRG-1/2系列芯片Flash操作與BLE事件的互斥處理的流程和步驟。

目錄預覽

1 引言

2 問題描述

3 解決辦法

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

5 小結

1. 引言

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

2. 問題描述

客戶經常反饋類似問題,諸如:當用戶程序嘗試將用戶定制數據寫入 Flash 中特定區域時,發現 BLE 射頻部分停止工作,或芯片直接死機了。

2.1. 原因分析

  • 2.1.1. BlueNRG-1/2 的 Flash 存儲應用數據時可能遇到這個問題。因為在擦除一頁的過程中,中斷會被關掉大概 20 多 ms, 在此期間,radio 中斷是被關掉了的,會導致整個radio 的狀態被延時或者整個 radio 部分的狀態被破壞。

  • 2.1.2. ST 的 SDK 雖然提供了訪問 Flash 的示例代碼,但是當 Flash 操作比較多時,與藍牙事件的互斥就比較難處理了;特別是對于一些多連接應用或者同時用了主從、多種藍牙事件的場景,互斥就顯得更麻煩了。

3.解決辦法

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

第一步:初始化時需要設置 radio active 事件拋到應用。aci_hal_set_radio_activity_mask(0x0001|0x0002|0x0004|0x0008|0x0010|0x0020)

6249bf3c-d3e5-11ed-bfe3-dac502259ad0.png

第二步:設置之后,重寫函數aci_hal_end_of_radio_activity_event,當有事件觸發時, 就會進入這個函數。

6286e920-d3e5-11ed-bfe3-dac502259ad0.png

第三步:構造一個 Flash 操作調度函數,每次進入這個函數,生成一個空閑時刻的節點插 入到鏈表中。主循環中有個 Flash 操作的調度函數,不停的調度是否有數據需要寫入。在 Flash 操作的調度函數中,主要做兩件事情,一個是把空閑時間計算出來給到底層的 Flash 操作鏈表調 度中。另一個是移除過期的節點。

62a69932-d3e5-11ed-bfe3-dac502259ad0.png

第四步:構造 flash_list_tick 函數,flash_list_tick 函數主要是從 Flash 任務列表中去取節 點,當空余時間滿足時,則執行相應的 Flash 操作,然后將節點從任務列表中移除,回收到空閑列表中。

62b7dbac-d3e5-11ed-bfe3-dac502259ad0.png

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

1. 初始化相關鏈表和初始化 radio 事件回調屏蔽。

62d9a552-d3e5-11ed-bfe3-dac502259ad0.png

2. 在 aci_hal_end_of_radio_activity_event 中添加空閑鏈表的更新函數。

63122012-d3e5-11ed-bfe3-dac502259ad0.png

3. 在主循環中調度。

6337c2b8-d3e5-11ed-bfe3-dac502259ad0.png

4. 應用操作 Flash 調用接口

63518dce-d3e5-11ed-bfe3-dac502259ad0.png

5. 小結

如果使用此方法中的 Flash 擦除,沒有任何 BLE 事件時,直接調用此方法不會執行任何 Flash 的操作。所以當沒有藍牙事件時,可以使用 SDK 默認的 Flash 訪問接口或者是手工調度函數,類似這樣:flash_list_tick(~0u)

工程測試源碼參考附件壓縮包:

BlueNRG Flash vs BLE event handle source code.7z

工程路徑為:

BlueNRG_Demo/BlueNRG-1_2DK 3.1.0/Project/Supply/BLE_Chat_Master_Slave_WithFlashAccess/

本文檔描述Blue NRG-1/2系列芯片Flash操作與BLE事件的互斥處理的流程和步驟。由于文章篇幅有限僅展示部分信息,完整內容請點擊“閱讀原文”下載原文檔。

636f2c58-d3e5-11ed-bfe3-dac502259ad0.png

長按掃碼關注公眾號

更多資訊,盡在STM32

點擊“閱讀原文”,可下載原文檔


原文標題:應用筆記|Blue NRG-1/2系列芯片Flash操作與BLE事件的互斥處理

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638624
  • STM32
    +關注

    關注

    2272

    文章

    10924

    瀏覽量

    357604

原文標題:應用筆記|Blue NRG-1/2系列芯片Flash操作與BLE事件的互斥處理

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CDK應用筆記

    電子發燒友網站提供《CDK應用筆記.pdf》資料免費下載
    發表于 01-16 16:17 ?0次下載
    CDK應<b class='flag-5'>用筆記</b>

    S32K3系列汽車級MCU應用筆記

    電子發燒友網站提供《S32K3系列汽車級MCU應用筆記.docx》資料免費下載
    發表于 12-30 15:43 ?0次下載

    S32K3xxICU應用筆記

    S32K3xxICU應用筆記
    發表于 12-30 15:38 ?0次下載

    TLC3702 TLC3704系列用筆記

    電子發燒友網站提供《TLC3702 TLC3704系列用筆記.pdf》資料免費下載
    發表于 09-20 09:14 ?0次下載
    TLC3702 TLC3704<b class='flag-5'>系列</b>應<b class='flag-5'>用筆記</b>

    互斥鎖和自旋鎖的實現原理

    保護共享資源不被多個線程同時訪問。它的實現原理主要包括以下幾個方面: 1. 鎖的初始化 互斥鎖在創建時需要進行初始化,通常包括設置鎖的狀態為“未鎖定”。在某些實現中,還需要初始化鎖的等待隊列,用于存儲等待鎖的線程。 2. 鎖的
    的頭像 發表于 07-10 10:07 ?616次閱讀

    芯海應用筆記:通用 MCU 基于 IAR 芯片包 IAR9 開發指南

    MCU 芯片。芯海科技基于 IAR 環境開發芯片包,給用戶更多的編譯選擇,提高用戶開發靈活性。本應用筆記芯片包結構、DEMO 例程下載使用、工程建立等角度出發,詳細介紹 IAR
    發表于 05-16 11:52

    芯海應用筆記:通用 MCU IAR 開發指南

    集成的 IDE 工具,用戶可根據對應芯片型號的規格進行修改,僅供參考。*附件:應用筆記:芯海通用MCUMDK開發指南.pdf
    發表于 05-16 11:50

    芯海應用筆記:通用 MCU 基于 GCC 編譯開發應用

    客戶需要 GCC 開發,需要增加相關的開發文件。本文檔中的代碼部分為 GCC 開發所需文件的模版,用戶可根據對應芯片型號的規格進行修改,僅供參考。*附件:應用筆記:芯海通用MCUGCC編譯支持開發指南.pdf
    發表于 05-16 11:47

    芯海應用筆記:通用 MCU Flash 讀寫保護和 SWD 復用指導手冊.

    本應用筆記旨在幫助用戶了解芯海科技通用 MCU Flash 讀寫保護的相關注意事項,同時針對 SWD引腳鎖復用提供解決方案。本文檔所涉及到的解決方案可適用于芯海通用 MCU 產品的常見相關需求。*附件:應用筆記:芯海通用MCUf
    發表于 05-16 11:44

    芯海通用 MCU 應用筆記 :CS32F103 系列 MCU IAP 升級指南

    本應用筆記旨在幫助指導用戶針對芯海 CORTEX-M3 MCU CS32F103 系列單片機 IAP 應用的快速開發。本應用筆記實現了 CAN 和 USART 兩種接口方式來開發 IAP 應用,協議
    發表于 05-16 11:40

    芯海科技通用 MCU 應用筆記: CS32F103 FOC 電機評估板使用指南

    本文檔描述了基于芯海 CS32F103 系列芯片的矢量控制電機開發板 V1.00 的設計理念、結構和使用說明,以幫助用戶快速使用此開發板,評估 CS32F103 芯片在電機控制應用上的性能表現。*附件:應
    發表于 05-16 11:35

    芯海通用 MCU 應用筆記: CS32F03x 系列硬件設計指南

    本技術說明文檔提供關于 CS32F03x 系列 MCU 的電源,啟動引導配置,應用注意事項的說明,旨在幫助用戶更好地使用 CS32F03x 系列 MCU,進行芯海科技 CS32F03x 系列 MCU 應用產品的設計、開發和調試。
    發表于 05-16 11:32

    芯海通用 MCU 應用筆記: C32F03x 系列快速應用指南

    本應用筆記旨在指導用戶搭建 CS32F03x/F03x-RA 系列 MCU 開發環境并進行開發和調試,包括:軟件開發與移植、軟硬件注意事項、開發板說明、如何 Keil/IAR/GCC 下安裝 SDK
    發表于 05-16 11:29

    CSU18MX86應用筆記

    本應用筆記旨在為用戶提供關于CSU18MX86的詳細信息和使用指南,幫助用戶快速開發基于CSU18MX86的應用。*附件:CSU18MX86應用筆記_V1.0.pdf
    發表于 05-16 10:21

    BLUE-NRG-MS下載固件庫顯示失敗后連不上了怎么解決?

    最近使用ST的BLUE-nrg,下載固件庫下載失敗了,然后再使用GUI就一直鏈接不上了,使用和手機鏈接的程序也一直卡在更新 網上搜需要直接換芯片,有沒有遇到過的怎么解決
    發表于 05-10 07:49
    主站蜘蛛池模板: 日日天天干 | 免费观看交性大片 | 午夜色综合 | 成人网男女啪啪免费网站 | 黑人黄色片 | 亚洲精品国产成人 | 国产美女在线精品免费观看 | 亚洲色图图片专区 | 久久天天躁狠狠躁夜夜 | 在线色网站 | 在线免费观看毛片网站 | 久久国产视频一区 | 午夜操一操 | 色老头影视 | 欧美一区二区三区不卡片 | 人人澡人| 酒色激情网 | 亚洲欧美成人综合久久久 | 色小视频| 欧美一级欧美三级在线观看 | 天天爱天天操天天射 | 可以免费看黄的网站 | 巨臀中文字幕一区二区翘臀 | 色香视频首页 | 国产高清免费视频 | 亚洲黄色一区二区 | 久久99热不卡精品免费观看 | 日本高清一区二区三区不卡免费 | 免费看欧美理论片在线 | 免费日韩网站 | 午夜剧场操一操 | 男男h全肉耽污 | 欧美一区二区三区免费看 | 免费精品99久久国产综合精品 | 国产免费爽爽视频免费可以看 | 都市激情综合 | 特黄色毛片 | 性色aⅴ闺蜜一区二区三区 性色成人网 | www.淫| 欧美黄色免费网站 | 永久免费观看午夜视频在线 |