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.

[参考译文] TMS320F28377D:与设置 PLL 寄存器相关的闪存编程问题

Guru**** 2487425 points
Other Parts Discussed in Thread: UNIFLASH, C2000WARE, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1284940/tms320f28377d-issues-programming-flash-related-to-setting-pll-registers

器件型号:TMS320F28377D
主题中讨论的其他器件:UNIFLASHC2000WAREcontrolSUITE

您好!

我们面临与下面线程相同的问题、即无法对闪存进行编程(请参阅完整的日志)。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/753454/tms320f28377s-issues-programming-flash-and-setting-pll-registers

C28xx_CPU1:错误:(ERROR -1135 @ 0xC095)调试探针报告了一个错误。 确认调试探针配置和连接、重置调试探针、然后重试此操作。 (仿真包8.4.0.00006)
C28xx_CPU1:无法停止目标 CPU:(错误-1044 @ 0x0)调试探针报告了一个错误。 确认调试探针配置和连接、重置调试探针、然后重试此操作。 (仿真包8.4.0.00006)
C28xx_CPU1:错误:(ERROR -1135 @ 0xC095)调试探针报告了一个错误。 确认调试探针配置和连接、重置调试探针、然后重试此操作。 (仿真包8.4.0.00006)
C28xx_CPU1:尝试20次后无法确定目标状态
C28xx_CPU1:在断开连接之前从目标中删除调试状态失败。 程序存储器中仍可能嵌入了断点操作码。 建议您在连接前复位仿真器并在继续调试前重新加载程序
C28xx_CPU1:在闪存操作期间发生错误:无法读取0x0007026D@数据:目标未连接
C28xx_CPU1:在闪存操作期间发生错误:无法写入0x0005F444@数据:目标未连接

故障排除过程中的中断发生在我们能够使用 JTAG 连接至 DSP 时。 我们可以进入 RAM 中加载的程序、一切都运行正常、直到我们达到 设置 PLL 的指令、以便将 SYSCLK 增加到200MHz。

InitSysPll (XTAL_OSC、IMULT_20、FMULT_0、PLLCLK_BY_2);

因此、考虑到这一信息、我们使用 UNIFLASH 将闪存编程时钟降至约95MHz、然后能够对闪存进行编程。 我认为这不是一个解决方案、因为它以前从未发生过。 尽管这是一组新的定制板需要编程、但是设计多年来没有改变、我们也不习惯使用这种方法、尤其是编程后、基本上无法再通过 JTAG 连接到 DSP、并收到以下错误消息:

