0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

BlueNRG系列協(xié)處理器實(shí)戰(zhàn)經(jīng)驗(yàn)簡(jiǎn)介

STM32單片機(jī) ? 來(lái)源:STM32單片機(jī) ? 2024-01-05 18:16 ? 次閱讀

01

協(xié)處理器模式概述

BlueNRG 系列芯片從最早的一代 BlueNRG-MS 開(kāi)始就支持協(xié)處理器模式。在協(xié)處理器模式下,BLE 功能在 BlueNRG 芯片端完成,應(yīng)用部分在 MCU 端完成。與 AT 指令的模式類似,協(xié)處理器方式也具有高內(nèi)聚、低耦合的特點(diǎn),但相比于 AT 指令模式,協(xié)處理器方式更為強(qiáng)大靈活,而且還兼顧了 MCU 間通信的睡眠和相互喚醒等方面的需求。

BlueNRG 系列的所有芯片都支持協(xié)處理器模式。在使用協(xié)處理器時(shí),BlueNRG 需要燒錄一個(gè) DTM 固件。DTM 原本是指 Direct Test Mode,而 ST 在這個(gè)固件的功能上進(jìn)行了擴(kuò)充。除了用于 RF 測(cè)試(包括 RF 發(fā)射功率、接收靈敏度、頻偏、諧波等方面的測(cè)試),BlueNRG 的 DTM 固件還可以用于協(xié)處理器模式。

BlueNRG GUI 工具是一個(gè)針對(duì) BlueNRG 芯片協(xié)處理器應(yīng)用的工具。在使用協(xié)處理器時(shí),協(xié)處理器可以搭配任何帶有串口或 SPI 接口的 MCU、MPU 或 PC 端使用。

如下圖所示,官方協(xié)處理器資料可以通過(guò) SDK 中文檔 index.html 進(jìn)行索引。

750d7106-abb0-11ee-8b88-92fbcf53809c.jpg

圖1.BlueNRG 端協(xié)處理器官方資料

02

協(xié)處理器軟件分層

BlueNRG GUI 工具的使用屬于一個(gè) BlueNRG 芯片協(xié)處理器的應(yīng)用。

協(xié)處理器可以搭配任意帶UART或者 SPI 的 MCU、MPU 或者 PC 端使用。

軟件框架如下圖所示。協(xié)處理器模式有兩種分層。

? [處理器] APP <------------> [BlueNRG] (Host+Controller)

? [處理器](APP+Host) <------------> [BlueNRG] (Controller)

75220cd8-abb0-11ee-8b88-92fbcf53809c.jpg

圖2.協(xié)處理器軟件框架

大部分應(yīng)用會(huì)采用第一種方式,對(duì)應(yīng)用處理器或者 MCU 只需要關(guān)注應(yīng)用部分,這種方式,處理器和 MCU 之間是通過(guò) ACI 指令進(jìn)行交互,ACI 是 HCI 指令的擴(kuò)展。

第二種方式,BlueNRG 系列運(yùn)行 Controller 部分,MCU 或者處理器 Host 層協(xié)議和應(yīng)用,使用的場(chǎng)景比較少,雙方之間通過(guò) HCI 經(jīng)行交互。BlueNRG 系列如果需要使用這種方式的協(xié)議棧,則編譯 DTM 固件的時(shí)候,則需要在 Preprocessor Symbols 中使能“LL_ONLY”宏。

03

ACI 指令格式

Bluetooth LE 協(xié)議棧 ACI 指令利用并擴(kuò)展了標(biāo)準(zhǔn) HCI 數(shù)據(jù)格式。

7536be12-abb0-11ee-8b88-92fbcf53809c.jpg

圖3.HCI 指令格式

根據(jù) Bluetooth 核心規(guī)范,標(biāo)準(zhǔn) HCI 數(shù)據(jù)包可以是以下幾種類型:

? HCI 命令數(shù)據(jù)包(數(shù)據(jù)包類型:0x01)

? HCI ACL 數(shù)據(jù)包(數(shù)據(jù)包類型:0x02)

? HCI 同步數(shù)據(jù)包(數(shù)據(jù)包類型:0x03)

? HCI 事件數(shù)據(jù)包(數(shù)據(jù)包類型:0x04)

? HCI 擴(kuò)展命令(數(shù)據(jù)包類型:0x81)

? HCI 擴(kuò)展事件(數(shù)據(jù)包類型:0x82)

