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.

[参考译文] TMS320F28388D:使用 C28x CPU1 USB 在主机(MSC)和 DEC (CDC)之间切换

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1114111/tms320f28388d-switch-between-host-msc-and-dec-cdc-with-c28x-cpu1-usb

器件型号:TMS320F28388D
主题中讨论的其他器件:TUSB320LI

您好!

我的客户希望使用 C28x CPU1 USB 在主机(MSC)和 DEC (CDC)之间切换。

它们以 USB_EX8_DUAL_DETECT 作为参考进行编程、但一旦识别 MSC、就无法在不复位器件的情况下切换到 CDC。 是否有切换模式而不复位器件的示例程序?

此致、
Sasaki

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

    Sasaki、您好!

    [引用 userid="7882" URL"~μ C/support/microdevices/c2000-microdevice-group/C2000/f/c2000-microdevice-forum/1114111/tms320f28388d-switch-between host-msmsc and -tdec CDC-wing-C28x-CPU1-USB"]他们正在使用 USB_EX8_DUAL 进行编程、但一旦无法识别引用、就无法检测到 CDC_QUO[]他们将其作为引用。

    此示例检查 while 环路中 GPIO 47的状态、以在主机和器件模式之间切换。 您能否检查 GPIO47数据寄存器以了解 C2000器件读取的值?

    最棒的

    Kevin

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

    大家好、Kevin San、

    感谢你的答复。

    是的。 他们检查 GPIO47数据寄存器。

    其 USB 切换代码如下所示。 此代码是否不正确?

        if (USB_ID_iBit != oldID){
            oldID = USB_ID_iBit;
            if (USB_ID_iBit){
                bUsbHostMode = false;
                //
                // Device Mode
                // Kill the host mode
                //
                USBHCDTerm(0);
                USBHMSCDriveClose(g_psMSCInstance);
                //DeviceMode
                    //
                // Initialize the transmit and receive buffers.
                //
                USBBufferInit(&g_sTxBuffer);
                USBBufferInit(&g_sRxBuffer);
                //
                // Pass our device information to the USB library and place the device
                // on the bus.
                //
                USBDCDCInit(0, &g_sCDCDevice);
            
                //create que for receive data
                make_queue_char(&usbcdc_receive_queue,buf_usbcdc_receive_queue,QUEUE_LENGTH_USBCDC_RECV);
                make_queue_char(&usbcdc_receive_2nd_queue,buf_usbcdc_receive_2nd_queue,QUEUE_LENGTH_USBCDC_RECV_2ND);
                make_queue_char(&usbcdc_send_queue,buf_usbcdc_send_queue,QUEUE_LENGTH_USBCDC_SEND);
            }
            else{
                bUsbHostMode = true;
                //
                // Host Mode
                // Kill the Device mode
                //
                USBDCDCTerm((void *)&g_sCDCDevice);
                //HostMode
            	USBStackModeSet(0, eUSBModeForceHost, ModeCallback);
            	UsbHostStackInit();
            	USBHCDInit(0,g_pHCDPool, HCD_MEMORY_SIZE);
                f_mount(0, &g_sFatFs);
            }
        }

    此致、
    Sasaki

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

    Sasaki、

     "USB_ID_iBit"的代码是什么?   它是否读取了 GPIO47引脚?

    此致

    Siddharth

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

    您好、Siddharth - San、

    感谢你的答复。

    USB_ID_iBit 连接到 GPIO114。

    客户使用的是 TUSB320LI、该 IC 输出 USB_ID。 由于这个 USB_ID 信号被连接至 GPIO114、程序可分支至一个 USB 主机或器件。

    顺便说一下、是否有示例 项目可以在具有 controlCARD 的 MSC (USB 存储器)和 CDC (串行端口)之间切换? 如果有、我将在此处确认。

    此致、
    Sasaki

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

    Sasaki、

    没有可在 MSC 和 CDC 之间切换的特定示例,但 USB_EX8_DUAL_DETECT 示例可用作参考

    此致

    Siddharth

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

    您好、Siddharth - San、

    他们已经提到了这个例子。 如果代码有任何问题、请告诉我。

    最棒的酒店
    Sasaki

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

    Sasaki、

    代码看起来是正确的。 您可以要求他们进行调试、并查看 是否在器件和主机模式下正确读取 USB_ID_iBit。

    此致

    Siddharth

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

    Siddharth-San、

    感谢您的支持。

    好的。 我将与我的客户核实。

    此致、
    Sasaki