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.

[参考译文] TM4C1290NCZAD:在加载固件后禁用主振荡器配置、无法对电路板重新编程

Guru**** 2506465 points
Other Parts Discussed in Thread: TM4C1290NCZAD, EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1039405/tm4c1290nczad-unable-to-re-program-the-board-after-loading-the-firmware-with-configuration-of-main-oscillator-disabled

器件型号:TM4C1290NCZAD
主题中讨论的其他器件: EK-TM4C1294XLDK-TM4C129X

尊敬的先生/女士:

请为以下问题提供解决方案:

 我们将 TM4C1290NCZAD 用于我们的项目。

我们已添加外部晶振32.768kHz、用于在电路板中使用休眠模块。

我们已使用以下时钟配置对电路板进行了配置:

SysCtlClockFreqSet (((SYSCTL_OSC_EXT32 | SYSCTL_USE_OSC | SYSCTL_MAIN_OSC_DIS | SYSCTL_CFG_VCO_480)、40000000);

之后、我们无法对器件进行重新编程。 我们已经通过使用 RESET 引脚、断电/开启尝试了所有可能。 但 JTAG 未检测到电路板。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="499651" URL="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1039405/tm4c1290nczad-unable-to-re-program-the-board-after-loading-the-firmware-with-configuration-of-main-oscillator-disabled "]

    我们已使用以下时钟配置对电路板进行了配置:

    SysCtlClockFreqSet (((SYSCTL_OSC_EXT32 | SYSCTL_USE_OSC | SYSCTL_MAIN_OSC_DIS | SYSCTL_CFG_VCO_480)、40000000);

    [/报价]

    您希望以何种系统时钟频率运行器件?

    当   SysCtlClockFreqSet()调用中的 ui32SysClock 参数为 40000000 (40MHz)时,当使用 休眠 32.768kHz 时, 会忽略 ui32SysClock 参数,系统时钟频率将为 32.768kHz。 数据表中的下表显示 RTCOSC 不具有驱动 PLL 的能力:

     表26-12也有以下说明。 数据表的 JTAG 特性:

    这意味着要使用 JTAG、系统时钟频率必须至少是 JTAG TCK 频率的8倍。

    因此、当系统时钟频率为32.768KHz 时、可使用的最大 JTAG TCK 频率为4.096KHz。

    [引用 userid="499651" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1039405/tm4c1290nczad-unable-to-re-program-the-board-after-loading-the-firmware-with-configuration-of-main-oscillator-disabled "]但 JTAG 未检测到电路板。

    您使用的是哪种 JTAG 探头?

    有些允许降低 JTAG TCK 频率。 如果可以选择4kHz 作为 JTAG 频率、则应该能够再次使用 JTAG 检测电路板。

    另一种选择是运行解锁序列、这是一种将 TM4C12x 微控制器复位到出厂状态并擦除闪存中的程序的方法。 请参阅 TM4C JTAG 指南 :http://www.ti.com/lit/spma075中的执行解锁序列部分

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

    尊敬的 Chestor Gillon:

    感谢您的参与。

    我已经尝试过 JTAG TCK 频率设置和解锁序列、但它并不总是以一致的方式工作。 它在多次尝试失败后工作。 此外、我想知道电路板被锁定的原因。

    我在使用"SysCtlClockFreqSet"时遇到了困难、其中一个配置为"SYSCTL_USE_OSC"、使电路板根据我的调试被锁定。

    我的目的是将系统时钟配置为16MHz、稍后想要使用 RTCOSC 进入休眠模式、唤醒时希望以16MHz 的系统时钟运行代码。 如果您可以共享此时钟配置的 ME 代码片段、它将解决我的问题。

    期待尽早得到您的回复。

    谢谢、此致

    RAM

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

    您好!

    [引用 userid="499651" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1039405/tm4c1290nczad-unable-to-re-program-the-board-after-loading-the-firmware-with-configuration-of-main-oscillator-disabled/3845534 #3845534"]我的目的是将系统时钟配置为16MHz 及更高频率,以便使用 RTCOSC 进入休眠模式,唤醒后,我希望在系统时钟16MHz 上运行代码。

     有一个内部16MHz PIOSC (精确内部振荡器)。 要使用内部示波器、您可以调用:

    ui32SysClock = SysCtlClockFreqSet (SYSCTL_OSC_INT | SYSCTL_USE_OSC、16000000);

    假设您有一个要用作 SYSCLK 的外部16MHz 晶体、则调用:

    ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_16MHz|
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_OSC)、16000000);

    另请参阅以下网址中的休眠示例:

    C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\hibernate"

    C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\hibernate_calendar

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

    我们尝试对其他功能进行一些硬件更改、因为我无法对其进行测试。

    我还有另一个关于休眠的问题。 下一次可能、我将在我的测试中快速向您更新。

    问题是:我的应用程序在电源故障时进入休眠模式、并在外部唤醒引脚时唤醒。

    它在第一次唤醒时没有任何问题。 从第二次开始、我将每6秒收到一次 WAKE 和 HIB 引脚的毛刺脉冲。

    因此、我的应用绝不会重新进入休眠模式。

    如果我执行电源复位、我的应用程序将首次进入休眠模式、第二次进入休眠模式、干扰将会出现。

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

    您好!

    [引用 userid="499651" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1039405/tm4c1290nczad-unable-to-re-program-the-board-after-loading-the-firmware-with-configuration-of-main-oscillator-disabled/3870447 #3870447"]从第二次开始,我每6秒就会收到唤醒和 HIB 引脚的毛刺脉冲。

    -不确定为什么会出现干扰。 您能否显示 WAKE 和 HIB 引脚的示波器电容器? 另请显示发生毛刺脉冲时的 VBAT 和 VDD。  

    -请将您的休眠原理图与数据表中显示的示例休眠电路进行比较。 您是否拥有正确的 Rbat 和 Cbat?

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

    我已经进行了分析并指定了硬件原理图的片段、并使用  以下链接中文档文件"休眠详细信息"中的应用代码进行了测试

    示波器观察结果显示了以下链接中"休眠详细信息"文件中给出的故障。  

    请从您的终点提出可能的解决方案

    https://docs.google.com/document/d/1gLuKtkwZ1Se7zAN7wxbN3xzzy566x0nI/edit?usp=sharing&ouid=113479432014330985313&rtpof=true&sd=true

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

    您好!

     我的公司阻止我们访问外部文件共享站点。 您只需将文件拖动到论坛窗口即可。  

     另请进行以下实验。

     -在 LaunchPad 上运行您自己的应用程序代码。 您是否在 LaunchPad 上看到 WAKE/HIB 引脚上的干扰?  

     -在您的定制板上运行 TivaWare Hibernate 示例。 您是否看到了干扰?

     如果电路板或代码有问题、这两个实验将帮助我们缩小范围。  

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

    e2e.ti.com/.../Hibernation-Details.docx

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

    您好!

     从您显示的有限原理图中,我没有发现问题。  

     -您的原理图未显示振荡器频率。 固件指定16MHz。 我只是想确保您的晶体为16MHz、而不是25MHz。  

     -您写了 HibernateEnableExpClk (32768),我认为这与操作的结果无关。 请参见 下面的。 另请参阅 TivaWare Hibernate 示例。  

     您尚未回答我之前的问题。 让我在这里再次重申。

     -在 LaunchPad 上运行您自己的应用程序代码。 您是否在 LaunchPad 上看到 WAKE/HIB 引脚上的干扰?  

     -在您的定制板上运行 TivaWare Hibernate 示例。 您是否看到了干扰?

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

    我还没有尝试这些实验。 为了回答您的问题、我使用32.768kHz 外部晶体振荡器。

    请在此处查找完整的原理图和源代码以供参考。

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

    e2e.ti.com/.../apiHibernate.c

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

    e2e.ti.com/.../SCH_5F00_AI_5F00_SECONDARY_2D00_04OCT.pdf

    此外 、以下更改(按页说明)也在我们的当前电路板中进行、以用于测试。 (随附的原理图未进行以下更正)

        第4页 Q14已删除、引脚2和引脚3短接

    删除了第4页  - Q6

    第4页  - R14用于未连接的 HIB 和 R207。

    第5页  - 删除了 PQ2和 PK4

       删除了第5页 J19

    第6页   R316为 VBAT、未 删除 VCC_A_UC 和 R322

    第6页   添加了唤醒手轮10K 上拉。

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

    您好!

     我看了一下您的原理图、它非常复杂、我不能仅仅看一下您的原理图、并解释正确或错误的地方。  为了帮助您、您必须首先通过回答我先前提出的问题来帮助我。 让我再说一遍。

     -在您之前的代码中,您写了以下行来配置时钟。  

       ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_16MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、40000000);

      但是、看看您的原理图、外部主晶体在哪里? 我看不到 OSC0和 OSC1。  我对您的系统非常困惑。 如果您不使用外部晶体、那么我想您使用内部16MHz PIOSC、对吧? 如果是这种情况、则说明您的配置错误。 您应按如下方式书写:

        ui32SysClock =  SysCtlClockFreqSet (SYSCTL_OSC_INT | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480、40000000);

     您说过您有一个外部32.768kHz 晶体。 那是在哪里? 我只看到您将 WDI-PG6连接到 XOSC0输入。 看起来 WDI-PG6是一个看门狗。 为什么这样进行连接?

     -您说过6秒后唤醒和 HIB 引脚上会出现干扰吗? 再次向我展示在休眠进入和退出期间以及发生干扰时的示波器捕获 VDD、VBAT、WAKE、HIB。 我必须至少拥有这些信号才能判断发生了什么。  

     -在 LaunchPad 上运行您自己的应用程序代码。 您是否在 LaunchPad 上看到 WAKE/HIB 引脚上的干扰?  

     -在您的定制板上运行 TivaWare Hibernate 示例。 您是否看到了干扰?

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

    请在其中找到包含晶体详细信息的更新原理图。 遗憾的是、我们施加高电压后 LaunchPad 会烧坏。 因此、我们无法尝试您建议的实验。  e2e.ti.com/.../secandary-card-schematic.pdfe2e.ti.com/.../SCH_5F00_AI_5F00_CPU_5F00_PB_5F00_V5_5F00_2.pdf

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

    请在其中找到包含晶体详细信息的更新原理图。 遗憾的是、我们施加高电压后 LaunchPad 会烧坏。 因此、我们无法尝试您建议的实验。  e2e.ti.com/.../secandary-card-schematic.pdfe2e.ti.com/.../SCH_5F00_AI_5F00_CPU_5F00_PB_5F00_V5_5F00_2.pdf

    此外、让我们知道休眠进入和退出期间复位引脚的行为。

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

    您好!

    [引用 userid="499651" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1039405/tm4c1290nczad-unable-to-re-program-the-board-after-loading-the-firmware-with-configuration-of-main-oscillator-disabled/3896766 #3896766"]此外,让我们了解休眠进入和退出期间复位引脚的行为。

    在进入和退出期间对复位引脚没有真正的影响。 但当器件从休眠状态唤醒时、器件将通过 POR。 请参阅以下数据表。  

    VDD 的返回会导致 POR
    执行。 从 WAKE 信号被置为有效到代码开始执行的时间为
    等于唤醒时间(tWAKE_TO_HIB)加上上电复位时间(TPOR)。

    -我并不特别注意 RST、OSC0和 XOSC0/XOSC1连接有什么问题。  

     - SCH_AI_CPU_PB_V 和辅卡之间的关系是什么?

     您从未回答过我的问题。  了解您的 LaunchPad 没有可用于交叉检查的功能。 但至少请回答以下两个问题。  

     -您说过6秒后唤醒和 HIB 引脚上会出现干扰吗? 再次向我展示在休眠进入和退出期间以及发生干扰时的示波器捕获复位、VDD、VBAT、WAKE、HIB。 我必须至少拥有这些信号才能判断发生了什么。  

     -在您的定制板上运行 TivaWare Hibernate 示例。 您是否看到了干扰?

    再说一次、如果您没有回答我的任何问题、我将无法为您提供帮助。

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

    e2e.ti.com/.../5241.Waveforms.docx

    请找到上述文档中捕获的观察范围波形。 遗憾的是、我无法测量 VDD。 我捕获了其他4个信号。

    此外、我已在定制板中运行示例代码和代码。 示例代码不会导致器件进入任何休眠模式、我想我需要修改小位来采样代码、以便将定制板进入休眠模式。 我已捕获电源打开和关闭情况。  

    对于我的代码、自定义板应在断电后进入休眠状态。 但是、由于所示的干扰、它未进入。

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

    您好!

     一些意见。

     -我看到您运行 TivaWare 示例  C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c129x\hibern\ccs\Debug\hibernate.out。  这是一个带有 LCD 的 DK 电路板示例。 TivaWare 2.1.4.178是较旧版本。 您是否修改了此示例以删除与 LCD 相关的所有代码? 如果您的定制板没有与 DK 电路板上相同的 LCD、我不希望此示例在您的电路板上工作。  为什么不在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\hibernand C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\hibernate_calendo 中运行最新的 TivaWare 示例

     -在第3页上、您显示 自定义代码已加载到自定义板中–加电状态。  当 HIB 被置为有效时、复位将下降。 谁控制您的复位输入? 请参见下面的。 您将更了解如何驱动复位。 复位是否来自 U88? 是否确实、只要 HIB 被置为有效、它也会触发 WD 复位? 再说一次、这是您的电路、您应该更好地了解它的工作原理。  

     -对于 自定义代码加载到自定义板中–断电情况下, 您有几个示波器捕获。 看起来都是复位的。 您确实需要研究断电时为什么会断言 RESET (可能来自您的 WD)。 当器件处于休眠状态时、您需要停止 WD 置位。 请记住、复位被视为唤醒源。 当 RESET 被置为有效时、它唤醒器件。 您需要防止复位发出或尝试禁用复位、将其作为固件中的唤醒源。 您在下面写入了使用复位来唤醒器件。  

    //
    //配置休眠唤醒源。
    //
    HibernateWakeSet (HIBERNATE_WAKE_RTC | HIBERNATE_WAKE_PIN | HIBERNATE_WAKE_GPIO |
    HIBERNATE_WAKE_RESET);

     -  

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

    我在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\hibernand  C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\hib_cal历 中运行了最新的 TivaWare 示例、在我的自定义电路板上没有发现电源干扰、并且在 HIB_calCalendar 上没有发现唤醒情况、并且在自定义电源引脚关闭时也没有发现干扰。 但是、电路板未进入休眠模式。

    此外、在我的自定义代码中、我根据您的建议禁用了复位作为唤醒源。 并且、在我的最新代码中、WD 也被禁用。 但是、我仍在观察 HIB、唤醒和复位引脚上的干扰。  

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

    在上电条件下、复位引脚不置为有效。  

    在断电状态下、当 HIB 被置为有效时、复位将每20秒下降一次(在固件中编程20秒、以便在断电状态下调用休眠请求)。

    谁控制您的复位输入? ---- >无复位控制电路。

    复位是否来自 U88? --> 不,U88没有任何控制,它被删除。

    是否确实、只要 HIB 被置为有效、它也会触发 WD 复位? --> 不,也会从电路和固件中删除 WD。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="499651" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1039405/tm4c1290nczad-unable-to-re-program-the-board-after-loading-the-firmware-with-configuration-of-main-oscillator-disabled/3900013 #3900013"]

    在断电状态下、当 HIB 被置为有效时、复位将每20秒下降一次(在固件中编程20秒、以便在断电状态下调用休眠请求)。

    谁控制您的复位输入? ---- >无复位控制电路。

    复位是否来自 U88? --> 不,U88没有任何控制,它被删除。

    是否确实、只要 HIB 被置为有效、它也会触发 WD 复位? --> 不,也会从电路和固件中删除 WD。

    [/报价]

    感谢您回答我的问题。 我真的不知道还有什么建议。 RESET 引脚是 MCU 的输入引脚。 MCU 不会将此引脚置为有效。 必须有人将复位置为有效。 如果您说它不是来自电路板上的电路、那么我真的不知道是谁驱动它、也不能帮助您调试电路、因为我 对它的了解不够。  

     如果 RESET 不是唤醒源、那么我想您使用 WAKEn 引脚或某些 GPIO 引脚作为唤醒源、对吧? 您可以检查这些引脚吗?  您是否有 PQ2和 Pk4等 GPIO 引脚 强制器件唤醒?  

     请获取一个有效的 LaunchPad、以便您可以在其上运行自定义代码并查看发生了什么情况。 通过这种方法、您可以比较这两者之间的行为。  

     我还建议您修改您的程序以简单地开始。 不要将器件配置为通过 WAKE 或 RESET 或 GPIO 唤醒、而只配置为 RTC。  行为是什么?

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

    我尝试仅启用 RTC、器件进入休眠模式、但尽管我已将固件配置为在30秒后通过将 RTC 唤醒作为唤醒源进行唤醒、但器件根本不会被唤醒。 在这段时间内、RESET 引脚也被置为有效、不会返回。 在整个观察过程中、HIB 和 RESET 都遵循相同的状态。

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

    e2e.ti.com/.../25_5F00_OCT.txt

    已附加使用的固件代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="499651" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1039405/tm4c1290nczad-unable-to-re-program-the-board-after-loading-the-firmware-with-configuration-of-main-oscillator-disabled/3902931 #3902931"]在整个观察过程中,HIB 和 RESET 都遵循相同的状态。

    我认为这是最大的秘密。 同样、MCU 不控制复位。 MCU 的外部电路控制复位输入。 但是、您会不断地说、没有外部电路会将 RESET 置为低电平。 必须有人将 RESET 驱动为低电平。 您的外部电路必须对 HIB 作出反应。 当 HIB 置位时、假设切断电源的电源。 检查您的电路板、看看您的电路是否会对电压骤降或看门狗超时作出反应、从而导致复位。  我开始想知道您的复位是否在 HIB 被置为有效后被上拉到不再是3.3V 的 VDD。 您需要确保在休眠期间将复位上拉至3.3V、以便真正的复位事件可以唤醒器件。 由于主电源被移除、复位不能只保持低电平。  

     当我在 DK EVM 板上运行休眠示例时、请参阅以下示波器。 HIB 生效、RTC 将在5秒后唤醒器件。 CH1为 HIB、Ch2复位。 如您所见、复位未更改。 您是否有 DK 电路板或 LaunchPad。 您能否在任一电路板上运行代码以查看是否可以重现问题? 这将证明复位仅受您的定制板的影响、而不受此影响。