詳細(xì)的數(shù)據(jù)包格式可以通過(guò)如下方式詳細(xì)查看:

打開(kāi) BlueNRG-LP 或者 BlueNRG-LPS SDK 中 index.html ------->Network Coprocessor (UART, SPI mode)章節(jié)中的 Bluetooth LE stack v3.x ACI Data format -----------> Bluetooth LE stack v3.x ACI commands data format.

了解 ACI 指令格式有助于在實(shí)際調(diào)試雙通信部分時(shí)遇到問(wèn)題時(shí)分析定位問(wèn)題。

詳細(xì)的其他協(xié)處理器資料可以通過(guò) SDK 中 index.html 中的如下章節(jié)進(jìn)行查找。

04

DTM 相關(guān)的工程介紹

BlueNRG SDK 中提供了很多個(gè)不同的 DTM 的工程,用戶難以分辨。

為了簡(jiǎn)化,絕大部分應(yīng)用,建議選擇功能最齊全的 DTM 工程下,“UART_WITH_UPDATER”工程配置或者“SPI_WITH_UPDATER”工程配置。

754004cc-abb0-11ee-8b88-92fbcf53809c.jpg

圖4.BlueNRG DTM 相關(guān)的工程

其中 SDK 中包含的工程如下 :

? DTM: // DTM 是 Full Stack

? DTM_basic: // DTM 配置為 Basic stack

? DTM_Updater: // 帶 boot 程序 DTM 的 boot 源碼工程

其中 DTM 工程和 DTM_basic 工程是實(shí)現(xiàn) DTM 功能的工程,他們之間的差別主要是一個(gè)默認(rèn)是 Full stack,另一個(gè)默認(rèn)為 Basic stack。而 DTM_Updater 只是一個(gè) DTM 的 boot 源碼工程。

打開(kāi) DTM 或者 DTM_basic 工程可以看到如下不同工程配置:

? UART: DTM 使用 UART 接口(不包含升級(jí)代碼)

? UART_WITH_UPDATER:DTM 使用 UART 接口,DTM 在 Flash 的第一頁(yè)中包含 DTM_Updater .并且包含 DTM 功能。

? UART_FOR_UPDATER: DTM 使用 UART 接口,DTM 固件在 Flash 第一頁(yè)中留空不填充 (偏移 0x2000). 用戶制作升級(jí)固件,包含 DTM 功能。

? SPI: DTM 使用 SPI 接口(不包含升級(jí)代碼)

? SPI_WITH_UPDATER: DTM 使用 SPI 接口,DTM 在 Flash 的第一頁(yè)中包含DTM_Updater .并且包含 DTM 功能。

? SPI_FOR_UPDATER: DTM 固件在 Flash 第一頁(yè)中留空不填充 (偏移 0x2000). 用戶制作升級(jí)固件。包含 DTM 功能。

其中分兩大類通信方式,一類是 UART,一類是 SPI。其中 UART 通信方式的第一個(gè)“UART”工程配置是單純的 DTM,使用 UART 通信接口和其他 MCU 或者 MPU 通信作為協(xié)處理器功能的代碼。而“UART_WITH_UPDATER”工程配置包含了兩個(gè)程序,其中一個(gè)是將 DTM_Updater 工程編譯的二進(jìn)制代碼放置編譯在數(shù)組中,作為啟動(dòng)代碼;另外一個(gè)程序就是 DTM 程序偏移一定位置的代碼?!癠ART_FOR_UPDATER”工程配置只有一個(gè)程序,即 DTM 程序配置偏移了一定位置的代碼,它和“DTM”工程配置的差別僅僅是代碼偏移不同,實(shí)際內(nèi)容一樣。

05

基于 STM32CubeMX 軟件包的協(xié)處理器模式

基于 STM32CubeMX 軟件包支持協(xié)處理器的有以下幾個(gè):

754d1b8a-abb0-11ee-8b88-92fbcf53809c.jpg

圖5.STM32CubeMX 中的軟件包

或者參考官方的幫助文檔,如下圖右下邊的文檔。

755757bc-abb0-11ee-8b88-92fbcf53809c.jpg

圖6.X-CUBE-BLE2 軟件配置

06

基于源碼移植的協(xié)處理器模式

如果使用的另外一端的 MCU 并非是 STM32,或者一些 ST 官方還沒(méi)有適配的型號(hào)(如 BlueNRG-LPS)則需要移植協(xié)處理器模式源碼到 MCU 上。需要移植如下代碼:

