【问题标题】:USB stack confusion/serial emulatorUSB 堆栈混淆/串行仿真器
【发布时间】:2022-01-03 20:27:51
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: windows usb driver usbserial atsam3x


    【解决方案1】:

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

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

    相关的 CDC 子类是 PSTN。相关文档见Class definition for Communication Devices 1.2

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

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

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

    除此之外,您还需要实现所有标准 USB 请求。

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

    【讨论】:

    • 我会看看,但是,我也认为理解和实施自己有一些优点。它适用于 sam3x8 设备,您有什么建议吗?
    • 我对 Microchip SAM 设备不是很熟悉。您使用的是什么 IDE 和基本库?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    相关资源
    最近更新 更多