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.

[参考译文] MSP430I2041:崩溃后发生干扰,无法启动

Guru**** 2589245 points
Other Parts Discussed in Thread: MSP430I2041, MSP-TS430RHB32A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/617969/msp430i2041-disturbance-after-the-crash-cannot-be-started

部件号:MSP430I2041
主题中讨论的其他部件: MSP-TS430RHB32A

我们在产品(自动调温器)中使用msp430i2041,但在使用此产品时存在一些问题。工作一段时间后崩溃,所有IO都没有任何输出。 CPU似乎未进入其工作状态。 刚安装时自动调温器可以正常运行,但运行几天之后就出现了这种问题。 有三个这样的自动调温器出现了这个问题。 我们估计这是由干扰造成的。 电路显示在所附的图纸上,相对简单。 干扰只会引入电源和模拟输入。 功率和模拟输入均被过滤(功率添加到两级滤波器,模拟输入增加电容), 但崩溃会再次发生,电重启。后来我们通过实验发现,如果我们给芯片的IO一些干扰(给JTAG提供高静态脉冲),CPU崩溃,所有IO都转到输入模式,但WDT软件是打开的。 当干扰消失时,CPU仍无法启动。
另一个在实验过程中发现了一个问题,当外部复位电路添加到SP706或不添加时,如果压降不是零,保持在2.1V左右,然后打开电源,CPU无法再启动,手动RST信号无法重新启动。 必须完全关闭电源,才能启动电源。 SP706小于2.6V当电压被给予RST低信号时,CPU应进入重置状态,直至电压满足要求。当获得高电压信号时,CPU应启动。 但是CPU没有启动,这并不是绝对的。

  请分析,原因是什么。 解决方案是什么? 非常感谢!

添加:代码的一部分,示意图。

int __low_lever_init (void)

unsigned long *jtagPwd =(unsigned long *)JTAG_DIS_PWD1;

/*为看门狗计时器供电*/

WDTCTL = WDTPW | WDTCNTCL;

/*检查JTAG密码位置,如果密码不匹配,则禁用JTAG。

*否则,JTAG将在重置后的第64个周期中启用。

*/

如果(*jtagPwd != 0x0万)&&(*jtagPwd != 0xFFFFFFFFFFFFFFF))


/*禁用JTAG */

SYSJTAGDIS = JTAGDISKEY;
}

/*校准部分

*检查IFG1中是否有BORIFG标志。 如果这是一个BorIFG,则执行校准。

*否则跳过校准

*/
IF (IFG1和BORIFG)

//对62字节TLV数据执行2的补码校验和

无符号int校验和=0;

unsigned char *TLV_address_for _parse =(unsigned char *)TLV_start);

unsigned int *TLV_address_for校验和=(unsigned int *) TLV_start + 1);


checksum ^=* TLV_address_for校验和++;

}同时(TLV_address_for校验和<=(unsigned int *)TLV_end);

checksum ^= 0xFFFF;

校验和++;

//如果校验和不正确,请转至LPM4

如果(*(unsigned int *)TLV_start)!=校验和)

//如果校验和失败,请输入LPM4

__bis_sr_register (LPM4_bits);

}

//校验和匹配,现在设置校准值

//校准参考

REFCAL1 =*(TLV_ADDRESS_FOR_PARse + TLV_CAL_REFCAL1);

REFCAL0 =*(TLV_address_for _parse + TLV_CAL_REFCAL0);

//校准DCO

CSIRFCAL =*(TLV_address_for _parse + TLV_CAL_CSIRFCAL);

CSIRTCAL =*(TLV_ADDRESS_FOR_PARse + TLV_CAL_CSIRTCAL);

CSERFCAL =*(TLV_ADDRESS_FOR_PARse + TLV_CAL_CSERFCAL);

CSERTCAL =*(TLV_ADDRESS_FOR_PARse + TLV_CAL_CSERTCAL);

//校准SD24

SD24TRIM =*(TLV_address_for _parse + TLV_CAL_SD24TRIM);

//清除BorIFG

IFG1 &=~(BORIFG);

}
/*为看门狗计时器供电*/

WDTCTL = WDTPW | WDTCNTCL;

/*返回值:

* 1 -执行数据段初始化。

*0-跳过数据段初始化。

*/

返回1;

}

Void主(void)

静态调整状态=0;

U8温度;

_DINT();

_NOP();

WDTCTL = WDTPW | WDTHOLD;//关闭WDT

CSCTL1 = DIVs__4 + DIVM__4;// MCLK=SMCLK=4096K

FCTL2 = FWKEY | FSSEL_1 |FN2 |FN3;// FN1 | FN3 |FN5;// MCLK/12,用于闪存定时发生器257k~476K

// FCTL2 = FWKEY | FSSEL_1 |FN1 | FN3 |FN5;// MCLK/42用于闪存定时发生器257k~476K

WDTCTL=WDT_ARST_1000;

init_TimerA0();

InitTimeA1Pwm();

InitCfg();//congif init

init_adi();//ad init

init_485();//UART初始化

_EINT();

同时(1)

IF (needRset==0)

WDTCTL=WDT_ARST_1000;

IF ((needInitAd=1)&&(CommSent()=0))

needInitAd=0;

_DINT();

init_adi();//ad init

_EINT();

}

IF (GetBeChanged()=Yes)

DealData (0);

}

temp = GetKeyCode();

IF (temp == key_Setup_QQ)

SetRange(1);