756ef476-abb0-11ee-8b88-92fbcf53809c.jpg

圖7.非 STM32 使用 BlueNRG 協(xié)處理器需要移植的代碼

移植后上去后,需要適配。適配主要是實(shí)現(xiàn) SPI 或者串口初始化部分的代碼以及實(shí)現(xiàn)這個(gè)函數(shù):

7583137a-abb0-11ee-8b88-92fbcf53809c.jpg

可以參考 BlueNRG SDK 工程下協(xié)處理器相關(guān)的例子:

BlueNRG-LP/LPS: BlueNRG-LP_LPS_LPF DK x.x.xProjectsExternal_Micro

BlueNRG-1/2: BlueNRG-1_2 DK x.x.xProjectSTM32L

07

應(yīng)用處理器(MCU)端軟件處理主框架

主要處理流程分為兩大類:

? MCU 或者處理器主動(dòng)發(fā)送數(shù)據(jù)

? BlueNRG 主動(dòng)發(fā)送數(shù)據(jù)

MCU 或者處理器主動(dòng)發(fā)送數(shù)據(jù)的流程是這樣的:當(dāng)應(yīng)用端主動(dòng)調(diào)用 aci_xxxx 等函數(shù)時(shí),這些函數(shù)的處理是同步超時(shí)的。最后會(huì)調(diào)用"hci_send_req()"函數(shù),在這個(gè)函數(shù)中,會(huì)先發(fā)送數(shù)據(jù)到 BlueNRG 端,然后在 while(1)循環(huán)中帶超時(shí)的等待,以查看hciReadPktRxQueue 隊(duì)列中是否有數(shù)據(jù)收到。當(dāng) BlueNRG 返回?cái)?shù)據(jù)給應(yīng)用處理器端(MCU)時(shí),會(huì)通過(guò) IO 中斷,最后觸發(fā)調(diào)用“hci_tl_lowlevel_isr()”函數(shù)。在這個(gè)函數(shù)中執(zhí)行讀取數(shù)據(jù)的操作。如果成功讀取數(shù)據(jù),將數(shù)據(jù)壓入 hciReadPktRxQueue 隊(duì)列中。整個(gè)執(zhí)行 aci_xxxx 等函數(shù)的過(guò)程是同步執(zhí)行的,直到超時(shí)還沒(méi)有讀取到數(shù)據(jù)放入隊(duì)列中。

BlueNRG 主動(dòng)發(fā)送數(shù)據(jù)的流程如下:當(dāng) BlueNRG 發(fā)生一些事件,例如藍(lán)牙連接上了設(shè)備,這時(shí) BlueNRG 會(huì)拉相應(yīng)的 IO 口,通過(guò)應(yīng)用處理器的外部中斷通知應(yīng)用處理器端(MCU)。這會(huì)觸發(fā)調(diào)用“hci_tl_lowlevel_isr()”函數(shù),在這個(gè)函數(shù)中執(zhí)行讀取數(shù)據(jù)的操作。如果成功讀取數(shù)據(jù),將數(shù)據(jù)壓入 hciReadPktRxQueue 隊(duì)列中。然后在主循環(huán)處理函數(shù)“hci_user_evt_proc()”中,會(huì)解析接收隊(duì)列中的函數(shù)。最后,如果成功解析,則會(huì)觸發(fā)對(duì)應(yīng)的 xxx_event 事件。這里的 xxx_event 事件如果應(yīng)用沒(méi)有定義,則默認(rèn)執(zhí)行一個(gè)弱定義的空函數(shù)。如果應(yīng)用程序定義了,則執(zhí)行用戶定義的函數(shù)。

08

交互時(shí)序圖

下文分別描述通過(guò)串口和 SPI 交互時(shí)的時(shí)序圖。了解雙方通信的時(shí)序,有助于理解雙發(fā)睡眠和喚醒,以及在定位問(wèn)題時(shí)能夠更快速準(zhǔn)確定位分析問(wèn)題。

8.1. UART接口交互時(shí)序圖

使用UART接口進(jìn)行交互時(shí),時(shí)序圖如下所示:

75985f8c-abb0-11ee-8b88-92fbcf53809c.jpg

圖8.串口方式交互時(shí)序圖

上圖時(shí) MCU 主動(dòng)發(fā)送 ACI 指令流程,分為以下幾個(gè)步驟:

? MCU 發(fā)送數(shù)據(jù)

