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.

[参考译文] AM5706:AM5706:DPLL_ABE 无法在温度高于 50°C 时锁定

Guru**** 2942040 points

Other Parts Discussed in Thread: AM5706

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1649437/am5706-am5706-dpll_abe-fails-to-lock-with-temperature-above-50-c

部件号: AM5706

您好:

我们有自己的基于 AM5706BCBDJ 和 TPS659163RGZR 的定制设计。 当 AM5706 温度超过大约 50°C 时、我们的某些电路板会出现 DPLL_ABE 初始化问题。 这种行为引起了人们对 AM5706 可靠性的担忧、尽管进行了广泛的调查、但我们仍无法解决这一问题。 我想与您联系、看看您是否对我们可以尝试的其他内容有任何建议。

AM5706 温度通过读取内部温度传感器 (MPU、GPU、CORE、DSPEVE 和 IVA) 进行测量。

  • 当温度低于~50°C 时、DPLL_ABE 在上电期间正确初始化、CM_IDLEST_DPLL_ABE 寄存器显示 “快速重新锁定停止“CM_IDLEST_DPLL_ABE = 0x00000002
  • 当温度高于~50°C 时、DPLL_ABE 无法初始化、寄存器保持在 “瞬态状态“CM_IDLEST_DPLL_ABE = 0x00000000

当电路板在温度高于~50°C 的情况下上电并且寄存器读数为 0 时、任何软件干预(不同的初始化序列,延迟等)都不能更改 CM_IDLEST_DPLL_ABE 的值。

在我们的二级引导加载程序中、该寄存器在 main() 的入口点已包含 0。 在 main () 之前执行的代码与 pdk_AM57xx_1_0_15 中的 sbl_init.S 和 sbl_startup.c 文件相同(我们将它们直接复制到我们的工程中)。 由于这个问题在这个早期阶段已经存在、我们认为它是与硬件相关的问题、而不是与软件相关的问题。

我们仔细测量了上电顺序、以确保其满足数据表要求。


image.png

image.png

请注意、波形中 XI_osc0 信号显示为稳定线、因为它显示了实际 20MHz 时钟的平均值。  对于 20MHz 时钟源、我们的 SYSBOOT [9:8]引脚配置为“0b01“。

我们还使用频谱分析仪验证了 20MHz 时钟的质量、并尝试了不同的振荡器、但没有成功。 下面是在出现 DPLL_ABE 问题的电路板上测量的 20MHz 振荡器的频谱。

我们还测量了为 DPLL_ABE 供电的 AM5706 焊球的电流消耗。 在我们的电路板上、VDDA_MPU_ABE 和 VDDA_PER 连接在一起。 我们插入了一个 10R 分流电阻器并使用 INA280A2 测量了电流。


image.png

~的波形(黄色迹线)在 K16+L16+M10 上显示 Δ V 4.8mA。 遗憾的是、对于正常情况和故障情况(温度< 50°C 和> 50°C)、电流波形基本相同、即使在从不显示该问题的电路板上也是相同的。

VDDA_MPU_ABE_PER_Legend.png

到目前为止、我们的所有测量结果看起来都是正确的、并且与数据表一致:

  • 上电顺序符合 AM5706 要求
  • 通过 SYSBOOT [9:8]= 0b01 正确选择 20MHz 时钟
  • 时钟在 PORZ 之前很稳定且存在(超过 5ms、符合图 5-5 中的注释 7)
  • 时钟精度明显优于±50ppm
  • VDDA_MPU_ABE + VDDA_PER 电流为 4.8mA 并在整个温度和电路板范围内保持一致
  • 由同一电源域供电的其他 PLL (DPLL_MPU 和 DPLL_PER) 在高温下会初始化而不会出现问题
  • AM5706 的其余部分通常在 50°C 以上运行

唯一失败的部分是内核温度高于~50°C 时的 DPLL_ABE 上电初始化。

我们的第二块电路板也显示了此问题、但在 45–60°C 范围内故障发生的频率要高得多。 下图显示了温度变化时多次下电上电。 红线(Y 轴)表示 DPLL_ABE 初始化失败的次数、而时间和温度变化位于 X 轴上。

image.png

