USB转串口设备在主机上使用时需要配合USB设备驱动,根据使用场景的不同,又可以细分为不同类型的USB转串口应用,常见有:USB转VCP虚拟串口、USB转CDC虚拟串口、USB HID转串口、安卓AOA转串口等。其中以USB转VCP虚拟串口应用最为广泛。事实上,USB转串口硬件完整的工作流程需要主机端USB设备驱动的配合才可以完成。硬件完成的仅是USB数据和串口数据的处理,其使用方法是由串口驱动决定。关于各驱动类型介绍,说明如下:
USB转VCP虚拟串口
使用厂商提供的USB虚拟串口驱动程序,工作时在Windows系统的“端口(COM和LPT)”一栏下会生成COM口,Linux/Android/macOS系统在/dev目录下会生成TTY设备节点。 应用特点:
- 支持高速率通讯及硬件流控。
- 功能齐全,支持GPIO等扩展功能。
- 仿真标准串口,用于升级原串口外围设备,或者通过USB增加额外串口。
- 计算机端串口应用程序完全兼容,无需修改。
- 驱动只需安装一次也可以联网自动安装。
USB转CDC串口
Windows 10及以上的操作系统版本内置CDC串口驱动,以下的系统版本则需要安装驱动。因CDC类协议和类驱动的原因,CDC串口功能没有VCP完整,使用上也存在一些差异,具体见如下使用注意事项:
Windows系统CDC串口使用注意点
->?在串口打开的情况下,不要插拔串口 在串口应用软件已打开串口状态下,拔插一次CDC串口设备的USB端,后续应用软件将无法再打开串口,此时必须重新插拔USB。(与系统自带CDC串口驱动PnP处理有关) (注:在WIN 10之前系统版本中有此情况)
-> 串口RTS(Request To Send)信号不支持单独控制 因CDC-ACM协议的限制和系统集成的CDC类驱动的特性,RTS无法单独控制,只能在DTR有变化时,DTR和RTS状态才会更新至硬件。
-> 不支持串口CTS(Clear To Send)信号 CDC-ACM协议不支持CTS状态更新。
-> 不支持软件和硬件流控 CDC-ACM协议不支持串口硬件流控,系统CDC串口驱动不支持软件流控。
-> 使用串口高波特率时不建议持续传输数据,建议在发送间隔内增加延时 使用系统自带的CDC串口驱动,在串口高波特率(超过115200bps)连续通讯时,有可能会丢失数据。
-> 在系统睡眠休眠前建议关闭串口,否则有概率在唤醒后串口会停止接收 在串口应用软件已打开串口状态下,Windows主机进入睡眠或休眠状态,则有概率出现主机唤醒后串口无法再接收数据。此时必须重新开关串口或插拔USB。 (注:在WIN 10之前系统版本中有此情况)
Linux系统CDC串口使用注意点
-> 不支持串口CTS(Clear To Send)信号 CDC-ACM协议不支持CTS状态更新。
-> 不支持软件和硬件流控 CDC-ACM协议不支持串口硬件流控,系统CDC串口驱动不支持软件流控。
macOS系统CDC串口使用注意点
-> 不支持串口Modem输入信号 因CDC-ACM协议和系统自带驱动的原因,不支持CTS/DSR/RI/DCD状态更新。
->不支持软件和硬件流控 CDC-ACM协议不支持串口硬件流控,系统CDC串口驱动不支持软件流控。
HID转串口
使用操作系统自带的USB HID设备驱动,USB HID串口在系统上识别为标准HID设备。 应用特点:
- 支持免安装的操作系统内置HID类驱动程序。
- 系统下不生成串口节点,无需手动选择,同时也实现了一定程度的信息隐藏。
- 数据收发使用USB中断传输,支持最高波特率为:115200bps。
- 需使用系统HID原生API或者WCH提供的动态库操作串口。
安卓AOA转串口
遵循安卓AOA协议,仅用于安卓系统,使用系统自带的AOA配件驱动,AOA串口在系统上识别为标准AOA配件。 应用特点:
- 使用安卓标准Accessory配件库,实现免驱应用。
- 实现安卓设备边充电边通讯。
- 对比安卓OTG扩展串口方式,通用性更强。
综上,在实际应用中,USB转VCP虚拟串口方式可提供的功能更丰富(因使用厂商提供提供,可支持和扩展其他功能),串口应用软件兼容性也更好。
|