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.

[参考译文] EK-TM4C123GXL:用于 COM 接口的 USB 器件(非 USB 调试)端口

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1229589/ek-tm4c123gxl-usb-device-not-usb-debug-port-for-com-interface

器件型号:EK-TM4C123GXL
主题中讨论的其他器件: TM4C123

我让 EK-TM4C123GXL 可以使用 UARTprintf 和 UARTgetc 等 uartstdio.c 函数运行。 我使用可通过 COM 端口访问的终端仿真器通过 USB 调试端口进行通信。 一切都运行正常、但是我需要从 USB 调试端口切换到 USB 设备端口。  

我已更改自:

// PA0-1用于 UART0
GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);
GPIOPinTypeUART (GPIO_PORTA_BASE、GPIO_PIN_0 | GPIO_PIN_1);

UARTAStdioConfig (0、230400、SysCtlClockGet ());

至:

// PD4-5用于 UART6
GPIOPinConfigure (GPIO_PD4_U6RX);
GPIOPinConfigure (GPIO_PD5_U6TX);
GPIOPinTypeUART (GPIO_PORTD_BASE、GPIO_PIN_4 | GPIO_PIN_5);

UARTBStdioConfig (6、230400、SysCtlClockGet ());

问题是、当我连接 USB 电缆时、Windows 会报告"USB 设备未被识别"。 在设备管理器中、我收到"Unknown USB Device (Port Reset Failed)"(未知的 USB 设备(端口重置失败))

我记得我加载 Stellaris 驱动程序所需的 USB 调试端口了。 对我来说、似乎我需要一个 Windows USB 驱动程序。 我搜索过网络、但找不到任何内容。

是否有人知道如何让 EK-TM4C123GXL USB 设备端口像 USB 调试端口一样工作?

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

    您好!

     UART0正常运行的原因是 UART0路由到板载 ICDI 调试探针。 板载 ICDI 调试探针用作 USB 转 UART 桥接器、USB 调试端口可以通过这种方式枚举为串行端口。

    更改为 UART6时、您需要有一个外部 USB 转 UART 桥接器。 下面我们举例说明。 我不支持任何产品。 您可以搜索最适合您的需求的一个。  https://www.amazon.com/DSD-TECH-SH-U09C5-Converter-Support/dp/B07WX2DSVB/ref=sr_1_3?crid=48RECALFD0VW&keywords=usb+to+uart+bridge&qid=1684849346&sprefix=usb+to+uart%2Caps%2C138&sr=8-3

     USB 设备端口是一个完全不同的东西。 这是一个针对片载 USB 控制器的 USB 端口。 TM4C123 MCU 具有集成式 USB 控制器、可针对不同的 USB 类别进行编程、例如用于存储应用的散装、用于鼠标/键盘的 HID、用于串行通信的 CDC 等。 如果您有兴趣、可以为 CDC 类配置 USB 控制器、该类将枚举为 COM 端口。 不确定这是否是您要找的。 请记住、除了作为串行设备的 USB 控制器外、您根本就不使用任何 UART 模块。 您可以运行示例 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\USB_dev_serial 进行演示。 将 USB 电缆连接到 USB 设备端口时、您会在设备管理器中看到一个 COM 端口。  

     如果您打算使用不同的 UART (例如 UART6)来执行 UARTPrintf ()、则需要如上所述的 USB 转 UART 桥接器。  

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

    尊敬的 Charles:

    感谢您的及时和彻底的回应。 这确实使得 Tiva 生态系统成为一个开发的好地方。

    遗憾的是、直接连接到 TM4C52的 PD4和 PD5的 USB 连接器需要一个转换器将这些 TTL 信号转换为 TTL 信号!!! 对于 USB 调试端口而言、具有直接连接、一切都很顺利。 具有讽刺意味的是、USB 调试端口使用 PD4和 PD5:

    从硬件角度来看、一切都很顺利。 假定 USB 调试端口神奇发生在 TM4C52的电路内调试接口(ICDI)和 PC 的 Stellaris 虚拟端口驱动程序的代码中。 我使用此示例已经很多年了、uartstdio.c 为我提供了与 USB 调试端口通信所需的一切。 最好对 USB 设备端口执行相同的操作。

    我将研究 CDC 类、因为这可以实现我需要的功能。 我已经打印出 https://www.ti.com/lit/ug/spmu297e/spmu297e.pdf 的44到78页 、并将对其进行研究。 看起来我应该能够通过 USB 设备端口复制 USB 调试端口的功能。 从该文档可以看出:

    "USB 通信器件类(CDC)类驱动程序支持 CDC 抽象控制模型变体、并允许将客户端应用程序视为 USB 主机系统的虚拟串行端口。"

    以及:

    "CDC 串行器件可视为 Windows 系统上的虚拟 COM 端口非常简单、因为 Windows 已包含支持 USB CDC 器件的器件驱动程序。 器件开发人员只需提供一个 INF 文件即可将新器件的 VID 和 PID 与 Windows USB CDC 驱动程序 usbser.sys 关联。

    希望在具备一定的理解和编码能力的情况下、我能够使用 uartstdio.c、该函数可帮助使 USB 设备端口的行为与 USB 调试端口的行为类似。 我认为这样一个"特性"将对其它人有用、并且想知道是否 TI 认为有必要提供指令或代码来实现这一目标。

    我想我已经解决了这个问题、并将它标记为"这解决了我的问题"。 非常感谢您的帮助 Charles。

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

    尊敬的 Vito:

    我认为这样的"功能"对其他人有用,并想知道德州仪器是否认为有必要提供指令或代码来实现此目的[/引述]

    如前所述、您可以在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\usb_dev_serial 中找到 USB CDC 示例。 它应该开箱即用。