我的 USB 代码在 TM4C129x 开发板上运行良好、但在基于 TM4C1294KCPDT 的定制电路板上无法正常工作。
直接的问题是、我没有获得 SOF 中断。 我确实会得到挂起和复位中断。
硬件似乎是正确的。 如果我擦除处理器闪存、系统会在器件管理器中作为 Stellaris 固件更新器件出现。
我假设开发套件上的 TM4C129XNCZADI 和电路板上的 TM4C1294KCPDT 之间存在配置差异、但我找不到任何可能的结果。
我应该在哪里查找此问题的原因?
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.
我的 USB 代码在 TM4C129x 开发板上运行良好、但在基于 TM4C1294KCPDT 的定制电路板上无法正常工作。
直接的问题是、我没有获得 SOF 中断。 我确实会得到挂起和复位中断。
硬件似乎是正确的。 如果我擦除处理器闪存、系统会在器件管理器中作为 Stellaris 固件更新器件出现。
我假设开发套件上的 TM4C129XNCZADI 和电路板上的 TM4C1294KCPDT 之间存在配置差异、但我找不到任何可能的结果。
我应该在哪里查找此问题的原因?
您好、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