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.

[参考译文] LP-MSPM0G3519:MCLK 时钟配置出现错误

Guru**** 2442090 points
Other Parts Discussed in Thread: MSPM0G3519, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1504397/lp-mspm0g3519-mclk-clock-configuration-gives-error

器件型号:LP-MSPM0G3519
主题中讨论的其他器件:MSPM0G3519SysConfig

工具/软件:

TI 团队大家好、

我在 MCU 时钟配置期间遇到了问题。 当 我尝试选择 MCLK 的时钟源 作为 HSCLK 时、我们可以在下图中看到、和 MCU 上的 i 闪存代码时、MCU 不会运行并进入不可预测的状态。 即使我不能 像以前那样刷新它。 我是否需要进行任何特定的设置?

根据技术参考手册、  SYSPLLCLK0  或  SYSPLLCLK2X  作为的来源  HSCLK  然后再设置  HSCLK  作为的时钟源  MCLK。 这是通过 MCU_HSCLKSrc 选择来完成的吗?

我正在选择  MCU_HSCLKSrc 如下:

我是否需要检查任何其他参数?

此致、

Rohidas Khurange

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

    您好 Rohidas、

    Unknown 说:
    根据技术参考手册、  SYSPLLCLK0  或  SYSPLLCLK2X  作为的来源  HSCLK  然后再设置  HSCLK  作为的时钟源  MCLK。 这是通过 MCU_HSCLKSrc 选择来完成的吗? [/报价]

    不可以、它由 MCU_PLLClock2HSCLK 配置。

    因为您不共享整个时钟配置。 我建议您遵循有关时钟的 MSPM0 MCAL 示例 MCU 配置、MCLK 也通过 SYSPLL 配置。 您可以使用以下配置进行测试。

    此致、

    Pengfei

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

    您好 Pengfei:

    目前、我正在使用 MSPM0 MCAL 示例 MCU 配置、并根据要求进行一些更改。

    我观察到系统 OSC 用作 PLL 的源、并且整个时钟系统正在 SYS_OSC 上工作。 在 CLK_OUT 引脚上、我观察到了不同的时钟:

    • ULPCLK :32MHz
    • MFPCLK :没有时钟

    我要将 PLL 时钟源从 SYSOSC 更改为 HFCLK。

    以下是完整配置。

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

    您好 Rohidas、

    使用我们的 MSPM0G3519 LaunchPad 进行测试或自己的电路板。 只需要确保振荡器正常工作。

    此致、

    Pengfei

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

    您好 Pengfei:

    是的、我使用  MSPM0G3519 LaunchPad 进行测试。

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

    您好 Pengfei:

    下面是更新后的配置。 我尝试使用 SYSPLL 的 CLK2X、其配置如下。 当我 在以下映像中的突出显示部分中选择 MCU_CLK_HSCLKSEL_PLL 时、MCU 将进入不可预测的状态。 如果将 MCU_CLK_HSCLKSEL_HFCLK 保持在突出显示部分中、则 MCU 正在运行、并且我可以在 ULPCLK 上观察40MHz。 我想使用80 MHz 上的 MCLK、请指导我进行以下配置。

    此致、

    Rohidas Khurange

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

    你好、 Rohidas Khurange

    当您 为 MCU_HSCLKSrc 选择 MCU_CLK_HSCLKSEL_HFCLK 时 、您直接使用外部 XTAL 振荡器(40MHz)作为 MCLK 和 ULPCLK 源、因此可以在 ULPCLK 上观察40MHz。 为了实现80MHz MCLK、 您需要选择 MCU_CLK_HSCLKSEL_PLL 作为 MCU_HSCLKSrc 来使用 syspll 模块。 您可以对配置 syspll 进行一些更改:

    1. Mcu_Sys PLLPDIV: MCU_CLK_SYSPLL_PDIV_NONE

    2. MCU_PLLClock2xDiv:MCU_CLK_SYSPLLCLKX2_DIV4

    3. MCU_ULPClockDivider: MCU_CLK_UL_UDIV_2

    实际上、您可以参考 SysConfig 的时钟树、以帮助了解这些参数的含义:

    此致、

    Pengfei

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

    您好 Pengfei:

    感谢您的意见。 我尝试了您的建议更改、但我无法实现 MCLK 到80MHz。 通过 EB Tresos 进行配置时是否有任何区别? 我使用 EB Tresos 进行 MCAL 配置。

    此外、我尝试在 PLL 的 PDIV 和 QDIV 中使用不同的值、但有时器件会进入不可预测的状态、需要花费大量时间进行故障排除并将电路板从这些状态中恢复。

    我正在 CLK_OUT 引脚上检查 ULPCLK、并且根据 ULPCLK、我假设 MCLK = ULPCLK x 2、因为 UDIV 是 MCU_CLK_UL_UDIV_2。 是否有任何其他方法来识别/检查 MCLK?

    此致、

    Rohidas

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

    您好 Rohidas、

    很抱歉我错过了一点:

    •  PLLQDIV 应设置为三 Mcu_Sys。 当设置为3时、它实际上是源时钟的4倍。

    我为80MHz 连接了正确的配置器、该配置器来自外部40MHz 振荡器。 您将观察 CLOCK_OUT 引脚的外部时钟输出的20MHz (来自 PA31的默认值、取决于您的端口设置)、即 ULPCLK 的2个分频器。 (ULPCLK 为 MCLK 的1/2、即40MHz、时钟输出为 ULPCLK 的1/2、由 MCU_externalClockDivider 确定)。

    e2e.ti.com/.../Mcu.xdm

    此致、

    Pengfei

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

    您好 Pengfei:

    感谢您的意见。 我能够实现80MHz PLL 输出并在 MCLK 下获得它。

    现在、我看到了不同的行为。 当通过 CCS 刷写 MSPM0G3519 LaunchPad 时、时钟和电路板正常运行。  

    但是、如果尝试使用同一电路板上的其他调试器(在本例中为 Trace32 - Lauterbach)重新刷写代码、则会进入硬故障状态。 原因可能是什么?

    时钟配置:

    HardFault 错误堆栈帧:

    此致、

    Rohidas  

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

    您好 Rohidas、

    访问错误的存储器可能会导致硬故障、例如程序跳转到错误地址或访问非32位对齐的变量。

    您能否看到硬故障处理程序从哪里输入? 我想您可以在调试硬故障之前检查堆栈存储器以查看 PC 值。

    此致、

    Pengfei

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

    您好 Pengfei:

    执行 Mcu_Syspll setting ()时发生硬故障,我们可以在下面的堆栈帧屏幕截图中看到:

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

    您好 Rohidas、

    我检查了时钟配置、认为看起来没有问题。

    如果您第二次使用 XDS110调试此工程、该问题会不会仍然发生?

    或者、仅当您使用 Trace32调试器进行调试时、才会出现问题?

    此致、

    Pengfei

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

    嗨、Pengfei、

    如果我多次使用 XDS110调试/刷写项目、并且没有发现任何问题。  

    但对于相同的工程、当我使用 Trace32调试器进行调试/闪存时、会出现问题。

    谢谢!

    Rohidas

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

    您好 Rohidas、

    明白。 实际上、显示的句子是 syspll 的通用寄存器配置代码。 该问题与 Trace32调试器相关。

    很抱歉、我没有使用此调试器、您可以改用 XDS110进行开发和调试吗?

    此致、

    Pengfei

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

    您好 Pengfei:

    我不明白这个问题。 您能详细说明一下吗?

    什么是 CCS/XDS110、以便在使用 XDS110时不会出现问题?

    谢谢!

    Rohidas

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

    您好 Rohidas、

    您可以执行以下步骤来调试该问题:

    1. 首先、请检查 Trace32调试或闪存是否导致硬故障、或者两者兼而有之。
    2. 通过 XDS110和 Trace32调试同一工程时、在程序运行之前停止。 读取和导出所有闪存数据,以比较使用这两个调试器之间是否有任何差异,特别是  Mcu_Syspll setting () 函数 place。
    3. 当使用 Trace32并调试工程时、在硬故障处理程序处停止、并检查以下寄存器:
      1. SP (栈指针):转到 SP 指向的 SRAM 地址。
      2. 在生成硬故障之前检查 PC (程序计数器)值。 在跳转到中断处理程序之前、CPU 将内核寄存器存储到堆栈中。 核心寄存器存储顺序可在以下网址找到: 异常条目  Cortex-M0+器件通用用户指南
      3. 查看反汇编代码并根据的 PC 值检查反汇编指令是什么 步骤 b.

    此致、

    Pengfei