This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1237H6PM:使用不带 UART 的 CDC 类 USB 驱动程序

Guru**** 664280 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1113307/tm4c1237h6pm-using-cdc-class-usb-driver-without-uart

器件型号:TM4C1237H6PM

您好!

我修改了您的示例 USB_DEV_serial、使其在没有 UART 的情况下运行。 我的程序只回波我在串行终端上键入的任何内容。 我已附上下面的完整计划。 我有以下问题。

我 在 RxHandler 中处理事件 USB_EVENT_DATA_LEARTENT、只需按如下方式返回0即可。 这是可以的吗?

        // We are being asked how much unprocessed data we have still to
        // process. We send 0 if USB Tx buffer can take data
        case USB_EVENT_DATA_REMAINING:
        {
            return(0);
        }

在 ControlHandler 中、我通过忽略多个事件来处理它们(见下文)。 它们在示例代码中处理 UART 事件。

        case USBD_CDC_EVENT_GET_LINE_CODING:
        case USBD_CDC_EVENT_SET_LINE_CODING:
        case USBD_CDC_EVENT_SET_CONTROL_LINE_STATE:
            break;

        case USB_EVENT_DATA_REMAINING:
        {
            return(0);
        }

谢谢、

Dhammikae2e.ti.com/.../4834.usb_5F00_dev_5F00_serial_5F00_without_5F00_UART.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dhammika、您好!  

    这些实际上是特定于应用的问题。 如果您不会收到数据、则无需处理该事件。 CDC 事件通常是枚举的一部分、但可能不需要。

    我不会说这是典型的实现方式、但只要它能满足您的需求、就不会导致库错误、除非您处理 RX 数据的速度不够快、并且无法跟踪您需要清除的缓冲区空间大小等

    此致、

    Ralph Jacobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    感谢您的快速回复。

    返回0表示 USB_EVENT_DATA_LE余 留事件一直对我有效。 但是、我在今天早上发现、需要   正确处理事件、USBD_CDC_EVENT_GET_LINE_Coding 和 USBD_CDC_EVENT_SET_LINE_C编码。 也就是说 、我们必须为事件  USBD_CDC_EVENT_SET_LINE_Coding 返回1、并且必须使用 一些值填充 USB 控制回调的 pvMsgData 输入/输出。 请在您的结尾确认

    谢谢、

    Dhammika

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dhammika、您好!

    基于我们的 Windows 驱动程序是如何设置 CDC 器件的枚举的、这对我来说很有意义。 我有点惊讶的是,它在没有诚实的人的情况下工作。

    使用这些命令的想法是、它有助于设置 COM 端口波特率和数据大小等。因此、虽然演示中可能会让您认为这些命令通常与 UART 绑定、但您使用的是与相同的终端 USB COM 端口的 UART 连接、因此应用相同的设置。

    可以通过 USB 驱动程序避免这种情况、但我不确定。

    此致、

    Ralph Jacobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    再次感谢您的快速回复。  我已经使用  USBD_CDC_EVENT_GET_LINE_Coding 指定了奇偶校验、位数和停止位数 。 但是我没有定义波特率。  

     

    然后、我忽略 USBD_CDC_EVENT_SET_LINE_Coding 事件。 这似乎工作正常。  

    进行串行连接时、我可以指定任何波特率。 CAD 驱动程序似乎具有自动检测波特率的机制。  

    谢谢、

    Dhammika

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    我甚至更改了奇偶校验和串行连接期间停止位的编号等内容。 即使进行了这些更改、也能正常工作。 CDC 驱动程序似乎能够在通信开始之前识别所有内容。

    谢谢、

    Dhammika