AdjustState = set_range1;

}

}

}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我注意到的第一个问题是,当数据表指出Vcore电容必须为470 nF时,Vcore电容为.1 UF。 查看更改此值是否可以解决问题。 不需要提供__low_lever_init函数,因为它是MSP430i2xx器件的标准功能。 您可以使用修改后的闪烁LED示例测试您的设计,以查看问题是否出在硬件或软件上。 如果必须提供更多代码,请在使用富格式时使用找到的SyntaxHighlighter。

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

    今天,我将电路板的Vcore电容更改为470 NF,并切换到TI提供的示例程序: 闪烁一个LED代码,经过此类修改后,电路板总共有4块,其中2块在通电后未发现不工作的情况(LED不闪烁),但其他2块在 通电后有时不工作(10 % 概率), 然后,手动设置为低电平电压无法重置(LED不闪烁),必须完全切断电源,然后才能重置。 同时,我还做了一个实验,添加WDT芯片SP706,因为两块板可以正常启动,但仍然可以正常启动, 但是,两个不能正常启动的董事会的情况变得更糟,其中一个董事会不能一直启动,另一个董事会不启动的可能性也增加了。 因此,在这种情况下,添加SP706并未改善情况。请帮助我分析原因和解决方案

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果MSP430仍在基本代码中出现故障,则这将验证电源或硬件问题。 您能否在MCU崩溃的干扰期间捕获VCC,VCORE和RST行的屏幕截图? 您是否能够共享任何PCB设计文件/图像? 原理图与MSP-TS430RHB32A的原理图非常匹配,但最好运行连续性检查,以确保所有连接都符合预期。

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

    示意图如下所示。 VCC由开关电源(AC 220 V至5 V)生成,并使用电源芯片来实现TPS7.7033万之后的电压稳定性。  接 通电源后,电路板有时不工作(10 % 概率)。为什么?

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

        显示异常工作时的Vrst VCC波形,VCC为黄色,Vrst为绿色。

     这是VCC和Vcore,Vcc是黄色,Vcore是绿色。

       显示正常工作时的Vrst VCC波形,VCC为黄色,Vrst为绿色。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    似乎确实存在一些噪音,这种干扰可能会触发错误重置事件,并阻止PMM释放MCU的BOR状态。 您的上拉电阻器R11的值是多少? 您能否确认已安装C15 (10 UF)并位于MSP430附近? 也许尝试向VCC导轨添加更多电容,以进一步控制电压上升。

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

     上拉电阻器R11的值为47k, 我  可以确认安装了C15 (10 UF)并位于MSP430附近。

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

    今天,我将WDT芯片SP706添加到电路中,并在正常通电后获取波形,如下所示:

     

    但当我经常打开和关闭电源时,有时系统无法正常启动,异常启动的波形如下所示:

       

    为什么会出现此问题,这是该芯片的原始属性吗? 有没有解决这一问题的办法?  谢谢!

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

    RST引脚在下降时消耗的电流量似乎很重要,您是否可以在故障情况下测量电流消耗,并在使用闪烁的LED示例时与良好情况进行比较?

    在DVcc看到来自TPS电路的3.3V电压之前,是否有其它GPIO检测到电压? 切勿通过ESD导轨为设备重新供电。 如果您只需断开设备的所有其他引脚,然后再次进行测试。

    串行电阻器(例如 10欧姆)有助于过滤噪音并使系统更加坚固? 或许有助于检查它是通过DVCC还是通过任何欧姆针来实现的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    此线程是否有任何更新或进度?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
     电流为4.7 mA,VCORE频繁工作时为1.8V,电流为1.0 mA,VCORE无法启动时为1.83V (使用闪烁的LED 示例)。
    出现故障时,所有IO端口的电压都与1.4 V有关。我断开 了CPU上的所有引脚,  结果相同。
    我在 VCC前端添加了一个30 o串联电阻器。 电源故障问题得到了改善,但没有完全解决。
    当IT无法启动时,我关闭 了CPU 200毫秒(使用SP706芯片进行控制),然后尝试打开CPU,但仍然无法启动,测试显示 VCC已 关闭200毫秒,但VCORE的电源仍然打开。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    如果您要关闭设备电源,但Vcore仍然存在,则意味着后门电源是否正确?

    那么当您关闭DVCC电源时,您是否对任何引脚施加了电压? 如果是,则会违反规范,从而导致不可预测的行为。

    请通读:
    www.ti.com/lit/slaa530

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

    我很抱歉。 我错了关于VCC断电和Vcore不断电的问题。
    我已经重新连接了PCB,在CPU周围放置了尽可能多的接地电极。 VCORE的电容和CPU之间的距离也是最短的。CPU的VCC增加了10uF的电容。 目前,测试未发现电源未启动。 我想确认该芯片是否需要额外的电源管理芯片(如SP706)。

    请帮我检查以下PCB布线是否合理,谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    VCC,VCORE,VREF和RST电容器都共享一条到最小GND平面的路径,这可能是一个问题。 不需要外部电源管理IC。

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此,这不能回答我的问题,所以我重复一遍。

    如果您为cylce供电,则您的主电源是否在通电过程中仍有GPIO供电?
    换言之,在DVCC看到电压之前,任何引脚在通电过程中是否会看到任何电压?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我很抱歉。 关于VCC电源关闭和VCORE电源仍然打开是测量错误的原因。 当VCC断电时,VCORE也会断电。

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们了解测量错误并忽略了此信息,但当VCC和VCORE断电时,是否仍有GPIO引脚通电? Dietmar需要知道在打开电源时DVCC之前是否有任何其他引脚施加电压。

    此致,
    Ryan