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.

[参考译文] RTOS/TMS320F28069:如何将 TMS320F28069U 时钟系统配置为在 SYSBIOS 项目中从外部晶体振荡器运行

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/774303/rtos-tms320f28069-how-to-configure-tms320f28069u-clock-system-to-run-from-external-crystal-oscillator-in-a-sysbios-project

器件型号:TMS320F28069
主题中讨论的其他器件:C2000WARESYSBIOSTMDSCNCD28069ISO

工具/软件:TI-RTOS

我们将 SysBIOS 和 C2000Ware_1_00_06_00头文件用于包含 TMDSCNCD28069ISO 的项目。 我们需要从控制卡的外部20MHz 振荡器运行时钟源、我们在实现这一目标时遇到了困难。 SysBIOS 引导实用程序虽然简洁,但似乎没有提供足够的灵活性来实现所有设置。 我们认为我们需要使用头文件包 F2806x_sysctrl.c 中的 SYSBIOS 和 InitSysCtrl()的组合。 请确认。

 F2806x_sysctrl.c 文件包含的函数可用于对时钟发生器执行任何可能需要执行的操作。 例如,有一个名为 XTALOscSel()的函数可用于切换到外部20MHz 晶体源。  

然而当我们调用 XTALSSEL()时,当调试器在我们的项目没有源代码的地址的 Estop 指令处停止时,处理器似乎进入了一个故障状态。 这在执行该指令(SysCtrlRegs.CLKCTL.bit.XTALOSCOFF = 0)后立即发生、即使代码在这之前使用了 EALLOW 也是如此。  在 BIOS 初始设置时钟后,是否有其他阻止用户运行 XTALOscSel()的东西? 请举例说明如何做到这一点。

我们已经尝试了许多调用此函数的组合、但都以相同的方式失败。 下面是我们尝试调用 XTALOscSel()的一些方法:

  • 默认情况下,允许 SYSBIOS 引导模块禁用看门狗并配置 PLL,但随后从 main()上下文调用 XTALOscSel()。 如上所述、此操作失败。
  • 允许 SYSBIOS 引导模块禁用看门狗,但不配置 PLL,然后从 main()上下文调用 XTALOscSel()。 如上所述、此操作失败。
  • 完全删除 SYSBIOS 引导模块并插入禁用看门狗并调用 XTALOscSel()的用户复位挂钩函数。 如上所述、此操作失败。

-Ruben

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

    在引导模块中禁用 PLL 配置应消除任何可能与 InitSysCtrl()中的时钟配置冲突的时钟配置。 您能否判断是由 SysCtrlRegs.CLKCTL.bit.XTALOSCOFF = 0导致崩溃,还是紧接着出现的 DELAY_US()?

    DELAY_US()看起来更有可能出现的问题,因此我现在假设是这样。 DSP28x_usDelay()函数需要从 RAM 中执行。 您能否确保使用 memcpy 将 ramfuncs 移动到 RAM 中?

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

    Whitney、

    我将对此进行仔细检查并报告。 您的建议似乎合理。

    一件奇怪的事情是、我似乎无法阻止 SYSBIOS 对 PLL 进行编程。 我已从我的配置文件中删除了 SYSBIOS 引导模块、但我可以单步执行引导序列、我看到 boot_cg。asm 代码调用 XDC 启动复位代码(LCR _XDC_Runtime_Startup_reset_I)、这会禁用看门狗并对 PLL 进行编程。 请参阅以下代码的屏幕截图。 我正在连接 SYSBIOS 配置文件。 请查看并告诉我如何控制 SYSBIOS 是否执行此操作。

    e2e.ti.com/.../app.zip

    R、

    Ruben

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在您的 cfg 文件中看不到任何引导模块配置。 我认为您需要启用引导模块才能禁用 PLL 配置。

    在我将行 Boot.configurePll=false 添加到我的示例项目后、configurePll2802x 函数就会为我删除。

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

    好的、感谢您查看此内容。 我想我们将 BIOS PLL 配置代码保留在这里、然后在我们进入 main 后使用头文件重新配置。 此外、您也认为我们没有 ramfuncs 段的 memcopy 是正确的、这导致了错误。 再次感谢。