(来自 https://software-dl.ti.com/ccs/esd/documents/ccsv7_debugging_jtag_connectivity_issues.html)

无效的数据读回

此误差因故障类型而有很大差异、因此 CCS 和测试连接可以返回不同的结果。

所有情况的共同之处在于完整性扫描测试失败且数据无效- 此 e2e 论坛主题中对此进行了介绍。

一个示例是典型的停留在1或停留在零故障、这可能会通过两种方式表现:


连接到目标时出错:
(错误-233 @ 0x0)
JTAG IR 和 DR 扫描路径无法循环位、它们可能会损坏。
尝试扫描 JTAG 扫描路径失败。
目标的 JTAG 扫描路径似乎损坏了
停留在1或停留在零故障的线性调频脉冲。 

我认为这可能与同一问题有关。

我们监控所有的电源轨、还为 DSP 提供直接来自外部电源的电压、但没有任何效果。

在这一点上,我们正面临各种选择和想法,它对我们开展活动变得非常关键。

有人知道如何解决此问题吗? 我只看到了一个与之相关的主题。

感谢您的帮助、这是非常重要和关键的。

e2e.ti.com/.../8117.log.txt

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

    尊敬的 Laurent:

    所有新电路板都出现这种情况吗?  您是否可以尝试将某个器件从故障电路板替换为通过故障的电路板?

    谢谢。此致、

    瓦姆西  

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

    在少数几套板上确实会发生这种情况。

    我担心交换设备将是困难的、耗时和昂贵的(我们不能在内部做),我希望这将是最后的手段。

    我可以为故障排除提示补充的是、我能够进入频率时钟不大于40MHz 的 RAM 中加载的程序。 我正在使用 PLL 设置为 x4的内部 INTOSC2。  一旦我将 PLL 增加到5倍(50MHz)、器件在启用 PLL 后崩溃(闪存编程也使用 INTOSC2和 PLL)。

    我还将 JTAG 频率降低到了100KHz、但正如我预期的那样、这并没有改变结果。

    您能否说明频率升高时出现的物理现象? 我们应该寻找什么? 功率增大、噪声增大...

    感谢你的帮助。

    劳伦特

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

    尊敬的 Laurent:

    Unknown 说:

    您能否详细说明上述内容? 一些相关问题:

    1. 您的外部振荡器/晶体的频率是多少? 才能确保其符合规格。
    2. 您是说、即使是从 RAM 运行、一旦为200MHz 配置了 PLL、也会导致 JTAG 断开连接? 振荡器来实现的。
    Unknown 说:
    因此、考虑到这一点、使用 UNIFLASH、我们将闪存编程时钟降低到95MHz 附近、从而可以对闪存进行编程。 我认为这不是一个解决方案、因为它以前从未发生过。 尽管这是一组新的定制板需要编程、但是设计多年来没有改变、我们对这种方法感到不舒服、特别是编程后、基本上不能再通过 JTAG 连接到 DSP、并收到以下错误消息:

    出现上述情况时、您可以尝试按照以下应用手册中的步骤操作。 将器件置于等待引导模式可能允许您进行连接。

    https://www.ti.com/lit/spracf0 

    我可以添加到故障排除提示的是,我能够进入一个在 RAM 中加载的频率时钟不大于40MHz 的程序。 我正在使用 PLL 设置为 x4的内部 INTOSC2。  一旦我将 PLL 增加到5倍(50MHz)、器件在启用 PLL 后崩溃(闪存编程也使用带有 PLL 的 INTOSC2)。[/报价]

    上述内容听起来像是与电源相关的问题。 3.3V 和1.2V 电源轨的电流容量是否足以在所有工作条件下(闪存编程通常是一项更高的功耗任务)满足器件的要求。

    此致!

    凯文

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

    Laurent,

    同意 Kevin 的观点、这听起来像是与电源相关的问题。 我要确认的一点是、VDD 和 VDDIO 引脚上有什么去耦电容器?

    PLL 配置看起来不错(假定晶振频率为20MHz)。

    伊袋

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

    Kevin:

    • 您的外部振荡器/晶体的频率是多少? 才能确保其符合规格。
    • 您是说、即使是从 RAM 运行、一旦为200MHz 配置了 PLL、也会导致 JTAG 断开连接? 振荡器来实现的。
    [/报价]

    外部振荡器是规格范围内的20MHz 晶体、但要确保在 PLL 设置期间使用内部振荡器绕过了该外部时钟。

    正确、RAM 中的程序会一直执行、直到达到 InitSysPll (XTAL_OSC、IMULT_20、FMULT_0、PLLCLK_BY_2)指令、精确地说 是 PLL 启用指令 SYSPLLCTL1.PLLCLKEN。

    以上内容听起来像是与电源相关的问题。 3.3V 和1.2V 电源轨的电流容量是否足以在所有工作条件下(闪存编程通常是更高的功耗任务)满足器件的需求。[/报价]

    为确保实现这一点、我们将3.3V 和1.2V 电压直接连接到实验室电源、因为我们认为这是个问题。

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

    每个3.3V VDDIO 和每个1.2V VDD 都有一个100nF 的电容器。

    我们应该关注哪种电源轨?

    VDDIO、VDD、VDDOSC、VDD3VFL……是否全部?

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

    这些电容很大、需要确保仍在满足电源时序/斜升速率要求。 每个电源轨仅需20uF 大容量电容器。

    还有一个问题--您是否已从较旧的 SDK (例如 controlSUITE)更改为较新的 C2000Ware? 我们过去曾遇到过器件支持接头未正确迁移的问题、这会导致配置 PLL 时出现故障。 (但是、这不应影响 UNIFLASH、因此我仍然认为很可能存在与电源相关的问题)。

    伊袋

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这些都是巨大的电容,需要确保仍能满足电源定序/斜升速率要求。 每个电源轨仅需20uF 大容量电容。

    我们使用的值与原型设计所用的开发板相同。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    出现上述情况时,您可以尝试按以下应用手册中的步骤操作。 将设备置于等待引导模式可能允许您进行连接。

    我想在 RAM 的0xD00位置更改这个值、但我甚至无法在 CCS 中连接到目标以访问它。  

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

    尊敬的 Laurent:

    您是否关注 全部 应用手册中的步骤来尝试连接到器件、或者您是否在任何步骤中卡住? 您是否已验证上电后 XRSn 的状态为高电平?

    此致!

    凯文

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

    Kevin 老师好!

    我尝试过,但我坚持在这一步, XRST 应该保持高. 我们收到此错误消息、无法连接到目标:

    不过我注意到了一些奇怪的事情。 尽管、TRST 引脚为高电平、但是 XRST 在6ms 的周期内会发出高电平和低电平脉冲、因为我们不维修看门狗。 我的理解是、当我们与 JTAG 连接时、TRST 将为高电平、并会阻止 DSP 复位。  

    我们在 TRST 上有一个下拉电阻器。

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

    Laurent,

    只是想多检查几件事:

    -您的引导模式引脚是如何配置的? 如果您尝试将器件置于 SCI 引导模式、是否能够连接 闪存并对其进行编程?

    -您刚才提到100nF 电源电容器。 请尝试减小这些电容、因为它们绝对太大。 我们的建议值为20uF。

    此致、
    伊袋

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

    引导模式当前配置为 GET/Flash。 我将尝试 Wait 或 SCI、然后我会告诉您。

    您是否建议将所有100nF 去耦电容器从100nF 替换为20uF (不是100nF 已经小于20uF)? 还是您说它们的总和不应超过20uF?  

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

    Laurent,

    抱歉、出于某种原因我让我的单位交叉了、不知何故我的思维把 n 翻译成 m。100nF 太小了。 电源上的最小大容量电容器为10uF、但建议使用20uF。 应在每个引脚上放置100nF 的小电容器、但除此之外还需要20uF 的大容量电容器。 这适用于 VDD 和 VDDIO 电源轨。

    此致、
    伊袋

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

    因此、我们将引导电阻器更改为引导进入"等待模式"、这有助于连接到目标。 似乎在低频对电路板进行编程后、软件会触发 DSP 崩溃、一旦编程完成、  InitSysPll () 指令被执行。

    我们在所有电源轨(VDDIO、VDD、VDDOSC、VDD3VFL)上将大容量电容器增加到20uF、但没有改善。

    我们仍在调查可能会干扰电源轨的情况、我们欢迎提供任何建议以便我们解决此问题。

    非常感谢您的帮助。

    此致、

    劳伦特

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

    您好,Laurent

    请在写入 SYSPLLMULT 之后的 InitSysPll ()中放入一个断点。 您能展示以下寄存器的内容吗:

    • CLKSRCCTL1
    • SYSPLLCTL1
    • SYSPLLMULT
    • SYSPLLSTS
    • MCDCR
    • X1CNT

    谢谢。
    伊袋

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

    以前:

    之后

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

    谢谢 Laurent。 看起来 PLL 寄存器正在成功写入并且 PLL 正在被锁定。 因此、当 SoC 的其余部分切换到 PLL 输出时、就会发生该问题。 这也表明存在与电源相关的问题(高频=高功耗)。 此时、我们可能希望看到电路板原理图以帮助进一步诊断问题。

    此外、它是否已在多个单元上进行过测试、以及您是否对电路板和 MCU 单元进行了任何 A/B 测试?

    此致、
    伊袋

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

    让我与管理层核实一下、但我想我将接受您的提议、检查原理图、因为我们在过去两周内尝试了很多事情、但我们很困。

    我们与 TI 签订了 NDA、如果您不介意、我会将这次对话转移到与您的私人聊天中!

    非常感谢。

    劳伦特