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.

[参考译文] LAUNCHLL-F2.8377万S:F2.8377万S上的USB_DEP_BULK示例存在问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/572487/launchxl-f28377s-problem-with-usb_dev_bulk-example-on-the-f28377s

部件号:LAUNCHXL-F2.8377万S

您好!

我正在尝试获取带有LaunchpadXL-F2.8377万S的USB_dev_Bulk示例,以便在Windows 10 x64上工作。 我还应注意, 我使用的是经过修改的电缆,其中D+,D-和GND直接连接到引脚9 (GPIO43),引脚10 (GPIO42)和GND。

到目前为止,我可以让Windows识别已插入的内容,但它只被识别为"未知USB设备(设备描述符请求失败)"。 在浏览此论坛时,我遇到了关于同一问题的各种其他主题,但使用的设备不同。 大多数问题似乎归结于与驾驶员相关的事项。 下面是我到目前为止尝试过的一系列操作:

  • 关闭驱动程序签名强制

  • 设备管理器中的设备->更新驱动程序->选取文件夹"...\DEVICE_support\F2837xS\V210\F2837xS_common\windows_drivers"。2837。 结果:Windows显示已安装了最佳驱动程序。

  • 更新驱动程序,并特别选择usb_dev_bulk.in 结果:

  • 按windows+R,打开open hdwwwiz,然后打开usb_dev_bulk.in 结果:现在可以安装驱动程序,此后,驱动程序出现在“Device Manager (设备管理器)”中,但仍然无法正常工作。

  • 我还使用 ti.com/tool/SW-TM4C上的TivaWare 2.1 Tm3驱动程序包尝试了上述操作

  • 通过此线程(e2e.ti.com/support/microcontrollers/c2000/f/171/t/554848)55.4848万), 我的芯片的双核版本V210中有一个错误。 但是,即使在应用建议的修复程序并尝试V200,v190和V160之后,它仍然不起作用

  • 我可以在UINT32_t RxHandler(void *pvCBData, UINT32_t ui32Event, UINT32_t ui32MsgValue,void *pvMsgData)的开头设置断点。 在将设备插入断点后,只会触发一次,数据如下所示:

pvCBData = 0x8400

pvMsgData = 0x0

ui32Event =7 (USB_EVENT_SUSPEND)

ui32MsgValue = 0xA53C

对我来说,数据实际上是被发送的,电缆和硬件端口应该正常。  

  • 我还尝试在另外两台PC (一台装有Win10 x64,另一台装有Win8 x64)上运行它。 不幸的是,现在我没有在x86计算机上运行它的权限,因为我开始怀疑驱动器RIS在x64上不兼容,或者我是否错过了其他内容?

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

    我又回来了,令人惊讶的是,这不是驱动程序问题。

    我再次浏览了源代码,并在USB_DEP_BULLG.c中查看了470行的计时部分

    系统控制器ClockSet(sysctl_OSCSRC_XTAL | sysctl_PLL_enable | sysctl_IMULT(20)| sysctl_SYSDIV(2));
    SysAutxClockSet(sysctl_OSCSRC_XTAL | sysctl_PLL_enable | sysctl_IMULT(12)| sysctl_IMULTxsctl_sd 

    据我所知,它假定连接了一个外部15MHz振荡器,但(对我来说)情况并非如此。

    所以我更改了代码,用内部10MHz晶体进行初始化:

    SysClockSet(sysctl_OSCSRC_OSC2 | sysctl_PLL_enable | sysctl_IMULT(20)| sysctl_SYSDIV(1));
    SysAuxClockSet(sysctl_OSCSRC_sctl2| sysctl_PLL_enable | sysctl_IMULT(12)| sysctl_OSCIMULT3; sysd
    
    

    很遗憾,这没有帮助。

    然后我开始玩转,通过表达式窗口稍微修改一下数字,看看我是不是刚刚离开了...它是有效的。

    经过一个多星期的令人沮丧的调试,成功检测到的硬件的声音从未如此甜蜜:D

    用于测试连接的主机应用程序(USB_BLICK_Example.exe)也可以工作。

    最终代码应如下所示(请注意第二行中IMULT的13):

    SysClockSet(sysctl_OSCSRC_OSC2 | sysctl_PLL_enable | sysctl_IMULT(20)| sysctl_SYSDIV(1));
    SysAuxClockSet(sysctl_OSCSRC_sctl2| sysctl_PLL_enable | sysctl_IMULT(13)| sysctl_OSC3; 

    但是,将这些数字插入spruhx5c-TRM.pdf的2.7 .6.1 部分中的公式中,就会得到65MHz的频率,因此会出现一些问题...

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

    该代码假定20 MHz的外部晶体,这是我们在演示板上所拥有的。 内部10 MHz振荡器不够精确,不适合USB。 全速USB要求振荡器容差<USB 0.25 %。

    SYSCLK频率限制不允许振荡器容差,因此如果您使用内部振荡器,则需要将目标对准略低的值。 TRM (时钟配置示例)的章节2.7 .6.4 提供了一个示例。

    辅助时钟分配器仅支持/1,/2,/4或/8值。 您的3被四舍五入到2,即如您所说的65 MHz。 振荡器可能在低于额定频率的情况下运行,因此AUXPLLCLK的结果刚好接近60 MHz,以使USB工作。