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.

[参考译文] MSP430FR4133:复位原因是什么?

Guru**** 2585275 points
Other Parts Discussed in Thread: MSP430FR4133

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/838560/msp430fr4133-what-can-be-the-reset-cause

器件型号:MSP430FR4133

大家好、

IDE:已通过 CCSv9.1和 CCSv8.2测试。

编译器版本:使用 TI v18.12.1 LTS 和 TI v18.12.3 LTS 进行了测试

硬件:MSP430FR4133 LaunchPad。 在2个

固件:

int main (void){
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器

ConfigClock(); // MCLK/SMCLK 至8MHz
ConfigGPIO();
ConfigTimer();
ConfigADC();
ConfigUART();
PM5CTL0 &=~LOCKLPM5; //禁用 GPIO 上电默认高阻抗模式
//激活先前配置的端口设置
_bis_SR_register (GIE); //中断被启用
while (1)
{
Function1();
Function2();
Function3();
}
}
void ConfigClock (void)
{
FRCTL0 = FRCTLPW | NWAITS_3;

//将系统时钟设置为8MHz,源自内部 DCO,无外部晶振
_bis_SR_register (SCG0); //禁用 FLL
CSCTL3 |= SELREF_REFOCLK; //将 REFO 设置为 FLL 基准源
CSCTL0 = 0; //清除 DCO 和 MOD 寄存器
CSCTL1 &=~(DCORSEL_7); //首先清除 DCO 频率选择位
CSCTL1 |= DCORSEL_3; //设置 DCO = 8MHz
CSCTL2 = FLLD_0 + 243; // DCODIV = 8MHz
_DELAY_CYCLES (3);
_BIC_SR_register (SCG0); //启用 FLL
while (CSCTL7 &(FLLUNLOCK0 | FLLUNLOCK1));//轮询直到 FLL 被锁定


CSCTL4 = SELMS_DCOCLKDIV | SELA_REFOCLK;//将默认 REFO (~32768Hz)设置为 ACLK 源、ACLK = 32768Hz
//默认 DCODIV 为 MCLK 和 SMCLK 源
} 

我不使用 WDT。

我尝试了一些不同的时钟和 FRAM 等待状态、结果相同。

在 while (1)循环中:

Function1()读取 ADC。 Function2()执行一些计算(不涉及硬件,不除以0)。 Function3()使用 GPIO 控制步进。

案例1:删除全部3个函数-> MCU 工作正常(一段时间后不会复位)

情况2:保留任何1或2个函数->  MCU 工作正常(一段时间后不会复位)

案例3:保留全部3个函数-> MCU 在一段时间后保持复位。 在这种情况下、FRAM/RAM 的使用仅为2936/334字节。

通过使用板载调试器、我可以看到每次 MCU 复位时 SYSRSTIV = 0x02。

标志:SVSHIFG、PMMPORIFG、PMMBORIFG、WDTIFG = 0。

OFIFG、PMMRSTIFG = 1

在此情况下、有人可以告诉我什么是复位原因?

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

    您好、Kien、

    假设器件配置没有任何问题、代码中没有错误、导致堆栈溢出或 CPU 访问 SFR 寄存器等问题、我怀疑硬件设置是间歇性复位的根本原因。

    应用、它们会消耗大量功率或能够产生高干扰水平、并且电机控制绝对是这样的应用、与 LaunchPad 板的操作和调试结合起来可能会导致问题。 信号完整性通常较差、因为您可以将设置的高功率部分连接到电机、而设置则通过长电缆连接到 PC 以进行调试。 所有这些可能会影响调试信号和通信的信号完整性、导致复位、或者 MSP430电源上可能存在干扰水平、从而触发 BOR。 BOR 不仅不能由临界电压电平触发、还不能由由于干扰或负载变化而导致的电源电压变化的临界陡度触发。

    为了测试此假设是否适用于您的情况、我建议断开潜在干扰源、例如在您的情况下、断开电机、并查看是否仍然发生。 如果不是、您就知道它的来源。 因此、更困难的部分可能是提高设置中的信号完整性、从而解决问题。 但让我们一步一步一步。

    此致

    Peter

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

    Peter、

    感谢您的回复。

    我忘记分享我没有将 FR4133 LP 连接到任何外部硬件。

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

    您好、Kien、

    在本例中、整个调试变得更加困难。 根据问题发生的时间范围、您可以尝试在 FRAM 中记录一些指示标志。 例如在每次执行特定代码序列时更新 FRAM 中的变量。 这样、您就可以跟踪 MSP 在复位时处于的状态。

    如果在同一个位置发生、您将尝试弄清楚为什么在该特定代码段中发生这种情况。

    如果随机发生、这可能是调试连接稳定性问题的指示器。

    您还可以尝试在代码的特定位置切换 GPIO、以便能够实时按范围监视 MSP 正在执行的操作以及复位发生的位置。 同样、如果您发现了该点、您可以开始进一步调查。 查看变量值、查看电源电压...

    BTW 当您通过外部电源而不是通过调试部分提供 LP 时、在自由运行模式下是否也会发生复位?

    此致

    Peter

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

    Peter、

    感谢您的建议。 我会尝试所有这些方法、并随时向您发布。

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

    您好、Kien、

    我现在将关闭该线程。 如果有需要、您仍有几周时间重新打开它、但这使我一侧的监控更容易。

    此致

    Peter