BLUENRG-LP 學習筆記


在學習 BLUENRG-LP 的過程中,及時地把碰到的問題記錄下來,並作解答,形成本文檔。
該文檔會時時更新,並且當某些章節內容過多時,會獨立出來,形成新的文章。

BLUENRG-LP 的特性

芯片內部有哪些存儲介質,各的功能是什么?
  • FLASH 存放固件和用戶數據。支持讀、寫保護

  • OTP (1KB) 存放用戶數據,支持讀、寫保護

  • ROM (7KB) 不對用戶開放。存放 UART BOOTLOADER 固件和一些芯片的配置信息,如ADC校准值

BLE 5.0 的新特性及其作用:

2Mbps:更高數據吞吐率

LE 2M PHY,比特率為 2Mb/s,不支持 ECC;減少冗余度以提高傳輸吞吐率。

關於 1M PHY:

藍牙 4.2 采用 LE 1M PHY,即比特率為 1Mb/s 的 PHY;必選。

支持 ECC (error correcting coding,可選)

根據編碼方式的不同,支持 3 種比特率:1Mb/s,500Mb/s (LE Coded),125Kb/s (LE Coded),其實就是冗余度的增加導致了比特率的下降,帶來的好處就是能對空中的數據進行糾錯從而可以傳的更遠

Long range:更遠的通訊距離

Channel selection algorithm #2:,通道選擇算法 2,可避免干擾和多路徑衰落效應

參考文章:https://blog.51cto.com/11134889/2317010

GATT caching:

以下是網友總結:

新增功能 協議層 描述
Slot Availability Mask (SAM) 物理層 標記設備的收發時間塊。其他藍牙設備獲取該信息即可避免在該設備忙碌時爭搶信道資源,這有利於在信道資源有限的情況下維持多設備同時工作,這個特性僅適用於經典藍牙。
2 Mbit/s PHY for LE 物理層 2Mbit/s比特率的物理層。以前的物理層都是1Mbit/s比特率,這個特性從物理層提升了傳輸速率。
LE Long Range 物理層 該特性由多個方面共同實現。最高20dBm的發射功率(以前是10dBm),編碼型物理層最低-82dBm接收靈敏度(以前是-70dBm),8位前向糾錯編碼FEC(以前沒有),這些新特性共同實現了更遠的通信距離,官方宣稱能比過去提高4倍傳輸距離,實際測試高達750米。
High Duty Cycle Non-Connectable Advertising 鏈路層 在協議文檔中未找到針對該特性的描述,從網絡上也未獲取有用信息。根據一個已有的類似概念“High Duty Cycle Connectable Advertising”,可以推測這個廣播事件類型就是廣播間隔更短,並且限制廣播總時間,超時后將停止廣播。
LE Advertising Extensions 鏈路層 擴展廣播。以前廣播僅僅使用37/38/39三個廣播信道,現在可以使用擴展廣播包,在0-36數據信道上傳輸,以前廣播數據最大為31字節,現在擴展廣播的數據長度最大可達255字節,所以官方宣稱廣播數據容量擴展8倍。
LE Channel Selection Algorithm #2 物理層 一種新的跳頻算法。以前的算法僅用於連接數據的跳頻,現在數據信道支持傳輸廣播數據,以前的跳頻算會產生性能問題,新的跳頻算法可以用於連接數據通信的跳頻和周期廣播數據的跳頻。
BLE 128kbps 的 long rang 模式,有效數據的最大數據吞吐率是?
BLE 協議棧的版本能否更新?
協議棧存儲在芯片的什么位置?

硬件設計

IO 口的選擇注意事項
RF 設計注意事項
晶振選型、Layout 注意事項,對信號的影響,系統穩定性(高頻干擾)等
電感選型、Layout 注意事項,能源轉換效率?哪一個供電電壓效率最高?
電容選型、Layout 注意事項
低功耗控制:通過通、斷電控制?通過使能腳控制?有哪些影響?

開發環境

快速上手 Windows Keil 固件開發環境
有哪些開發工具?

選型(電流評估、資源評估、成本評估)

開發(編譯工具、調試工具)

生產(燒錄工具、測試工具)

第一次使用 Keil 開發環境的配置?

SDK

timer module 是什么?有什么作用?

timer module 是一個軟件模塊。

