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.

[参考译文] MSP430G2433:CAN MCU可以在复位引脚为低电压的情况下复位,而Vcc仍高于1.8V

Guru**** 2390735 points
Other Parts Discussed in Thread: MSP430G2433

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/620722/msp430g2433-can-mcu-be-reset-taking-reset-pin-low-while-vcc-is-still-above-1-8v

部件号:MSP430G2433

MSP430G2433存在问题。  当其Vcc电压缓慢下降时(由3.3V LDO驱动,该LDO遵循其输入电压,来自缓慢放电的电池),如果我们开始深度放电(即,LDO的输入电压低于1.7V左右),  在MCU-Vcc MCU-1.6V的范围内,当 我们恢复到增加MCU-Vcc ( 通过为电池充电)时,1.5 不会重置。  这不是所有MCU都发生的,如果我们将Vcc增加到3.3V并在该Vcc上保持一个小时,有些MCU就会得到POR。   

我们是否可以通过驱动重置引脚低电平来重置MCU? 当前重置引脚从外部向上拉至Vcc。

我正在使用看门狗计时器在MCU达到1.8V以下时重置MCU,但似乎也不起作用。

请建议一些解决方案。

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

    您能否在断电/通电情况下分享DVCC+RST引脚的示波器。
    您在断电期间运行设备的频率也很有趣吗? 您是否确保不会违反频率与耗材规格,从而导致不可预测的行为?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

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

    感谢您的回复。
    频率设置如下:
    BCSCTL1= CALC1_8MHZ; //系统时钟设置
    DCOCTL = CALDCO_8MHZ; //使用已校准的8MHz设置

    第一个快照在蓄电池电压为3V时拍摄,第二个快照在Vbat为6V时拍摄。 蓄电池馈送至电压调节器,后者馈送至MCU的Vcc。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    感谢您发布信息。 根据您的DCO设置,我必须告诉您,您的操作超出规格。 如果您使用8 MHz的DCO,则不允许低于2.2V。 如下所示。

    因此,我建议您在板载ADC中检测到低于2.2V的电压降,然后进入LPM或至少降低频率以符合器件规格。 如果这不起作用,请告知我。

    此致,
    Dietmar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dietmar,您好!
    感谢您的即时响应。 请帮助我如何使用LPM,因为我们的应用程序需要复杂的状态机。 详情如下:
    1. 下面是我们在Micro初始化例程中使用的系统时钟详细信息:
    BCSCTL1= CALC1_8MHZ; //系统时钟设置
    DCOCTL = CALDCO_8MHZ; //使用已校准的8MHz设置
    BCSCTL3= LFXT1S_2;// 系统时钟设置看门狗

    2. 我们使用使用ACLK的看门狗计时器,然后在不同的例程中使用WDTCTL = WDT_ARST_1000重置看门狗计时器;

    3. 我们使用SMCLK中的定时器1在UP模式下驱动PWM,使用定时器0在Continuous模式下作为内务计时器。

    //计时器0初始化
    TA0CCR1 = 5万;
    TA0CCTL1 = CCIE; // CCR0中断已启用
    TA0CTL = tassel_2 + MC_2 + TAIE; // SMCLK,contmode

    //计时器1初始化
    TA1CCR0 = 159; // PWM周期约为50kHz (160-1=159)
    TA1CCR2 = 4; // CCR1 PWM占空比
    TA1CCTL2= OUTMOD_7; // CCR1重置/设置
    TA1CTL = tassel_2 + MC_1; // SMCLK,UP模式

    4. 我们还在端口2上设置了端口中断,用于检测上升和下降边缘。

    根据您的建议,我们确实提供了检测低于2.2V的电压降的功能。
    请推荐:
    1. 我应该使用哪个LPM以及如何实施。
    2. 我可以将SMCLK关闭到低于2.2V,然后等待端口中断以退出LPM。 如何实现?
    3. 我在ACLK上有看门狗计时器。 在进入和退出LPM时如何处理此问题?

    如果您为我的应用程序提供示例代码和建议,将会很有帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Abhishek,(希望这是您的名字)

    如果您选择LPM或不是正常情况下,它应该足以降低SMCLK速度,但在这种情况下,TimerA将运行错误的时间基准。

    要回答您的问题,请执行以下操作:

    1.我建议使用LPM3,因为在这种情况下,CPU和DCO关闭,而WDT仍在运行。 您只需确保将计时器切换至ACLK,即可为您提供重置WDT的功能。
    或者,您可以使用LPM0,它继续使用DCO提供的SMCLK,为您提供应用程序的全部功能。 在这两种情况下,降低CPU时钟(DCO)的速度对于不违反规范非常重要。

    2.您可以使用ADC10对连接到AVCC/2的输入A11进行采样,该输入可用于检测电池电量不足。 请参阅Web上的代码示例中的代码示例"msp430g2x33_ADC10_05.c",它为您提供了实现此功能的基本代码。


    一旦检测到低电压,就会减慢SMCLK。 但请注意,ADC的工作电压仅为2.2V,这意味着您必须使用1.5V参考电压,如示例中所述。

    3. mh...? 您已经使用了两个计时器,一旦输入LPM3,就很难使用一个计时器。 因此,我建议使用LPM0或在转至LPM3之前重新配置特定计时器。 我的意思是,您无论如何都不能让它们在电压低于2.2V的情况下以8MHz运行。

    试用一下,让我知道它是否有助于防止违反规范,最后,如果它修复了您遇到的功能故障,我肯定会感兴趣。 但第一优先级应该是按照规范操作。