[模組] STM32 藍芽模組 -- BlueNRG-2 模組

模組介紹

BlueNRG系統有兩款已認證的藍芽模組,都支援藍芽5.2,一款型號為BLUENRG-M2SA(對應的開發板名稱:STEVAL-IDB008V1M),一款為BLUENRG-M2SP。模組的核心是STM32 Cortex-M0,它本身就是一顆MCU,再外接常見的通訊界面,如:UARTSPII2C…等。官方網站提供該模組的SDK程式碼,到官方網站下載BlueNRG-1_2 DK-3.2.3.0-Setup.exe,執行安裝後,如下圖所示。官網提供的模組規格 https://www.st.com/zh/wireless-connectivity/bluenrg-2.html

Keil IDE開啟任一個NRG2的專案檔,要注意使用這兩款的模組前有三個變數要定義清楚再來編譯。BLUENRG-M2SA的定義如下:
HS_SPEED_XTAL=HS_SPEED_XTAL_32MHZ
LS_SOURCE=LS_SOURCE_EXTERNAL_32KHZ
SMPS_INDUCTOR=SMPS_INDUCTOR_10uH

BLUENRG-M2SP屬於更新版的模組,低速的時脈由內部自行產生,外部電路也不需要額外設計電感元件,定義如下:
                        HS_SPEED_XTAL=HS_SPEED_XTAL_32MHZ
                        LS_SOURCE=LS_SOURCE_INTERNAL_RO
                        SMPS_INDUCTOR=SMPS_INDUCTOR_NONE

只要在編譯的環境裡面設定就好了,如下圖。X-NUCLEO-BNRG2A1是一塊M2SP模組(U8)的開發板,上面除了模組之外,還有一顆Flash-SPI (U9),模組的DIO14腳位接了一顆LED燈可供我們控制。由於這塊開發板上面沒有穩壓IC的電路,無法自己產生穩定的3.3V,所以需要透過Arduino UNO擴充槽從外部來獲得電壓。

QBLUENRG-M2SP模組如果進入休眠狀態,此時JTAG將無法直接連上,如何解決?
A:模組必須進入DFU模式,BLUENRG-M2SP開發板上的J15要短路,reset後就進入DFU模式。再來使用燒錄工具,如下圖,重啟後就能繼續開發了。

BLUENRG-M2SP模組的腳位功能可以設定,除了當GPIO功能之外,還可以配置為UARTI2CSPIPWM,如下圖的對應所示。模組開發板預設的UARTDIO4 / DIO5,對應到擴充槽上的PA9/PA10。如果想要改用Arduino擴充槽上的PA2/PA3當做UART介面,必須將開發板上的R86/R87電阻焊上去,並移除R76電阻。而這組UART所對應的是DIO8/DIO11腳位。


雖然上面的SPI對應腳位很多個,我們預設使用的DIO0 / DIO2 / DIO3 / DIO11 (CLK / SPI_OUT / SPI_IN / SPI_CS)對應到PB3 / PA6 / PA7 / PA1,記得要將開發板上的J14切到2-3,電路圖如下所示。開發板上的R76電阻已經焊上,所以SPI_CS腳位會接到Arduino擴充槽上的PA1
之後,將SPI介面當作兩塊開發板的資料通訊介面,在STM文件稱這種連接方式為DTM網路。Nucleo-L開發板做為主控MCU (SPI master),而BLUENRG-M2SP模組開發板(SPI slave)做為藍芽命令的執行端。這過程是主控MCU發出命令後,透過SPI介面傳到藍芽模組板子上,再執行其命令動作。
除了SPI介面的四根接腳之外,還需要一根SPI_IRQ接腳,功能是M2SP模組發出腳位變化通知主控MCU (master)準備透過SPI讀取資料。SPI_IRQ預設是DIO7,接到Arduino擴充槽上的PA0

留言

此網誌的熱門文章

[筆記] Raspberry Pi 樹莓派的軟體開發

[應用] 在 ESP32 Audio 開發板的 VoIP 範例

[筆記] Android APP 藍芽範例說明 -- BluetoothChat

[筆記] ESP32 在 VS Code 開發環境的編譯與除錯

[筆記] Visual Studio 遠端偵錯的設定步驟

[筆記] Android APP BLE範例程式 -- BluetoothLeGatt

[應用] 藍芽 BLE client/server 架構:BLE remote controller