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.

[参考译文] TMS320F2.8377万S:TMS320F2.8379万D:C2000Ware事件问题的USB示例

Guru**** 2484615 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/632973/tms320f28377s-tms320f28379d-usb-examples-from-c2000ware-events-problems

部件号:TMS320F2.8377万S
主题中讨论的其他部件:C2000WARE

您好,

这与以下开机自检中的相关问题有关,但拆卸已锁定! (为什么???)

e2e.ti.com/.../218.478万

问题与从未收到的USB设备断开事件有关。

这个问题已经传达给工程师,但我们今天没有任何消息。

C2000v软件01.00 .02.00 已推出。

如果有人可以告诉我此版本是否纠正了此问题?

如果没有,是否有人可以处理? 因为我们现在正处于生产阶段,这个问题对我们来说是非常严重的。

谢谢

此致

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

    这在最新的C2000Ware版本中尚未解决。

    SAL

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们应该在10月底之前了解一下这个问题以及USBlib和USB示例。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好

    这个问题的解决还没有消息?
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好

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

    我已重新运行USB_DEP_SERIAL示例,但没有发现任何问题。 设备可以连接,断开连接和重新连接,没有任何问题。

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

    我重新运行以下示例:
    C:\ti\c2000Ware_1_00_03_00\device_support\f2837xd\examples\CPU1\USB_dev_serial</s>2837
    我在CCS v 7.4 上编译它
    出现警告:
    "此项目是使用当前未安装的编译器版本创建的- 15.12 .1.LTS [C2000]。 编译期间将使用另一个版本的编译器- 16.9 .6.LTS。"

    我在controlCARD F2.8377万D rev 1.1 上运行它。 (带片上XDS100v2)

    我在USB电缆插入时收到已连接事件,但在USB电缆拔下时没有事件。 (当电缆被插入时,g_pcStatus被设置为“已连接”,当电缆被拔下而不是传递到“已断开”时,保持此状态)


    然后在项目属性中,我将编译器版本更改为TI v 16.9 .6.LTS=>相同的结果
    然后在项目属性中,我将编译器版本更改为TI v 17.9 .0.sts=>相同的结果

    然后我就不会这样做了。

    您的环境是什么? (主板,版本等...)
    哪种想法可以在调试模式下读取以找出问题的根源?

    感谢你的支持。 这对我们很重要,并且可能会影响我们的项目。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    我当时使用的是最新的F2837xD (F2.8379万D)版本1.3 controlCARD和版本C芯片。 自版本1.1 以来,对controlCARD原理图进行了一些与USB相关的更改。

    您可以在C2000Ware的/boards文件夹下看到本文档中详细介绍的更改:F2837x_180controlCARD_R1_3_SCH_02Oct2015。2015。

    更改必须与正确断开设备与主机的连接有关。 我们添加了几个电阻器,以正确地释放VBUS上的电压。 有关详细信息,请参阅示意图。

    希望这有所帮助。

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

    你好

    好的,
    在controlCARD之后,我们开发出自己的特定板,连接/断开检测在其上不起作用。

    我不清楚版本1.3 中只有哪个零件才有此功能?
    在我的特定主板上,我们简化了原理图,如下所示:

    -µC Ω 信号USB0DM连接到USB连接器D-(引脚2)
    -µC Ω 信号USB0DP连接到USB连接器D+(引脚3)
    - USB连接器GND引脚5连接到板GND。

    - TPD2E2:D+和D-信号上的ESD钳位


    就是这些!

    要让USBLib检测连接/断开连接,我必须添加的最低要求是什么?

    谢谢

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

    有关controlCARD上的USB原理图,请参见第6页。

    此外,您还可以使用另一个GPIO引脚(例如GPIO 46)来检测连接和断开。

    在您的主应用程序中,您可以使用以下代码。

      //

      //在启动时检查VBUS是高还是低,因为这不会导致中断。

      //

    IF (GpioDataRegs.GPBDAT.bit.GPIO46 == 1)

    USBDevConnect (USB0_BASE);

    }

    否则

    USBDevDisconnect (USB0_BASE);

    }

    并设置外部中断以检测VBUS何时变为高或低。

    //

    // VBUS中断。
    //
    EALLOW;
    PieVectorTable.XINT1_INT =&VBUS_ISR;
    EDIS;
    //
    //在PIE中启用XINT1:组1中断4
    //
    PieCtrlRegs.PIECTRL.bit.ENPIE =1;//启用PIE块
    PieCtrlRegs.PIEIER1.bit.INTx4 =1;//启用PIE组1 INT4
    IER || M_INT1;//启用CPU INT1
    //EINT;//启用全局中断

    //
    //为XINT1设置GPIO46。
    //
    GPIO_SetupXINT1Gpio(46);
    //
    //为XINT1配置极性。
    //
    XintRegs.XINT1CR.bit.POLARITY = 3;//正或负边缘触发器
    //
    //启用XINT1
    //
    XintRegs.XINT1CR.bit.enable = 1;//启用XINT1

    //
    //启用全局中断
    //
    IntMasterEnable();

    并使用下面的ISR。

    //

    //在VBUS上切换连接或断开PHY。

    //

    __interrupt void VBUS_ISR(void)

    IF (GpioDataRegs.GPBDAT.bit.GPIO46 == 1)

    USBDevConnect (USB0_BASE);

    }

    否则

    USBDevDisconnect (USB0_BASE);

    }

    PieCtrlRegs.PIEACK.ALL = 0xFFFF;

    }

    此外,您还可以看到附加的USB主源代码,我们使用该代码来认证我们的controlCARD rev 1.3 for USB认证。

    SAL

    e2e.ti.com/.../usb_5F00_dev_5F00_bulk.c

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

    好的
    我阅读了有关连接/断开的USB VBus检测的数据表。

    但如果我很清楚,例如USB_DEP_SERIAL没有“连接/断开”功能,而USB_DEP_BULK有,对吗?

    在硬件方面,我只需要通过100k欧姆+ ESD保护将USB连接器引脚1( USBVDD)连接到GPIO (46),以通过5V -> 3.3V传递。

    对吧?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我显示的USB_DEP_BULK源代码使用外部中断来检测VBUS,添加了该代码以满足认证计时。 它有助于设备在可接受的时间内正确断开和重新连接PHY。 但是,使用新版本的1.3 controlCARD,设备仍然能够正确连接和断开(至少对于Windows PC)。

    在您的硬件中,您需要模拟使用controlCARD rev 1.3 上的GPIO 46执行的操作。

    我需要重新了解USBlib和USB_DEP_SERIAL示例如何在没有XINT的VBUS监控的情况下正确处理断开连接和重新连接。 明天,我可以运行一些测试,以回顾USB_DEP_SERIAL示例在断开和重新连接时正在执行的操作。 我明天会提供更多信息。

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

    GIR,

    我在USB_DEP_SERIAL示例中未看到USB_EVENT_DISCONNECTED发生。 我只看到在ControlHandler()函数中发生USB_event_connected事件。  但是,controlCARD仍然能够断开与主机PC的连接,然后重新连接并正常工作。

    usb_event_connected在枚举过程中发生。 但是,在USB_DEP_BULK示例中,我看不到断开连接中断。

    我认为,为了正确处理断开和重新连接,您需要监控VBUS,正如我在分享的源代码示例中所演示的那样。 当VBUS变低时,通过SOFTCONN断开PHY。 当VBUS变高时,通过SOFTCONN重新连接PHY。 库应再次正确处理枚举过程。

    此致,

    SAL

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

    你好

    好的,我会测试一下。 首先,我必须修改我的主板以添加此PIN

    您确定他们不是另一种方式吗?

    由于USB协议交换连续数据,USB库是否可以检测到这些交换的停止?

    这在我看来很奇怪,因为当我评估USB时

    这是很久以前的事了,但似乎几乎肯定已经观察到连接和断开事件。(使用USB_DEP_EXEMple和controlCARD F2.8377万D R 1.1)

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

    请参阅F2837xD_USBL_UG.pdf的1.1 操作模式部分

    "如果应用程序只需要在设备模式下运行,则有两个选项可用于控制设备模式的运行方式
    已输入。 USBStackModeSet()函数仍用于控制模式,但如果是应用程序
    需要将VBUS和ID用于其他目的,它可以使用eUSBModeForceDevice
    忽略这些PIN。 这种情况的影响是,应用程序不会收到USB断开连接的通知
    事件,因为它不再能监控VBUS。 这只是自供电的问题
    应用,可通过在单独的引脚上监控VBUS来处理。 如果应用程序需要
    接收断开事件,它必须将VBUS引脚连接到USB连接器,并保留ID引脚
    未连接。"

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这就是我们没有看到Discon中断的原因。

    我建议多阅读一下这份文件。

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

    您也可以在usbdenum.c.中查看USBDCDInit()函数

    需要为OTG (我们不支持它)设置设备,以便监控VBUS并生成断开中断。