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.

[参考译文] 具有 PLL 使能和放大器的 RTOS 引导模块 TM4C/E 高级时钟;PSYSDIV 失败

Guru**** 2464080 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/656051/rtos-boot-module-tm4c-e-advanced-clocking-with-pll-enable-psysdiv-fails

Thread 中讨论的其他器件:EK-TM4C1294XL

[引用 user="Daniel Vamos"]我有基于时钟函数的代码(ADC 相关内容),但我在 RTOS 包中找不到任何计时器示例

Daniel、您好!

我们有几个 ADC 序列发生器采样率@2MSPS、需要 为 SYSCLK 120MHz 正确配置 PLL 分频值。  尽管如此、很遗憾、最新的 TI-RTOS 启动模块未能实现任何此类目标。 事实上、为了   使用 TivaCtlSysClkFreqSet()来实现适当的 ADC 时钟速度、启动模块中的 TivaC/E 高级计时被禁用。 奇怪的是、ROV Boot 显示 输出 PLL=false、但 ADC 和 EMAC PHY 以正确的时钟 速度运行。     在 POR 之后、我们无法单独获取 RTOS TM4C 高级时钟来执行应用程序而不会快速产生故障。   在发生故障之前、应用程序似乎以缓慢的运动执行。  

  无论   将 PSYSDIV (SYSDIV) 作为典型设置进行2或2.5、在引导模块 TM4C 高级时钟从 PIOSC 转换到 MOSC 中的效果都不好。

