0

我正在考虑在内置 USB 引擎的 MCU 上实现 USB 通信。基本上你可以访问管道/端点。

我现在对 USB 堆栈有点困惑。似乎驱动程序在管道/端点设置之上的另一个级别上运行,因此管道/端点就像构建驱动程序的中间层。这个对吗?

其次,我对通过 USB 模拟串行通信感兴趣。看来windows有一个预制的驱动程序,所以在计算机端我不需要对管道级别进行编程。

如何找出我需要在 MCU 上实现什么才能使其与通用串行驱动程序正确运行?

4

1 回答 1

2

这是关于串行通信的第二个问题的答案。

USB 标准定义了用于串行通信的通信设备类 (CDC)。主机端所需的驱动程序由 Windows、macOS、Linux 和更多操作系统实现。

相关的 CDC 子类是 PSTN。相关文档可在Communication Devices 1.2 的类定义中找到。

该设备基本上实现了四个端点:

  • 配置请求的控制端点(波特率、DTR 状态等)。看看SetLineCodeingGetLineCodingSetControlLineState
  • 用于 USB 到串行传输的批量端点
  • 串行到 USB 传输的批量端点
  • 通知的中断端点(DCD 状态、错误)。见SerialState

当然,您需要正确获取设备描述符。

最重要的是,您需要实现所有标准 USB 请求。

这很有可能已经为您的 MCU 编写了,包括标准请求和串行通信。那么为什么不使用现有的代码呢?

于 2022-01-03T21:50:05.957 回答