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.

[参考译文] TMS320F28035:MCU 由外部干扰频繁复位

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/591949/tms320f28035-mcu-reset-frequently-by-external-interference

器件型号:TMS320F28035

您好、香榭丽舍

我的客户正在使用 F28035设计数字电源产品。 现在、他们发现 MCU 会因外部 干扰而复位。 他们发现 PLL 会因干扰而损坏、看起来发生了 CLOCKFAIL。

XTAL 时钟为20MHz、CPU 时钟设置为60MHz、而 XCLKOUT 用于监控 SYSCLKOUT。

时钟初始化代码如下所示。

空 InitSysCtrl (空)

   DisableDog ();

        EALLOW;
        SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; // 启用 ADC 外设 时钟
        (*Device_cal)();
        SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 0; // 将 ADC 时钟返回  到原始 状态
        EDIS;
           XTALOscSel();
           InitPll (6.2);//(OSCCLK * 6)/2=20M*6/2=60M
   InitPeripheralClocks();

空 XTALOscSel (空)  {
     EALLOW;
     SysCtrlRegs.CLKCTL.bit.XTALOSCOFF = 0;     // 打开  XTALOSC
     SysCtrlRegs.CLKCTL.bit.XCLKINOFF = 1;      // 关闭  XCLKIN
     SysCtrlRegs.CLKCTL.bit.OSCCLKSRC2SEL = 0;  // 切换到  外部 时钟
     SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL = 1;   // 从  INTOSC1切换到  INTOSC2/ext clk
     SysCtrlRegs.CLKCTL.bit.WDCLKSRCSEL = 1;    // 将 看门狗 时钟 源切换 为 外部 时钟
     SysCtrlRegs.CLKCTL.bit.INTOSC2OFF = 1;     // 关闭  INTOSC2
     SysCtrlRegs.CLKCTL.bit.INTOSC1OFF = 1;     // 关闭  INTOSC1
     EDIS;

InitPll (uint16 val、uint16 divsel)

  易失性 uint16 iVol;

 

  //确保 PLL 没有在跛形模式下运行

  if (SysCtrlRegs.PLLSTS.bit.MCLKSTS!= 0)

  {

     EALLOW;

     //检测到 OSCCLKSRC1故障。 PLL 以跛形模式运行。

     //重新启用缺少的时钟逻辑。

     SysCtrlRegs.PLLSTS.bit.MCLKCLR = 1;

     EDIS;

     //将此行替换为对相应行的调用

     // SystemShutdown();函数。

     _asm ("       ESTOP0");    //出于调试目的取消注释 卡死在这个位置了!!!!!

  }

看门狗代码:

SysCtrlRegs.WDCR = 0x002A;

WDCLK = OSCCLK/512/2=20M/512/2=19.531kHz=51.2us;

看门狗溢出时间=51.2us*256=13.1ms

如果发生 CLOCKFAIL、NMIWD 将复位器件。 在该代码中、它们设置 NMICFG[CLOCKFAIL]和 NMIWDPRD、NMIRESETSEL = 1。 您可以按如下所示找到示波器捕获。 蓝色波形为 PWM 输出、黄色波形为 XCLKOUT。

1。NMIRESETSEL = 1,NMIWDPRD=3000。 发生 CLOCKFAIL 时、PWM 频率从100KHz 更改为33KHz、XCLKOUT 从60MHz 更改为20MHz、时间约为150us。  

复位后、SYSCLKOUT 为60MHz、持续50us。

之后、 NMIRESETSEL = 1,NMIWDPRD=6000、  

您是否愿意帮助分析发生此故障的原因? 复位后、为什么 SYSCLKOUT 从60MHz 变为20MHz? 谢谢。

BR、

年轻。  

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

    我将查看这一点。 如果正在进行其他调试以及您从客户那里收到的任何其他信息、请告诉我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    年轻、

               区分真正的时钟故障和其他类型的干扰非常重要。 (请参阅网络上的 SPRUH18G;我了解它适用于 F2806x 器件。 但是、丢失时钟检测功能在 F2803x 上的工作方式相同。 仅在几天前就在网络上发布的 TRM 对如何处理时钟丢失情况进行了大量的说明。 客户的情况是 TRM 中的案例 D。 请参见随附的图形)。

     

    • 这到底是什么干扰? 它是作为测试的一部分故意创建的、还是系统中固有的(随机)干扰?
    • 您如何确定 PLL "损坏"?
    • 当您不禁用 INTOSC1时会发生什么情况?
    • 请注意、有一个勘误表建议不要使用 OSCCLKSRC2。 (请参阅随附的图形)。


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

    Hareesh、

    在我客户的代码中、INTOSC1被关闭、并且 NMI WD 中断没有 NMI ISR、并且 NMIFLG 不被清除。   您能不能建议 在外部时钟丢失时会发生什么情况?

    我要求客户提供您提到的更多信息、并将很快向您发送反馈。

    非常感谢。

    BR、

    年轻

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

    如果没有 NMI ISR 来处理这种情况、NMIWD 计数器将溢出、 器件将被复位、这正是您看到的情况。

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

    Hareesh、

    请按以下方式查找我客户的回复。

    [引用 user="Haresesh J"]

    • 这到底是什么干扰? 是作为测试的一部分故意创建的、还是系统中固有的(随机)干扰。  

    [/报价]

    它可能是     其直流/直流系统中固有的共模干扰或差模干扰。  您能建议 EMI 如何干扰 XTAL 的正常工作吗? 如果 XTAL 上有任何干扰、PLL 是否会损坏? 哪些引脚会对 EMI 敏感以干扰 XTAL 振荡?

    [引用 user="Haresesh J"]

    • 您如何确定 PLL "损坏"?

    [/报价]

    (1)如果 NMIRESETSEL = 0、禁用 NMIWD、在 XCLKOUT 上每6ms 会找到一个50us 脉冲(60MHz)、那么 XCLKOUT 引脚为高电平。

    (2)如果 NMIRESETSEL = 1、 NMIWDPRD=0xFFFF、则 XCLKOUT 频率从60MHz 更改为20Mhz。 PLL 已损坏。  

    [引用 user="Haresesh J"]

    • 当您不禁用 INTOSC1时会发生什么情况?

    [/报价]

    客户将很快进行测试并向您提供反馈。  

    另一个问题是生成 CLOCKFAIL 信号、TRM 会产生混淆。 请检查一下这个问题吗?

    在 SPRUH18G 中、在 P78上"注意:无论选择哪种模式、都会生成 CLOCKFAIL 信号。"  

    从 P93可以看到、"用户必须通过 CLKCTL[NMIRESETSEL]位启用 CLOCKFAIL 信号的生成。"

    谢谢。

    BR、

    年轻

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

    因此、这不是客户有意进行的"噪声测试"、而是系统固有的噪声。 因此、该问题可能在随机时间发生。

     

    EMI 肯定会干扰晶体振荡器的运行。 您是否注意到 XTAL 振荡器进入完全无法恢复的状态? 也就是说、它停止振荡、或者您是否认为系统仅仅因为干扰而获得复位?

     

    我需要回答的问题:

     

    当 INTOSC1未关闭时会发生什么情况?

    如果使用 INTOSC1作为时钟源、是否会出现问题?

    WDCLK 切换到 INTOSC1时有什么区别?

    如果没有 NMI-ISR、为什么还要配置 NMIWDPRD 寄存器? 延迟复位可实现什么效果?


    我正在检查文档混乱情况。

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

    [引用 user="Haresesh J"]

    EMI 肯定会干扰晶体振荡器的运行。 您是否注意到 XTAL 振荡器进入完全无法恢复的状态? 也就是说、它停止振荡、或者您是否认为系统仅仅因为干扰而获得复位?

     
    [/报价]

    XTAL 振荡器仍然工作。  

    [引用 user="Haresesh J"]

    当 INTOSC1未关闭时会发生什么情况?

    [/报价]

    如果 INTOSC1仍然打开、则在干扰 XTAL 时、DCDC 电源模块将会烧毁。 我想的是客户需要使 TZ5使 PWM 跳变。 因此、它们将再次测试。

    [引用 user="Haresesh J"]

    如果使用 INTOSC1作为时钟源、是否会出现问题?

    如果使用内部振荡器、即 INTOSC1、DCDC 电源模块也会烧毁一次。  

    [/报价]

    对于其他问题、我将说服客户启用 TZ5以确保不会发生损坏、然后回答您的问题


    谢谢。

     

    年轻

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

    线路

    "用户必须通过 CLKCTL[NMIRESETSEL]位启用-CLOCKFAIL 信号的生成"应读取

    "用户必须通过 CLKCTL[NMIRESETSEL]位启用 NMI 信号的生成"

     

    这将在文档的未来修订版中修复。