NXP

STM32F103C8 Dual USB CDC

2019-07-12 13:44发布

不知道大家是否听说过MOXA这个品牌的多路串口设备,这个品牌在工业领域比较常见。

SPI转UART

理论上配合可以利用STM32F103的两路SPI,配合SPI/UART转换IC(如NXP SC16IS752或国产SJ000)可以实现多路的USB/UART转换。一路SPI可以转2/4路UART,而每个IC对应额外的CS/INT引脚。反正8~16路是可以实现的。 英语中从一到十的词根可以用上了:
  • Mono/single/one
  • di-/double/two
  • tri-/triple/three
  • quad-/four
  • penta-/five
  • hexa-/six
  • hepta-/seven
  • octa-/eight
  • nota-/nine
  • deca-/ten
  • ......
以上来自雅虎问答 一般1/2/4/8路比较符合我们工程师的二进制思维,偶尔有看到过五路、六路的,比如MikroElectronika的熊爪扩展板(五路)。

片内UART

STM32F103C8片内自带三路UART,可以用来实现USB/UART x 3的多路串口设备。不过一般来说很少有把三路UART都利用上的,大多两路即可。

Github源码

在Github有若干相关工程: 以上工程大多基于GCC,如果要开发和修改代码,建议在Linux下编译。我测试下来,Ubuntu 12.04/18.04LTS可以识别出两路CDC。

衍生项目

我准备首先使用单路USB/CDC对接一路SX127X。然后将选择一个较为稳定的工程,作为两路LoRaWAN的接入平台,使用双路USB/CDC对接两路SX127X。 由于C++类继承的关系,会使用Arduino C++/mbed C++来实现,而非CubeMX C SDK。