o 1:MCU 喚醒 BlueNRG 芯片

o 2:BlueNRG 芯片被喚醒完成

o 3:MCU 通過(guò)串口發(fā)送數(shù)據(jù)

如果流控允許

o 4:MCU 發(fā)送完畢數(shù)據(jù)釋放 MCU_RTS

o 5:BlueNRG 芯片允許進(jìn)入睡眠

?BlueNRG 發(fā)送數(shù)據(jù)

o A: BlueNRG 喚醒 MCU

o B: MCU 被喚醒

o C: BlueNRG 通過(guò)串口發(fā)送數(shù)據(jù)

如果串口流控允許

o D: BlueNRG 發(fā)送完數(shù)據(jù)釋放 MCU_CTS

o E: MCU 允許進(jìn)入睡眠

8.2. SPI 接口操作時(shí)序圖

SPI 時(shí)序圖官方文檔中描述比較詳細(xì),建議查看官方的文檔(在 SDK 的幫助文檔index.html 中)。

75b0f290-abb0-11ee-8b88-92fbcf53809c.jpg

圖9.協(xié)處理器 SPI 通信協(xié)議

09

小結(jié)

本文介紹了 BlueNRG 系列芯片的協(xié)處理器模式、軟件分層、ACI 指令格式以及 DTM相關(guān)的工程。BlueNRG 芯片的協(xié)處理器模式與 AT 指令模式類似,但更為強(qiáng)大靈活,同時(shí)兼顧了 MCU 間通信的睡眠和相互喚醒等方面的需求。BlueNRG 系列的所有芯片都支持協(xié)處理器模式,且可搭配任何帶有串口或 SPI 接口的 MCU、MPU 或 PC 端使用。在軟件框架方面,協(xié)處理器模式有兩種分層,大部分應(yīng)用采用第一種方式,對(duì)應(yīng)用處理器或 MCU只需要關(guān)注應(yīng)用部分,處理器和 MCU 之間通過(guò) ACI 指令進(jìn)行交互。了解 ACI 指令格式有助于在實(shí)際調(diào)試雙通信部分時(shí)遇到問(wèn)題時(shí)分析定位問(wèn)題。在 DTM 相關(guān)的工程介紹方面,建議選擇功能最齊全的 DTM 工程下,“UART_WITH_UPDATER”工程配置或者“SPI_WITH_UPDATER”工程配置。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16888

    瀏覽量

    349930
  • 協(xié)處理器
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    18143
  • DTM
    DTM
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    7389
  • UART接口
    +關(guān)注

    關(guān)注

    0

    文章

    124

    瀏覽量

    15256
  • BlueNRG
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    9634