此外、我尝试在 DPLL_ABE 问题处于活动状态时将 JTAG 连接到电路板。 之前、连接到 Cortex-A15 内核(运行 GEL 脚本)会将 IDLEST 寄存器从 0x0 更改为 0x10。 我尝试了手动配置 DPLL_ABE 并将其锁定为该状态、但寄存器保持在 0x10。

现在、行为发生了变化、我不确定原因。 当我通过 JTAG 连接时:

  • 如果在 Cortex-A15 上运行的代码包含一个持续读取 ILEST 寄存器的 while 循环、则值从 0 变为 0x02
  • 如果代码未访问 ILEST 寄存器、则从 0 更改为 0x0A

 

对于我还可以测量什么或者试图推进调查、并确定在温度高于 50°C 的上电初始化期间 DPLL_ABE 为什么会失败、您有什么建议吗?

谢谢你

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

    很抱歉晚才回复。

    如果此主题仍然打开、请读出以下寄存器:

    CM_CLKMODE_DPLL_ABE 0x4A0051E0
    CM_IDLEST_DPLL_ABE 0x4A0051E4
    CM_AUTOIDLE_DPLL_ABE 0x4A0051E8
    CM_CLKSEL_DPLL_ABE 0x4A0051EC
    CM_DIV_M2_DPLL_ABE 0x4A0051F0
    CM_DIV_M3_DPLL_ABE 0x4A0051F4

    Kevin

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

    还有一个问题:这些结果是否基于 DPLL_EN = 0x7:在锁定模式下启用 DPLL

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

    下面是 main () 入口点以及尝试锁定 DPLL_ABE (DPLL_EN = 7) 后捕获的寄存器值。 这两种情况的值均为:未发生 DPLL_ABE 问题时(温度≤46°C)和确实发生时(温度≥47°C)。

     温度≤46°C、DPLL_ABE 时的寄存器值 能够锁定

    屏幕截图:

    文本副本:

    ========== 次级引导加载程序=========
    main() 入口点处的 DPLL_ABE 寄存器:
    CM_CLKMODE_DPLL_ABE:0x5
    CM_IDLEST_DPLL_ABE:0x2.
    CM_AUTOIDLE_DPLL_ABE:0x0
    CM_CLKSEL_DPLL_ABE:0x800000
    CM_DIV_M2_DPLL_ABE:0x1
    CM_DIV_M3_DPLL_ABE:0x1
    CM_SSC_DELTAMSTEP_DPLL_ABE:0x0
    CM_SSC_MODFREQDIV_DPLL_ABE:0x0
    CM_CLKSEL_ABE_PLL_REF:0x0
    CM_CLKSEL_ABE_PLL_BYPAS:0x0
    CM_CLKSEL_ABE_PLL_SYS:0x0
    CM_CLKSEL_ABE_24M:0x0
    CM_CLKSEL_ABE_SYS:0x0
    CM_CLKSEL_ABE_CLK_DIV:0x0
    CM_CLKSEL_ABE_GICLK_DIV:0x0
    CM_CLKSEL_PER_ABE_X1_CLK_CLKOUTMUX:0x0
    CM_CLKSEL_ABE_LP_CLK:0x0
    DPLL_ABE 锁定之后的 DPLL_ABE 寄存器:
    CM_CLKMODE_DPLL_ABE:0x7
    CM_IDLEST_DPLL_ABE:0x1f
    CM_AUTOIDLE_DPLL_ABE:0x0
    CM_CLKSEL_DPLL_ABE:0x800200
    CM_DIV_M2_DPLL_ABE:0x801
    CM_DIV_M3_DPLL_ABE:0x1
    CM_SSC_DELTAMSTEP_DPLL_ABE:0x0
    CM_SSC_MODFREQDIV_DPLL_ABE:0x0
    CM_CLKSEL_ABE_PLL_REF:0x0
    CM_CLKSEL_ABE_PLL_BYPAS:0x0
    CM_CLKSEL_ABE_PLL_SYS:0x0
    CM_CLKSEL_ABE_24M:0x0
    CM_CLKSEL_ABE_SYS:0x0
    CM_CLKSEL_ABE_CLK_DIV:0x0
    CM_CLKSEL_ABE_GICLK_DIV:0x0
    CM_CLKSEL_PER_ABE_X1_CLK_CLKOUTMUX:0x0
    CM_CLKSEL_ABE_LP_CLK:0x0
    CTRL_CORE_TEMP_SENSOR_CORE:46.260 摄氏度

     温度≥47°C 时的寄存器值、在本例中、DPLL_ABE 保持瞬态状态、直到下一次下电上电

    屏幕截图:

    文本副本:

    ========== 次级引导加载程序=========
    main() 入口点处的 DPLL_ABE 寄存器:
    CM_CLKMODE_DPLL_ABE:0x5
    CM_IDLEST_DPLL_ABE:0x0
    CM_AUTOIDLE_DPLL_ABE:0x0
    CM_CLKSEL_DPLL_ABE:0x800000
    CM_DIV_M2_DPLL_ABE:0x1
    CM_DIV_M3_DPLL_ABE:0x1
    CM_SSC_DELTAMSTEP_DPLL_ABE:0x0
    CM_SSC_MODFREQDIV_DPLL_ABE:0x0
    CM_CLKSEL_ABE_PLL_REF:0x0
    CM_CLKSEL_ABE_PLL_BYPAS:0x0
    CM_CLKSEL_ABE_PLL_SYS:0x0
    CM_CLKSEL_ABE_24M:0x0
    CM_CLKSEL_ABE_SYS:0x0
    CM_CLKSEL_ABE_CLK_DIV:0x0
    CM_CLKSEL_ABE_GICLK_DIV:0x0
    CM_CLKSEL_PER_ABE_X1_CLK_CLKOUTMUX:0x0
    CM_CLKSEL_ABE_LP_CLK:0x0
    DPLL_ABE 锁定之后的 DPLL_ABE 寄存器:
    CM_CLKMODE_DPLL_ABE:0x7
    CM_IDLEST_DPLL_ABE:0x0
    CM_AUTOIDLE_DPLL_ABE:0x0
    CM_CLKSEL_DPLL_ABE:0x800200
    CM_DIV_M2_DPLL_ABE:0x1
    CM_DIV_M3_DPLL_ABE:0x1
    CM_SSC_DELTAMSTEP_DPLL_ABE:0x0
    CM_SSC_MODFREQDIV_DPLL_ABE:0x0
    CM_CLKSEL_ABE_PLL_REF:0x0
    CM_CLKSEL_ABE_PLL_BYPAS:0x0
    CM_CLKSEL_ABE_PLL_SYS:0x0
    CM_CLKSEL_ABE_24M:0x0
    CM_CLKSEL_ABE_SYS:0x0
    CM_CLKSEL_ABE_CLK_DIV:0x0
    CM_CLKSEL_ABE_GICLK_DIV:0x0
    CM_CLKSEL_PER_ABE_X1_CLK_CLKOUTMUX:0x0
    CM_CLKSEL_ABE_LP_CLK:0x0
    CTRL_CORE_TEMP_SENSOR_CORE:47.68 摄氏度

    随附的文件“code.c“包含 SBL 的摘录:

    e2e.ti.com/.../2555.code.c

    从“code.c“中可以看到、DPLL_ABE 寄存器在 main () 函数的开头捕获、然后 AVS 电压设置为 A15 和 C66x 内核、然后 PLL 被初始化。

    对于 DPLL_ABE、其为:

    abePllcParam.mult = 0x02U;
    abePllcParam.div = 0x00U;
    abePllcParam.divM2 = 1U;
    abePllcParam.divM3 = 1U;
    pllcAbeUnlock ();             // CM_CLKMODE_DPLL_ABE = 5
    pllcAbeConfigure (&abePllcParam);
    pllcAbeLock();               // CM_CLKMODE_DPLL_ABE = 7

    DPLL_ABE 寄存器在 DPLL_ABE 初始化后再次被捕获。

    比较低于/高于温度翻转点~46/LCD 时的情况 47°C

    当温度≤46°C 时、DPLL_ABE 正确初始化为 “快速重新锁定停止“ 模式、CM_IDLEST_DPLL_ABE 报告 0x2、设置 DPLL_EN = 7 成功锁定 PLL、从而导致 CM_IDLEST_DPLL_ABE = 0x1F (ST_DPLL_CLK = 1)。

    main() 入口点处的 DPLL_ABE 寄存器:
    CM_IDLEST_DPLL_ABE:0x2.
    DPLL_ABE 锁定之后的 DPLL_ABE 寄存器:
    CM_IDLEST_DPLL_ABE:0x1f

    当温度≥47°C 时、DPLL_ABE 在上电期间无法初始化、CM_IDLEST_DPLL_ABE 保持在 “瞬态状态“、并且设置 DPLL_EN = 7 不会锁定 PLL、从而导致 CM_IDLEST_DPLL_ABE = 0x0 (ST_DPLL_CLK = 0)。

    main() 入口点处的 DPLL_ABE 寄存器:
    CM_IDLEST_DPLL_ABE:0x0
    DPLL_ABE 锁定之后的 DPLL_ABE 寄存器:
    CM_IDLEST_DPLL_ABE:0x0

    应用超时和/或重试 设置 DPLL_EN = 7 没有任何帮助。 我找到了两种方法、只能  在 CM_IDLEST_DPLL_ABE 值保持在 “瞬态“状态后更改该值:  

     -要关闭电路板电源,让温度降至 47°C 以下,然后再通电

     -通过 JTAG 执行连接到内核(CortexA15_0 内核或 C66xx_DSP 内核)的 GEL 脚本。 似乎连接到哪个核心无关紧要。 重要的是让执行 OnTargetConnect () 函数。

    当 CM_IDLEST_DPLL_ABE  在温度≥47°C 时保持在“瞬态“、将 JTAG 连接到内核会将 CM_IDLEST_DPLL_ABE 的值更改为某些值 0x02、0x0A、0x10。 如今、它更改为值 0x10。 我捕获了完整的寄存器转储、如果这样可以帮助您:

    温度 54°C 下的完整寄存器转储、DPLL_ABE 以 CM_IDLEST_DPLL_ABE = 0x0 启动、 JTAG 连接到 CortexA15_0 内核后、 CM_IDLEST_DPLL_ABE 自行更改为 0x10

    e2e.ti.com/.../AM5706_5F00_Register_5F00_Dump_5F00_54deg.zip

    温度 35°C 下的完整寄存器转储、DPLL_ABE 以 CM_IDLEST_DPLL_ABE = 0x2 启动、在 DPLL_EN = 7 后 DPLL_ABE 成功锁定且 CM_IDLEST_DPLL_ABE  包含 0x1F。 将 JTAG 连接到 CortexA15_0 内核 对 CM_IDLEST_DPLL_ABE 值没有影响。

    e2e.ti.com/.../AM5706_5F00_Register_5F00_Dump_5F00_35deg.zip

     

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

    您的工作电压非常接近指定范围的底部。  你能尝试一个位于中间位置的地方 吗——比如 200MHz 或者带分频的 400MHz 吗?  

    Kevin

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

    我尝试用较低的 N 值设置不同的 DPLL_ABE 频率、但它们没有任何帮助:

    F = 100MHz、CLKIN = 20MHz、M = 5、N = 0

    F = 200MHz、CLKIN = 20MHz、 M = 10、N = 0

    f = 300MHz、CLKIN = 20MHz、 M = 15、N = 0

    F = 400MHz、CLKIN = 20MHz、 M = 20、N = 0

    f = 200MHz、CLKIN = 20MHz、 M = 100、N = 9

    f = 200MHz、CLKIN = 20MHz、 M = 140、N = 13

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

    您 是否还可以读取 CM_CLKSEL_ABE_PLL_REF (0x4AE0 610c)?
    这是单个单元问题还是一般问题?

    Kevin

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

    抱歉缩短日志。 下面是完整日志+添加了 CTRL_CORE_Bootstrap。 如果您希望捕捉 M+N 的特定组合、请告诉我。

    到目前为止、我们有两块涉及此 DPLL_ABE 问题的板、一块于 2021 年制造、另一块于 2025 年制造。

    F = 100MHz、CLKIN = 20MHz、M = 5、N = 0

    f = 300MHz、CLKIN = 20MHz、 M = 15、N = 0

    f = 200MHz、CLKIN = 20MHz、 M = 100、N = 9