該軟件模塊管理了芯片內部鏈路控制器硬件的各個定時器,關於這些定時器的詳細介紹,可在射頻控制器參考手冊里找到。

timer module 根據抽象程度的不同分為了兩個層次 (HAL, LL)。可為設備的喚醒、用戶超時觸發和預配置的射頻事務觸發關聯一個事件;舉個例子,用戶可編程一個事件,實現:

  • 定時喚醒休眠的系統
  • 或產生一個超時事件
  • 或為藍牙事件提供時間依據

timer module 的源碼實現包含以下文件:

bluenrg_lp_hal_vtimer.h

bluenrg_lp_hal_vtimer.c

bluenrg_lp_ll_timer.h

bluenrg_lp_ll_timer.c

ll 層比較靠近硬件,主要實現了對硬件定時器的編程、低頻時鍾的管理和定時時間的轉換(將 hal 的時間值轉化為硬件定時器寄存器的值)

hal 層是對 ll 層的進一步抽象,封裝了硬件的細節。主要實現了虛擬定時器序列,回調管理,校准調度,射頻事件調度等。

虛擬定時器

鏈路控制器計數器。鏈路控制器中有一個計數器,定時器模塊可利用該硬件計數器來虛擬出多個軟件定時器。

時間基准。虛擬定時器的有一個特定的單位,稱為系統時間單位(STU system time unit)。一個 STU = 625/256 us。在對真正的計數器進行編程之前,需要將用 STUs 表示的時間轉換到硬件計時器計數單元中。

校准間隔。是一個參數,可以在初始化階段設置,以決定該設備需要多長時間對內部振盪器的頻率進行測量;當計數器使用的時鍾源是外部晶振時,則不需要該參數。

射頻計數器

BLUENRG-LP 提供了另外一個定時器專門用於觸發射頻事務(transaction)。該事務可以是一次射頻發送、或射頻接收。

休眠管理

定時器模塊可避免系統在以下條件下進入休眠:

  • 虛擬定時器已經觸發但回調函數還在執行
  • 低頻時鍾檢測流程正在進行
  • 下一個射頻事務已經很接近要觸發了
  • The device is in a back-to-back communication

多連

ST 的芯片在多連(一拖多,主從一體)特性的支持上有優化,達到行業領先水平。BLUENRG-1/-2 關於此的實現相關資料如下:

https://www.st.com/resource/en/design_tip/dm00518102-slot-allocation-and-multiple-connection-timing-strategy-for-bluenrg-bluenrgms-bluenrg1-and-bluenrg2-stmicroelectronics.pdf

休眠流程

休眠具體流程是?
休眠時,IO口的電平狀態是?
喚醒源有哪些,分別是什么?

DEEPSTOP 模式下,喚醒源可能是:

  • 通過運行在低頻時鍾的內部喚醒定時器,射頻模塊能產生兩種事件來喚醒系統:
    • Radio wake-up time is reached
    • CPU host wake-up time is reached
  • RTC 事件
  • IWDG 產生的復位事件
  • 多達 28 個的 GPIO 事件(PA0~15, PB0~11)

SHUTDOWN 模式下,只能通過拉高拉低復位引腳來喚醒系統

休眠時,是否所有的 IO 口都喚醒系統?

在大多數口(非全部)上可以:PA0~15, PB0~11

啟動流程

啟動流程是?支持哪些接口啟動?

芯片上電(或復位)后,芯片內部的 ROM 代碼會先運行,

當檢測到 PA10 腳為低電平時,會直接跑進 FLASH 開始運行 用戶固件(運行失敗會停在 while(1) )。

當檢測到 PA10 腳為高電平時,會運行 UART BOOTLOADER 流程。

UART BOOTLOADER 可通過串口接收用戶指令,執行一系列的操作。其特性為:

  • 自動檢測波特率,范圍:500 – 460800
  • 只能在指定的引腳:UART RX = PA8,UART TX = PA9
  • 用戶需要先以某個波特率給 BLUENRG-LP 發送 0x7F,當接收到 0x79 的回復時,說明成功進入 UART BOOTLOADER 流程,可開始發送指令

UART BOOTLOADER 詳細的介紹,參照文檔:AN5471: The BlueNRG-LP UART bootloader protocol

安全啟動、固件加密?

空中升級

OTA具體流程?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM