STM32USB CDC双虚拟串口实现
STM32 的 USB 模拟双串口功能,确实是个挺实用的小技巧。通过一个 USB 口,就能让 STM32 在 PC 上模拟出两个独立串口,等于是帮芯片“变出”两个虚拟 COM 口,节省硬件资源不说,调试也方便多了。
基于STM32F10x系列的设计,这套方案其实就是靠USB CDC 类来搞定的。你只要把 USB 当成串口用,STM32 那边写好固件,主机那边一插上就能识别出两个串口。像数据采集、多模块通信场景,就吃这套。
核心思路不复杂,USB 那头搞两个 CDC 设备符,各管一条通道。用代码把USB 数据转发给串口,串口的数据再转回来。中间还要做点缓冲,防止两头速度对不上卡数据。文件里 USB 配置和中断啥的都写好了,你直接拿来改改就能用。
我是在STM3210B-LK1 开发板上测试的,USB 接口、串口接口全都有,调试起来蛮顺手的。如果你用 Win7 系统,记得装下 CDC 驱动,双串口才能乖乖挂载上。其他系统就要看有没有默认支持,实在不行就得自己折腾下驱动。
小提示:
1. USB 枚举过程要好,不然识别不出来;
2. 缓冲区别太小,容易丢数据;
3. 注意连接异常的,比如 USB 突然拔了,程序不能直接挂了。
如果你在做物联网或多串口通信的项目,又不想加硬件串口芯片,那这份代码挺值得一试的。源码直接上手,用在 STM32F10x 上跑得稳,灵活性也不错。
604.4KB
文件大小:
评论区