我正在考虑在内置 USB 引擎的 MCU 上实现 USB 通信。基本上你可以访问管道/端点。
我现在对 USB 堆栈有点困惑。似乎驱动程序在管道/端点设置之上的另一个级别上运行,因此管道/端点就像构建驱动程序的中间层。这个对吗?
其次,我对通过 USB 模拟串行通信感兴趣。看来windows有一个预制的驱动程序,所以在计算机端我不需要对管道级别进行编程。
如何找出我需要在 MCU 上实现什么才能使其与通用串行驱动程序正确运行?
这是关于串行通信的第二个问题的答案。
USB 标准定义了用于串行通信的通信设备类 (CDC)。主机端所需的驱动程序由 Windows、macOS、Linux 和更多操作系统实现。
相关的 CDC 子类是 PSTN。相关文档可在Communication Devices 1.2 的类定义中找到。
该设备基本上实现了四个端点:
SetLineCodeing
,GetLineCoding
和SetControlLineState
。SerialState
。当然,您需要正确获取设备描述符。
最重要的是,您需要实现所有标准 USB 请求。
这很有可能已经为您的 MCU 编写了,包括标准请求和串行通信。那么为什么不使用现有的代码呢?