前言
搁了这么久,目前我设计的 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文章
7939浏览量
264501 -
AI
+关注
关注
87文章
30762浏览量
268905 -
LoRa
+关注
关注
349文章
1689浏览量
231917
发布评论请先 登录
相关推荐
评论