祝你好运。

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

    BP101、

    您能否提供有关您看到的问题的更多详细信息?  包括 Tiva 器件类型、您使用的软件版本以及您从引导模块中删除的内容?  

    谢谢、
    Scott

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

    您好、ScottG、

    该 注释实际上 更多地与  另一个线程中的 NDK 时序问题相关、该线程也提到 ADC0配置。 点是    某些外设、例如 ADC 可能无法从 PIOSC 正确配置、此时 ADC 具有2MSPS 衍生 的32MHz 采样时钟或480PLL/15、因此可能会怀疑引导时钟发生故障 EK-TM4C1294XL MCU。 所有现有 的测试2.16.0.14 似乎都有所改进、尽管2.16.0.08   未能设置 PLL=true 或 PSYSDIV 位的值未设置为2、现在无法回忆。 我们在 main.c 中使用 Tivaware SysCtlClkFreqSet() 作为 WA 来使用 RTOS TivaC/E 高级计时。  

    使用 TivaC/E 高级时钟 来配置 SYSDIV/PLL 除数故障在 发出 BIOS_START 指令之前、应用程序就可以开始运行。 内核时钟需要 在执行(main.c)之前或在 RST 将 JMP 设置为 main 之前配置、而不是在 BIOS_start 之后配置。

    这个问题与现在使用 TI-RTOS 系统分析   器进行调试的大量已迁移 Tivaware 项目有关、因为在没有 RTOS 内核的情况下、似乎无法使用其他 XDC 工具。

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

    BP101、

    我们仍然不清楚您看到的具体问题、您尝试执行的操作以及您是否仍然看到该问题。  您能澄清一下吗:

    “所有现有测试2.16.0.14似乎都有所改进”…  这是否意味着您在升级到最新版本后已解决了问题?

    “使用 TivaC/E 高级计时来配置 SYSDIV/PLL 除数故障应用”。  具体而言、您看到了什么故障?  当你在 main()中调用 SysCtlClkFreqSet()时,你是否会看到这种情况?

    您在前面的帖子中说过“事实是必须删除启动模块中的 TivaC/E 高级计时”。  您能否澄清从引导模块中删除了哪些代码?

    是否可以列出您正在使用的引导模块配置设置?  以及调用 SysCtlClkFreqSet()时指定的参数?

    谢谢、
    Scott

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

    您好、ScottG、

    [引用 user="ScottG"]“所有现有测试2.16.0.14似乎都有所改进”…  这是否意味着您在升级到最新版本后已解决了问题?

    与早期版本 RTOS 时钟相同的问题。

    [引用 user="ScottG">具体而言、您看到了什么故障?  当你在 main()中调用 SysCtlClkFreqSet()时,你是否会看到这种情况?
    [/报价]

    总线故障精确似乎响铃、并且 SysCtlClkFreqSet() 修复 了 BIOS_start 函数发生错误的地方、必须假设 TivaC/E 计时 发生在 BIOS_start 函数之后?

    [报价用户="ScottG"]您能否说明您从引导模块中删除了哪些代码?

    似乎 TivaC/E 高级时钟将不会正确地将 ADC 外设配置为2Mbps 采样速率、如果它 在上述外设(如 BIOS_START)配置后执行、则会突然 结束 CPU 故障。

    [报价 USER="ScottG">您能否列出您正在使用的引导模块配置设置?  [/报价]

    [报价 USER="ScottG">您能否列出您正在使用的引导模块配置设置?  以及调用 SysCtlClkFreqSet()时指定的参数?  [/报价]

    G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、120000000); 

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

    BTW:TivaC/E 时钟 SYSCLK/2 (PSYSDIV)也会对 MCU 和 SysCtlClockFreqSet()进行故障配置(main.c)。 在 PISOC 期间,我们似乎无法获得运行 ADC0 2Mbps 时钟(32MHz)配置的 TivaC/E 时钟,这是我脑海中的问题。 这可能是错误的、因为许多 GPTM/PWM 外设也在(main.c)调用中的引导时进行配置。

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

    BP101、

    好的、感谢您提供的其他信息。

    引导模块的时钟设置是在 main ()之前很早完成的,并且在 BIOS_start()期间或之后没有额外的时钟源设置。  因此、无论发生什么导致异常的事件、它都不会在引导模块代码本身中发生。

    我不知道这些器件上 ADC 或其他外设的不同时钟限制,因此必须在其他人中循环以帮助解决这一问题...

    同时、您能否尝试找出异常发生的确切位置?  您能否尝试常见问题解答中列出的步骤: http://processors.wiki.ti.com/index.php/SYS/BIOS_FAQs#Exception_Dump_Decoding_Using_the_CCS_Register_View 

    我想,如果我们能够准确地确定异常的产生位置,那将是一个很大的步骤,可以找到问题的位置…

    谢谢、
    Scott

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

    [引用 user="ScottG"]引导模块的时钟设置在 main ()之前很早完成,[/quot]

    如果这是真启动模块、TivaC/E 时钟不应导致任何问题。

    过去向论坛报告 的引导模块 PLL 未设置为 true、并且调用 PSYSDIV 位未设置。 这两个都由 main.c 中 SysCtlClkFreqset()的 Tivaware 调用进行校正  ROV 现在显示输出 PLL=true。

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

    对于 选择或不选择高级配置的 TM4C/E 引导时钟模块、在 TI-RTOS-2.16.1.14中启用 PLL 并且 PSYSDIV 寄存器仍然没有固定。

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

    [引用 USER="ScottG">我想,如果我们能够准确确定异常的生成位置,这将是找到问题所在的一个重要步骤…
    [/报价]

    RTOS 为2.16.1.14时的奇怪 ROV 显示 PLL 被启用= true。  然而、SYSCTL 寄存器 PLL/PSYSDIV 位 值 却能说明整个情况。  测试了具有和不具有自动时钟配置的高级时钟、产生了相同的结果。 也许一件好事、Tivaware SysCtlClkFreqSet()在 TM4C/E 高级时钟被启用的情况下同时工作。  

    该主题的重点是揭示 RTOS 引导模块时钟源存在会影响 TM4C 外设时钟的问题 、例如 EMAC0、ADC0、PWM0等。  

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

    您好 BP101:

     很抱歉、我不清楚您所面临的根本问题是什么。  

    [引用 user="BP101"]在 PISOC 期间,我们似乎无法获取运行 ADC0 2Mbps 时钟(32MHz)配置的 TivaC/E 时钟,这是我脑海中的问题。

    是您尝试使用 PIOSC 实现的2MSPS。 我认为这是不可能的。 您只能使用 PIOSC 实现1MSPS。  

    PIOSC 可直接用于提供接近1MS/s 的转换速率 要使用 PIOSC、
    ADCCC 寄存器中的 CS 域需要设置为0x1、ALTCLK 域应设置为
    在备用时钟配置(ALTCLKCFG)寄存器中编程为0x0。

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

    当引导模块专门配置为执行此操作时、RTOS TM4C/E 高级时钟代码不会设置 SYSCTRL_RSCLKCFG 寄存器 PSYSDIV 位或 USEPLL 位。

    这就是 ADC 不工作的原因、而是在模块配置期间未使用 PIOSC 的原因。 根据启动模块上方的 ScottG 帖子、即使在 main.c 被执行之前、也会启动 TM4C/E 高级计时。 WA 是禁用无用的引导时钟并在 main.c 中使用 Tivaware SysCtlClkFreqSet()

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

    我进行了一些挖掘、似乎"Enable PLL Output"(启用 PLL 输出)设置是问题的原因。 如果您禁用该设置、我相信您会更幸运。

    我甚至不确定"启用 PLL 输出"设置的用途是什么。 "Bypass PLL"设置用于确定是否使用 PLL。 如果未选中"Bypass PLL"、则表示将使用 PLL。

    Alan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    MOSC 需要 PLL 输出使能位设置顺序来生成480MHz VCO。 当检查 TM4C/E 高级时钟并检查使能 PLL 输出时、ROV 确实会显示 PLL 输出被启用。

    那么、您认为标志是从您所说的内容向后工作的吗? 25MHz MOSC 需要主时钟树中的 PLL 输出、即使在 Tivaware 调用被置位时也是如此。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    该 PLL 输出使能禁用 PLL 块、但显示 PLL 的 ROV 已启用、因为它应该启用480MHz。 这与数据表上下文和其他 Tivaware 时钟集函数调用非常矛盾。