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.

[参考译文] TM4C1294NCPDT:TM4C129x 的 USB 复合器件 CDC 和批量

Guru**** 2482105 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/702763/tm4c1294ncpdt-usb-composite-device-cdc-and-bulk-for-tm4c129x

器件型号:TM4C1294NCPDT

我将对 TM4C1299x 的 USB 复合器件进行设计。 现在、我有 DK-1294xl 板。

TM4C1299x 支持的最大器件为4?
//
//
//这是我们在主机模式和中可以支持的最大器件数
//使用集线器。 默认情况下、我们支持多达4个器件(在内部为1个
//集线器本身)。
//
//
#ifndef MAX_USB_DEVICES
#define MAX_USB_DEVICES 5.
#endif

2.我需要 CDC*2和 BUL*2的第一个样本,
我如何学习它?

3.您是否具有适用于129x 的 CDC*2和 BUL*2复合设备样片?

谢谢、

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

    1)是的、TivaWare 支持的最大器件数为4。

    3) 3)我们没有2个 CDC 和2个批量器件的示例。

    关于问题2、我将首先查看具有2个复合器件的 USB_DEV_cserial 示例和具有单个大容量器件的 USB_DEV_BULK 示例。 了解如何为这些示例中的每个示例完成 usblib 配置。

    从 USB_DEV_cserial 开始、查看 USBDCDCCompositeInit API 和传递到的变量。

    了解这一点后、请查看如何为 USB_DEV_BULK 配置批量器件。

    然后进入 TivaWare usblib、找到 usbdbulk.c 并查看 USBDBulkCompositeInit API 的工作方式以及它所需的变量。

    从这里、您应该能够使用 USB_DEV_BULK 示例中的知识生成所需的结构、以便通过 USBDBulkCompositeInit 初始化您的两个批量器件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、
    我将把 USB_DEV_cserial 示例更改为 CDC 和 HID。
    IN ~/usblib/usb-ids.h 不是 CDC 和 HID 的产品 ID。
    什么是 CDC 和 HID 产品 ID?
    复合 CDC ID 为#define USB_PID_COMP_serial 0x0007

    2.我将支持 CDC*3和批量。
    什么是4个器件的产品 ID?
    3.在哪里可以搜索 ID 定义?
    4.当我更改产品 ID 时,我是否修改了 usblib 的代码?

    //
    //
    //产品 ID。
    //
    //
    #define USB_PID_Mouse 0x0000
    #define USB_PID_KEYBOARD 0x0001
    #define USB_PID_serial 0x0002
    #define USB_PID_BULK 0x0003
    #define USB_PID_SCOPE 0x0004
    #define USB_PID_MSC 0x0005
    #define USB_PID_AUDIO 0x0006
    #define USB_PID_COMP_serial 0x0007
    #define USB_PID_COMP_AUDIO_HID 0x0008
    #define USB_PID_COMP_HID_SER 0x0009
    #define USB_PID_COMP_HID_DFU 0x000A
    #define USB_PID_DATA_LOGGER 0x000B
    #define USB_PID_COMP_HID_HID 0x000D
    #define USB_PID_Gamepad 0x000F
    #define USB_PID_LP_CGAMEPAD 0x0010
    #define USB_PID_DFU 0x00FF

    #endif /*__USBIDS_H_*/

    谢谢。

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

    JK Wolf、您好!

    CDC PID 是 USB_PID_serial、也可以使用 USB_PID_COMP_serial。

    HID PID 包括以下项目:

    • USB_PID_Mouse  
    • USB_PID_Keyboard
    • USB_PID_Gamepad

    对于复合材料、您可能需要使用:

    • USB_PID_COMP_HID_SER
    • USB_PID_COMP_HID_DFU
    • USB_PID_COMP_HID_HID

    您应该能够为多个器件重复使用相同的产品 ID、我们的 cserial 示例已经执行了此操作。

    如果您更改了产品 ID、则不需要更改 usblib、而是需要更新 Windows USB 驱动程序、以便器件能够正确枚举。

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

    器件型号:TM4C1294NCPDT

    感谢您的回答。

    很抱歉、我再次确认。

    现在、我使用  的复合器件是4器件。

    产品 ID 按以下列表选择。

    • USB_PID_COMP_HID_SER
    • USB_PID_COMP_HID_DFU
    • USB_PID_COMP_HID_HID

    谢谢你。

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

    我认为您并不是要创建新的主题(或者至少如果有问题、那么我不理解)、所以我合并了您的帖子。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好,Raoph
    我将修改 USB_dev_cserial 源代码。
    我将创建三个 COM 端口。

    #define NUM_SERIAL_DEVICES 3.
    #define 描述符_DATA_SIZE (COMPARE_DCDC_SIZE + COMPARE_DCDC_SIZE + COMPARE_DCDC_SIZE)

    tUSBDCDCDevice g_psCDCDevice[NUM_SERIAL_DEVICS]=



    USB_VID_TI_1CBE、
    USB_PID_SERIAL、
    0、
    USB_CONF_ATTR_SELF、
    ControlHandler、
    (void *)&g_psCDCDevice[2]、
    USBBufferEventCallback、
    (void *)&g_psRxBuffer[2]、
    USBBufferEventCallback、
    (void *)&g_psTxBuffer[2]、
    G_pui8字符串描述符、
    num_string_descriptors



    tUSBBuffer g_psRxBuffer[NUM_SERIAL_DEVICS]=



    错误、 //这是一个接收缓冲区。
    RxHandlerCmd、 // pfnCallback
    (void *)&g_psCDCDevice[2]、 //回调数据是我们的器件指针。
    USBDCDCPacketRead、 // pfnTransfer
    USBDCDCRxPacketAvailable、 // pfnAvailable
    (void *)&g_psCDCDevice[2]、 // pvHandle
    G_ppui8USBRxBuffer[2]、 // pcBuffer
    UART_buffer_size、 // ulBufferSize

    };

    tUSBBuffer g_psTxBuffer[NUM_SERIAL_DEVICS]=



    对、 //这是一个发送缓冲区。
    TxHandlerCmd、 // pfnCallback
    (void *)&g_psCDCDevice[2]、 //回调数据是我们的器件指针。
    USBDCDCPacketWrite、 // pfnTransfer
    USBDCDCTxPacketAvailable、 // pfnAvailable
    (void *)&g_psCDCDevice[2]、 // pvHandle
    G_ppcUSBTxBuffer[2]、 // pcBuffer
    UART_buffer_size、 // ulBufferSize

    };
    ----------------------------------------
    MAIN ()

    //
    //初始化此协议中的第二个串行端口实例
    //复合设备。
    //
    G_sCompDevice.psDevices[2].pvInstance =
    USBDCDCCompositeInit (0、&g_psCDCDevice[2]、&g_psCompEntry[2]);

    //
    //将设备信息传递到 USB 库并放置设备
    //在总线上。
    //
    USBDCompositeInit (0、&g_sCompDevice、描述符_DATA_SIZE、
    G_pu_描述符数据);

    .

    USBview 看起来不是 COM 端口

    =========================== USB 设备=================================

    ++++++++++++++ 器件信息++++++++++++++++++
    器件描述 :USB 复合设备
    设备路径 :\\?\USB#vid_1cbe&pid_00fd#0f00a1d0#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
    器件 ID :USB\VID_1CBE&PID_00FD\0F00A1D0
    硬件 ID :USB\VID_1CBE&PID_00FD&REV_0100 USB\VID_1CBE&PID_00FD
    驱动程序密钥名 :{36fc9e60-c465-11CF-8056-444553540000}\0034 (GUID_DEVCLASS_USB)
    驱动器 :system32\drivers\usbccgp.sys (版本:6.1.7601.23333日期:2017-10-18)
    驱动程序 INF :C:\Windows\inf\usb.inf
    传统总线类型 :PNPBus
    类别 :USB
    类 GUID :{36fc9e60-c465-11CF-8056-444553540000}(GUID_DEVCLASS_USB)
    接口 GUID :{a5dcbf10-6530-11d2-901f-00c04fb951ed}(GUID_DEVINTERFACE_USB_DEVICE)
    服务 :usbccgp
    枚举器 :USB
    位置信息 :Port_#0009.Hub_#0001
    位置 ID :PCIROOT (0)#PCI (1400)#USBROOT (0)#USB (9)
    容器 ID :{a1e665b3-3404-5c28-90f7-6572c9d011dd}
    制造商信息 :(標準 USB 主控制器)
    功能 :0x94 (可移动、UniqueID、SurpriseRemovalOK)
    状态 :0x0180600A (DN_DRIVER_LOADED、DN_Started、DN_DISABLEABLE、DN_REMOVED、DN_NT_Enumerator、 DN_NT_DRIVER)
    问题代码 :0
    地址 :9.
    电源状态 :D0 (支持:D0、D3,从 D0唤醒)
    子设备1 :Stellaris ICDI JTAG/SWD 接口
    DevicePath :-
    器件 ID :USB\VID_1CBE&PID_00FD&MI_02\6&39236B97&0&0002
    类别 :StellarisICDIDeviceClass
    子设备2. :Stellaris ICDI DFU 器件
    DevicePath :-
    器件 ID :USB\VID_1CBE&PID_00FD&MI_03\6&39236B97&0&0003
    类别 :StellarisICDIDeviceClass
    子设备3. :Stellaris 虚拟串行端口
    DevicePath :-
    器件 ID :USB\VID_1CBE&PID_00FD&MI_00\6&39236B97&0&0000
    类别 :端口
    COM 端口 :COM12 (\Device\USBBER000)

    哪些流程不会添加到代码中?

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

    今天、我收到了您的后续问题的提醒。 当您提出新问题时、请确保在您的问题得到解决之前不验证任何答案、否则您的新问题将不会显示在我们的工作流程中、我认为这就是我们在这里发生的情况。

    我不确定我是否完全理解了您的问题、但似乎您没有看到第三个复合器件枚举? 如果是、您能更好地分享您的修改吗? 您的代码过账... 但我无法理解这意味着什么、您的结构看起来不完整、因此我无法猜测发生了什么。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Ralph:

    请查看下面的 TI 方框以了解修改后的代码、如果有任何建议、请随时告知我们。
    txn.app.box.com/.../aqft2jg6oydnovi8lprxmasik2j6dzc9
    非常感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Janet、您好!

    我今天在 e2e.ti.com/.../2605537上回复了您的新帖子

    让我们将讨论与单个线程保持隔离。