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.

[参考译文] TM4C1294KCPDT:将 USB 代码从 TM4C129x 开发板移植到定制 TM4C1294KCPDT 板时遇到问题

Guru**** 2526730 points
Other Parts Discussed in Thread: TM4C1294KCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/800785/tm4c1294kcpdt-trouble-porting-usb-code-from-tm4c129x-development-board-to-custom-tm4c1294kcpdt-board

器件型号:TM4C1294KCPDT

我的 USB 代码在 TM4C129x 开发板上运行良好、但在基于 TM4C1294KCPDT 的定制电路板上无法正常工作。

直接的问题是、我没有获得 SOF 中断。 我确实会得到挂起和复位中断。

硬件似乎是正确的。 如果我擦除处理器闪存、系统会在器件管理器中作为 Stellaris 固件更新器件出现。

我假设开发套件上的 TM4C129XNCZADI 和电路板上的 TM4C1294KCPDT 之间存在配置差异、但我找不到任何可能的结果。

我应该在哪里查找此问题的原因?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Peter:
    我们的 USB 专家正在出差、因此可能会延迟响应。 同时、我建议您尝试以下操作。

    检查 USBIE 寄存器中的 SOF 位是否被使能以引起帧起始中断
    有几个 TivaWare USB 示例。 您能否在开发板和自定义板上尝试它们? 如果他们在开发板上工作、而不是在定制板上工作、则会让我认为问题与开发板有关。 您是否在定制板上运行的这些 TivaWare 示例中获得了 SOF 中断?
    3.您是否有 USB 分析仪来监控主机和设备之间的流量? 主机是否发送了正确的 SOF?
    4.当您没有收到 SOF 中断时、能否检查 USB 状态寄存器并查看是否遇到任何错误?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    感谢你的答复。 我在这里得到了一个很长的答复,我整天都在努力。 但是、在调查过程中、在撰写回复时、我已经"解决了"了问题!

    事实证明、TivaWare_C_Series-2.0.1.11577和 TivaWare_C_Series-2.1.4.178之间对 sysctl.c 的更新以某种方式破坏了 USB 时钟。 线索是 USB_IS 中 RESUME 位的注释、其内容为:

    '此中断只能在 USB 控制器的系统时钟被使能时使用。 如果用户禁用时钟编程、则应使用 USBDRRIS、USBDRIM 和 USBDRISC 寄存器。"

    这让我更接近系统时钟配置。 我发现这两个系统的 PLL 设置细节不同。 调试串行端口在两个系统上都能正常工作、这意味着系统时钟按预期以120 MHz 运行、因此我之前没有考虑过时钟配置。

    将 sysctl.c 的2.0.1.11577版本复制到基于2.1.4.178的构建中、并对其进行编译所需的微小更改、即可解决问题。 我们的定制板现在作为 USB 器件正确启动。

    不同 PLL 配置使 USB 混乱的原因仍然是一个谜。 我怀疑新配置可能存在时钟抖动问题、但我尚未确认。

    谢谢、Peter