問:使用 STM32WL 系列 Sub-GHz 無線驅(qū)動(dòng)程序的應(yīng)用示例
STM32WL系列器件包括內(nèi)置的低于1GHz無線外設(shè) ( Sub-GHz 指的是低于 1GHz 的無線電頻段 ),能夠支持LoRa(僅限STM32WLE5/55器件)、(G)FSK、(G)MSK和BPSK調(diào)制方案。與此無線外設(shè)的通信是通過使用設(shè)備參考手冊(cè) 第5.8節(jié)中概述的命令的內(nèi)部SPI接口完成的。雖然該RF接口的抽象層是在低于1GHz Phy中間件中定義的(在STM32CubeWL MCU Package 中可得),但將該中間件添加到使用STM32CubeMX的項(xiàng)目中需要在其他幾個(gè)外設(shè)和庫(kù)之間進(jìn)行高級(jí)配置。這會(huì)導(dǎo)致一個(gè)更大、更復(fù)雜的項(xiàng)目,消耗更多的設(shè)備內(nèi)存,并導(dǎo)致抽象層低效率。對(duì)于要求功耗低的簡(jiǎn)單應(yīng)用,將RF接口驅(qū)動(dòng)程序與低于1GHzPhy中間件隔離并直接利用它可能是有益的。
低于1GHz Phy中間件由高層 (radio.c) 和低層 (radio_driver.c) 組成。高級(jí)驅(qū)動(dòng)程序提供了許多有用的函數(shù),這些函數(shù)抽象了低層無線功能,例如RadioInit() ,RadioSetTxConfig() 和RadioSend() 。然而,盡管這些函數(shù)很方便,但它們的代價(jià)是效率低下,比如冗余的函數(shù)調(diào)用和過度依賴諸如音序器和定時(shí)器服務(wù)器之類的實(shí)用程序。低層驅(qū)動(dòng)程序簡(jiǎn)單地實(shí)現(xiàn)參考手冊(cè) 中概述的 SUBGHZSPI 命令,并提供低于1GHz無線寄存器的定義。以犧牲一些質(zhì)量屬性(如可維護(hù)性和可移植性)為代價(jià),使用該驅(qū)動(dòng)程序進(jìn)行編碼直接允許程序員對(duì)其應(yīng)用程序進(jìn)行更大的控制。
詳細(xì)演示如何將這個(gè)低層與低于 1GHz Phy 中間件隔離開來,并直接添加到 STM32CubeIDE 項(xiàng)目的操作過程。
要求: 要準(zhǔn)確地跟隨演示教程,需要以下項(xiàng)目。
STM32CubeIDE (版本1.8.0)
STM32CubeWL MCU Package (版本1.1.0)
NUCLEO-WL55JC1
NUCLEO-WL55JC1 - STM32WL Nucleo-64 開發(fā)板
應(yīng)用程序示例
作為以獨(dú)立方式使用低于1GHz Phy驅(qū)動(dòng)程序的示例,我們創(chuàng)建了兩個(gè)示例程序(可在GitHub Repository 上獲得)。這些示例復(fù)制了STM32CubeWL MCU Package 中SubGHz_Phy_PingPong示例的高級(jí)功能。也就是說,它們都實(shí)現(xiàn)了圖1所示的狀態(tài)機(jī)。這兩個(gè)示例之間的唯一區(qū)別是一個(gè)使用LoRa調(diào)制解調(diào)器,而另一個(gè)使用FSK調(diào)制解調(diào)器。
圖1:低層無線驅(qū)動(dòng)乒乓樣例項(xiàng)目有限狀態(tài)機(jī)
兩個(gè)NUCLEO-WL55JC1 板需要運(yùn)行這些示例,其中一個(gè)將充當(dāng)主機(jī),而另一個(gè)將充當(dāng)從機(jī)。最初,兩個(gè)板都處于主狀態(tài),以隨機(jī)間隔發(fā)送“PING”消息并等待響應(yīng)。最終,兩個(gè)板同步,因此只有一個(gè)設(shè)備發(fā)送“PING”消息,另一個(gè)設(shè)備發(fā)送“PONG”消息作為響應(yīng)。要執(zhí)行該應(yīng)用程序,請(qǐng)按照前一節(jié)提供的步驟創(chuàng)建一個(gè)項(xiàng)目,該項(xiàng)目包含低于1GHz 無線驅(qū)動(dòng)程序。然后,只需將項(xiàng)目的main.c 文件的內(nèi)容替換為GitHub Repository 中的一個(gè)文件的內(nèi)容,具體取決于你希望在示例中使用哪種調(diào)制方案。最后,構(gòu)建項(xiàng)目并使用它對(duì)兩個(gè)Nucleo板進(jìn)行編程。
注意,這些示例與SubGHz_Phy_PingPong示例兼容。也就是說,一塊板可以用上述應(yīng)用程序編程,另一塊板可以用SubGHz_Phy_PingPong應(yīng)用程序編程,它們將按預(yù)期一起工作。然而,為了利用GFSK調(diào)制,必須首先對(duì)SubGHz_Phy_PingPong示例進(jìn)行稍微修改。打開subghz_phy_app.h 文件,修改第一個(gè)define指令如下:
#define USE_MODEM_LORA 0 //1
#define USE_MODEM_FSK 1 //0
#define REGION_US915 //REGION_EU868
然后,在radio.c 中找到RadioRandom() 函數(shù),注釋掉RadioSetModem(MODEM_LORA); 這一行不僅不需要獲得隨機(jī)數(shù),還會(huì)擦除之前初始化步驟中設(shè)置的無線配置。因此,在這種情況下,它被認(rèn)為是一個(gè)bug,不應(yīng)該被包括在內(nèi)。SubGHz_Phy_PingPong示例現(xiàn)在準(zhǔn)備編譯并燒寫到NUCLEO-WL55JC1 板之一。另一個(gè)板應(yīng)該根據(jù)上述說明使用GitHub Repository 中的main_gfsk.c 文件的內(nèi)容進(jìn)行編程。
在初始化和執(zhí)行圖1所示的有限狀態(tài)機(jī)之前,通過調(diào)用清單1中定義的radioInit() 函數(shù)來初始化無線。該函數(shù)使用與SubGHz_Phy_PingPong示例相同的無線配置,但有一個(gè)例外。在參考手冊(cè) 第6.1節(jié)的末尾,它說:
SMPS需要時(shí)鐘才能正常工作。如果由于任何原因這個(gè)時(shí)鐘停止,設(shè)備可能會(huì)被破壞。為了避免這種情況,使用時(shí)鐘檢測(cè),當(dāng)出現(xiàn)時(shí)鐘故障時(shí),關(guān)閉SMPS并啟用LDO。SMPS時(shí)鐘檢測(cè)通過低于1GHz無線 SUBGHZ_SMPSC0R.CLKDE使能。缺省情況下,SMPS時(shí)鐘檢測(cè)功能處于關(guān)閉狀態(tài),開啟SMPS前必須開啟時(shí)鐘檢測(cè)功能。
盡管有這個(gè)警告,低于1GHz Phy中間件的高層和低層都沒有啟用SMPS時(shí)鐘檢測(cè)。因?yàn)?a target="_blank">DCDC_ENABLE 是在radio_config.h 中定義的,所以SUBGRF_SetRegulatorMode() 函數(shù)將啟用SMPS降壓轉(zhuǎn)換器。因此,在此函數(shù)調(diào)用之前,手動(dòng)啟用SMPS時(shí)鐘檢測(cè)。
-
mcu
+關(guān)注
關(guān)注
146文章
17903瀏覽量
362359 -
寄存器
+關(guān)注
關(guān)注
31文章
5429瀏覽量
123838 -
無線
+關(guān)注
關(guān)注
31文章
5543瀏覽量
175668 -
驅(qū)動(dòng)程序
+關(guān)注
關(guān)注
19文章
860瀏覽量
48946
原文標(biāo)題:實(shí)操!玩轉(zhuǎn)STM32WL系列Sub-GHz無線驅(qū)動(dòng)程序
文章出處:【微信號(hào):得捷電子DigiKey,微信公眾號(hào):得捷電子DigiKey】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Sub-GHz無線連接系統(tǒng)
【ST NUCLEO-WL55JC2開發(fā)板免費(fèi)試用申請(qǐng)!】
基于STM32WL系列微控制器構(gòu)建特定LoRa應(yīng)用程序
STM32WL sub-GHz SoC未來工業(yè)物聯(lián)網(wǎng)最佳的選擇
高性能 Sub-GHz無線芯片及應(yīng)用方案

線下實(shí)訓(xùn) | STM32WL LoRa? SoC應(yīng)用開發(fā)及設(shè)計(jì)
用于 STM32WL 系列 LoRa?調(diào)制的 RSSI 和 SNR

意法半導(dǎo)體發(fā)布針對(duì)STM32WL無線MCU優(yōu)化的RF IPD
STM32WL sub-GHz SoC 未來工業(yè)物聯(lián)網(wǎng)最佳的選擇

STM32WL系列的STM32CubeWL入門

STM32WL5x具有sub-GHz無線電解決方案

面向STM32WL系列的STM32CubeWL入門
STM32WL FUOTA應(yīng)用設(shè)計(jì)

評(píng)論