前言
擱了這么久,目前我設計的 USB 轉 LoRa 模塊(起名叫:Red LoRa Module,后續簡稱 RLM)的固件開發的差不多了,基本實現了雙向的 USB 到 LoRa 之間的轉換,今天就發文總結以下,因為后面就要到光照度算法部分開發了,期待哦。
概述
首先看下 RLM 的,結構框圖:
再看一下3D圖和實物圖:
這部分驅動是運行在 STM32F103 上面,通過 CDC ACM 配置,實現在 PC 端枚舉出來對應的節點。另一方面通過 SPI 和 LoRa 通信,最終實現 USB 和 LoRa 之間的透傳。這部分代碼是開源的,我是在 [https://github.com/blackmagic-debug/blackmagic.git]開源項目的基礎上修改實現的。這部分固件代碼我放在我的 gitee 倉庫 [rlm_hsi],感興趣的小伙伴可以去看看。
經驗總結
經過這幾天的 USB 轉 LoRa 固件功能的開發,總結出來比較深刻的經驗有如下幾點:
- 使用 STM32F103CBT6 的 USB,USB 的時鐘要固定在48MHZ,并且官方不建議使用內部晶振提供這個時鐘,在選擇使用 cubeMX 軟件的時候,如果選擇 HSI 提供這個始終,也會提示你有沖突,但是不要緊,想用 HSI 還是可以的,不過不建議哦,因為我這個板子的圖畫的比較早了,當時沒有考慮到,所以就硬著頭皮往下開發了,好在成功了。
- 使用 STM32F103CBT6 的 USB 的時候,為了讓 PC 可以枚舉設備,在電路上需要在 D+ 上設計一個上拉電阻,如果想實現動態熱插拔,這個電阻另一端需要連接到一個可以控制的 GPIO 管腳,通過拉高這個 GPIO,實現動態熱插拔,如果不需要這個功能,就直接上拉到 VCC(我這里是直接接到了 3V3) 就行了。
- 在使用 SPI 的時候,因為我想用軟件控制 NSS,發現必須要同時配置 SPI 的 CR1 的 SSM 和 SSI 為 1。否則是不能配置到主機模式軟件NSS的。
- 在調試 LoRa 模塊的時候,發現 spi 速率太低也會導致通信異常,最后我設定在 SPI 時鐘 2 分頻可以正常工作。
效果演示
說了這么多,我們看下實際的效果,首先是設備枚舉:
[349794.851655] usb 3-4.2: new full-speed USB device number 49 using xhci_hcd
[349795.044759] usb 3-4.2: New USB device found, idVendor=1d51, idProduct=6118, bcdDevice= 0.09
[349795.044777] usb 3-4.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[349795.044783] usb 3-4.2: Product: Red Lora Module v1.10.0-926-g8f2291e7-dirty
[349795.044787] usb 3-4.2: Manufacturer: Red Studio
[349795.044791] usb 3-4.2: SerialNumber: E1C3A7D0
[349795.054870] cdc_acm 3-4.2:1.0: ttyACM2: USB ACM device
然后,視頻演示部分可以參看 [具有 Local AI 功能的工業用照明控制器] 的評論區哦。
審核編輯 黃宇
-
usb
+關注
關注
60文章
7768瀏覽量
262320 -
AI
+關注
關注
87文章
28817瀏覽量
266152 -
LoRa
+關注
關注
348文章
1639瀏覽量
231357
發布評論請先 登錄
相關推薦
評論