第二章:RLM 适配 HZHY AI300G 的固件开发

电子说

1.3w人已加入

描述

前言

搁了这么久,目前我设计的 USB 转 LoRa 模块(起名叫:Red LoRa Module,后续简称 RLM)的固件开发的差不多了,基本实现了双向的 USB 到 LoRa 之间的转换,今天就发文总结以下,因为后面就要到光照度算法部分开发了,期待哦。

概述

首先看下 RLM 的,结构框图:

LoRa

再看一下3D图和实物图:

LoRa
LoRa

LoRa

这部分驱动是运行在 STM32F103 上面,通过 CDC ACM 配置,实现在 PC 端枚举出来对应的节点。另一方面通过 SPI 和 LoRa 通信,最终实现 USB 和 LoRa 之间的透传。这部分代码是开源的,我是在 [https://github.com/blackmagic-debug/blackmagic.git]开源项目的基础上修改实现的。这部分固件代码我放在我的 gitee 仓库 [rlm_hsi],感兴趣的小伙伴可以去看看。

经验总结

经过这几天的 USB 转 LoRa 固件功能的开发,总结出来比较深刻的经验有如下几点:

  1. 使用 STM32F103CBT6 的 USB,USB 的时钟要固定在48MHZ,并且官方不建议使用内部晶振提供这个时钟,在选择使用 cubeMX 软件的时候,如果选择 HSI 提供这个始终,也会提示你有冲突,但是不要紧,想用 HSI 还是可以的,不过不建议哦,因为我这个板子的图画的比较早了,当时没有考虑到,所以就硬着头皮往下开发了,好在成功了。
  2. 使用 STM32F103CBT6 的 USB 的时候,为了让 PC 可以枚举设备,在电路上需要在 D+ 上设计一个上拉电阻,如果想实现动态热插拔,这个电阻另一端需要连接到一个可以控制的 GPIO 管脚,通过拉高这个 GPIO,实现动态热插拔,如果不需要这个功能,就直接上拉到 VCC(我这里是直接接到了 3V3) 就行了。
  3. 在使用 SPI 的时候,因为我想用软件控制 NSS,发现必须要同时配置 SPI 的 CR1 的 SSM 和 SSI 为 1。否则是不能配置到主机模式软件NSS的。
  4. 在调试 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 功能的工业用照明控制器] 的评论区哦。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分