原文標(biāo)題:實(shí)戰(zhàn)經(jīng)驗(yàn) | BlueNRG 系列協(xié)處理器簡(jiǎn)介

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    pcb制造業(yè)節(jié)約用電實(shí)戰(zhàn)經(jīng)驗(yàn)

    pcb制造業(yè)節(jié)約用電實(shí)戰(zhàn)經(jīng)驗(yàn)
    發(fā)表于 08-20 20:36

    FPGA寶貴實(shí)戰(zhàn)經(jīng)驗(yàn)及Verilog編程規(guī)范

    `FPGA寶貴實(shí)戰(zhàn)經(jīng)驗(yàn)及Verilog編程規(guī)范`
    發(fā)表于 06-10 12:03

    【資料分享】ST MCU實(shí)戰(zhàn)經(jīng)驗(yàn)10篇,應(yīng)用問(wèn)題,官方解答

    ST MCU實(shí)戰(zhàn)經(jīng)驗(yàn)10篇,應(yīng)用問(wèn)題,官方解答
    發(fā)表于 03-21 15:12

    LLEGRO高速高密PCB設(shè)計(jì)實(shí)戰(zhàn)經(jīng)驗(yàn)

    本帖最后由 carey123 于 2014-10-24 15:49 編輯 ALLEGRO高速高密PC設(shè)計(jì)實(shí)戰(zhàn)經(jīng)驗(yàn)很好的資料采集
    發(fā)表于 10-24 12:02

    振動(dòng)傳感項(xiàng)目外包,有實(shí)戰(zhàn)經(jīng)驗(yàn)的電子工程師聯(lián)系我。

    振動(dòng)傳感項(xiàng)目外包,有實(shí)戰(zhàn)經(jīng)驗(yàn)的電子工程師聯(lián)系我。
    發(fā)表于 12-01 12:28

    BlueNRG-2 SoC和BlueNRG-2N協(xié)處理器之間的區(qū)別?

    誰(shuí)能向我解釋 BlueNRG-2 SoC 和 BlueNRG-2N 協(xié)處理器之間的區(qū)別?
    發(fā)表于 12-09 07:34

    在哪里可以找到有關(guān)BlueNRG-2協(xié)處理器固件版本之間差異的文檔?

    BlueNRG-2 的 BlueNRG-M2SP)嗎?BlueNRG-2 是否預(yù)裝了圖像以用作網(wǎng)絡(luò)協(xié)處理器?主要應(yīng)用程序 HCI API
    發(fā)表于 01-06 08:45

    開(kāi)關(guān)電源維修方法和實(shí)戰(zhàn)經(jīng)驗(yàn)

    開(kāi)關(guān)電源維修方法和實(shí)戰(zhàn)經(jīng)驗(yàn)開(kāi)關(guān)電源維修方法和實(shí)戰(zhàn)經(jīng)驗(yàn)
    發(fā)表于 01-15 16:38 ?49次下載

    手機(jī)上的協(xié)處理器有什么作用_蘋果協(xié)處理器是干什么的

    本文首先介紹了協(xié)處理器概念,其次介紹了協(xié)處理器內(nèi)部結(jié)構(gòu)與手機(jī)協(xié)處理器的作用,最后介紹了蘋果的M8
    的頭像 發(fā)表于 04-24 09:27 ?2.1w次閱讀

    arm的協(xié)處理器有幾個(gè)?ARM協(xié)處理器詳解

    本文首先介紹了ARM處理器特點(diǎn)與主要模式,其次介紹了arm的協(xié)處理器有幾個(gè),最后介紹了CP14和CP15系統(tǒng)控制協(xié)處理器。
    發(fā)表于 04-24 15:34 ?8919次閱讀

    ARM全國(guó)產(chǎn)云平臺(tái)部署容器實(shí)戰(zhàn)經(jīng)驗(yàn)分享

    ARM全國(guó)產(chǎn)云平臺(tái)部署容器實(shí)戰(zhàn)經(jīng)驗(yàn)分享
    發(fā)表于 07-18 16:11 ?71次下載
    ARM全國(guó)產(chǎn)云平臺(tái)部署容器<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>分享

    意法半導(dǎo)體推出新一代BlueNRG系列的專用網(wǎng)絡(luò)協(xié)處理器產(chǎn)品

    作為BlueNRG系列的專用網(wǎng)絡(luò)協(xié)處理器產(chǎn)品,BlueNRG-2N現(xiàn)已量產(chǎn),并已納入意法半導(dǎo)體的10年產(chǎn)品供貨計(jì)劃。
    的頭像 發(fā)表于 09-24 14:59 ?2463次閱讀

    嵌入式項(xiàng)目實(shí)戰(zhàn)經(jīng)驗(yàn)

    嵌入式項(xiàng)目實(shí)戰(zhàn)經(jīng)驗(yàn)分享,C/C++、Linux、STM32、51單片機(jī)、FPGA、IoT、OpenCV、數(shù)字圖像處理、通信、算法!
    發(fā)表于 11-03 12:36 ?23次下載
    嵌入式項(xiàng)目<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>

    使用TMS320C6416協(xié)處理器:Viterbi協(xié)處理器(VCP)

    電子發(fā)燒友網(wǎng)站提供《使用TMS320C6416協(xié)處理器:Viterbi協(xié)處理器(VCP).pdf》資料免費(fèi)下載
    發(fā)表于 10-21 09:36 ?0次下載
    使用TMS320C6416<b class='flag-5'>協(xié)</b><b class='flag-5'>處理器</b>:Viterbi<b class='flag-5'>協(xié)</b><b class='flag-5'>處理器</b>(VCP)

    使用TMS320C6416協(xié)處理器:Turbo協(xié)處理器(TCP)

    電子發(fā)燒友網(wǎng)站提供《使用TMS320C6416協(xié)處理器:Turbo協(xié)處理器(TCP).pdf》資料免費(fèi)下載
    發(fā)表于 10-23 10:16 ?0次下載
    使用TMS320C6416<b class='flag-5'>協(xié)</b><b class='flag-5'>處理器</b>:Turbo<b class='flag-5'>協(xié)</b><b class='flag-5'>處理器</b>(TCP)