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.

MSP430FR5969死机问题

Other Parts Discussed in Thread: MSP430FR5969, MSP-FET

请问TI工程师:

      我使用MSP430FR5969设计的产品,现在发现一个问题,就是系统死机以后,如果我只是单独重新上电,不能恢复正常,但是我用JTAG仿真器连接以后,再运行,就正常工作了,为何重新上电不能运行,而连接仿真器后 仿真器环境下 复位就启动了,再次脱机就又正常了,是不是仿真器清除了什么关键错误变量啊,他们新上电和JTAG连接启动,两者有何区别啊?紧急求助~

  • 区别就是供电电路和复位电路连接仿真器后由仿真器供电并控制mcu复位

    建议上传下电源供电电路、复位电路电路图和相关部分的pcb图

    还有就是建议测量一下供电电压纹波和复位时复位引脚的波形

  • 我用的是开发板一样的阻容复位电路,电源是电池作为后备电源的ADP5091电源管理芯片,原则上3V不会消失。因为死机一次后,我再人工重启上电,仍然没有启动,但是我用仿真器连接后就能再次恢复启动。
  • 建议您上传一下电路

  • 你好,谢谢您的答复

    我估计应该不是硬件的问题

    我加了看门狗程序,现在如果死机后,系统能反复复位,就是不能正常运行。重新上电也一样。

    但是如果这种状态下,连接一下“MSP-FET”仿真器,在DEBUG下运行一下,又运行正常,然后再拔掉仿真器,独立上电又正常了。

    迫切希望解决这个问题。谢谢了

  • 我的主要初始化程序如下:


    int _system_pre_init(void)
    {
    // Stop Watchdog timer
    WDT_A_hold(__MSP430_BASEADDRESS_WDT_A__); // Stop WDT
    /*==================================*/
    /* Choose if segment initialization */
    /* should be done or not. */
    /* Return: 0 to omit initialization */
    /* 1 to run initialization */
    /*==================================*/
    return 1;
    }
    int main(void)
    {
    //==================================================================================
    //初始化看门狗
    WDT_A_hold(WDT_A_BASE);
    //WDT_A_initWatchdogTimer(WDT_A_BASE,WDT_A_CLOCKSOURCE_ACLK,WDT_A_CLOCKDIVIDER_32K); //大约1s
    //使用VLO 9.4K作为其看门狗时钟
    WDT_A_initWatchdogTimer(WDT_A_BASE,WDT_A_CLOCKSOURCE_VLOCLK,WDT_A_CLOCKDIVIDER_8192); //大约1s
    WDT_A_start(WDT_A_BASE); //启动看门狗
    //==================================================================================
    //初始化函数
    InitSystemConfig();
    //如果启动失败,则置LED灯常亮
    //P4.7 CPU运行灯 调试用
    GPIO_setAsOutputPin(GPIO_PORT_P4,GPIO_PIN7);
    GPIO_setOutputLowOnPin(GPIO_PORT_P4,GPIO_PIN7); //默认低电平关闭
    //==================================================================================
    RUN_LED=0;
    while(1)
    {
    __bis_SR_register(LPM0_bits+GIE);
    __no_operation(); // For debugger
    }
    // return (0);
    }




    void InitSystemConfig(void)
    {
    //初始化相关变量
    InitVar();
    //Unlock Ports
    PMM_unlockLPM5();
    //初始化时钟
    Init_Clock();
    //初始化GPIO
    Init_GPIO();
    //初始化串口。用于无线模块通信 实际使用的是UCA0接口
    EUSCI_A0_Init(); //已改
    //System timer count ,TA0 interval = 2.5ms 用于保护等计算使用
    Timer0_A3_Init(); //已改
    //Timer1_A3_Init(); //用于产生PWM 高精度AD采样用
    //用于通讯命令周期性解析--预设数值为10mS
    Timer2_A2_Init(); //已改
    //用于系统基本延时控制1mS
    Timer3_A2_Init(); //已改
    //用于内部AD 80点每周波采样用 Generate 4K clock signal to ad采样触发 不能动
    Timer4_B0_Init(); //已改
    //初始化参考电压 使用内部2.5V基准电压(最终需要配置,设置为关闭)
    REF_A_Init();
    //初始化ADC12模块
    ADC12_B_Init();
    //初始化AD24位
    Initial_AD24AD();
    }



    void Init_Clock(void)
    {
    // Set PJ.4 and PJ.5 as Primary Module Function Input, LFXT.
    GPIO_setAsPeripheralModuleFunctionInputPin(
    GPIO_PORT_PJ,
    GPIO_PIN4 + GPIO_PIN5,
    GPIO_PRIMARY_MODULE_FUNCTION);

    //2018-7-24 Set PJ.6 and PJ.7 as Primary Module Function Input, HFXT.
    GPIO_setAsPeripheralModuleFunctionInputPin(
    GPIO_PORT_PJ,
    GPIO_PIN6 + GPIO_PIN7,
    GPIO_PRIMARY_MODULE_FUNCTION);



    //FRCTL0 = FRCTLPW | NWAITS_1;
    // Set DCO frequency to 21 MHz
    //CS_setDCOFreq(CS_DCORSEL_1, CS_DCOFSEL_5); //CS_DCOFSEL_4->CS_DCOFSEL_5
    //2018-8-11
    // Set DCO frequency to 8 MHz
    CS_setDCOFreq(CS_DCORSEL_1, CS_DCOFSEL_3); //CS_DCOFSEL_4
    //Set external clock frequency to 32.000 KHz
    //CS_setExternalClockSource(32000, 0);
    //2018-7-24 设置LFXH-32K HFXT-7.68M
    CS_setExternalClockSource(32000, 7680000);
    //取消ACLK
    CS_initClockSignal(CS_ACLK, CS_LFXTCLK_SELECT, CS_CLOCK_DIVIDER_1);
    // Set SMCLK = 由HFXT提供,输出为7.68MHz
    CS_initClockSignal(CS_SMCLK, CS_HFXTCLK_SELECT, CS_CLOCK_DIVIDER_1); //7.68
    // Set MCLK = DCO with frequency divider of 1
    CS_initClockSignal(CS_MCLK, CS_DCOCLK_SELECT, CS_CLOCK_DIVIDER_1);
    //Start XT1 with no time out
    CS_turnOnLFXT(CS_LFXT_DRIVE_3);
    //CS_turnOnLFXTWithTimeout(LFXTDRIVE_3, 400000); //查看PDF:LFXTDRIVE_3时,需要延时1000mS
    //2018-7-24 打开HFXT
    CS_turnOnHFXT(CS_HFXT_DRIVE_4MHZ_8MHZ); //晶振为7.68M
    //CS_turnOnHFXTWithTimeout(CS_HFXT_DRIVE_4MHZ_8MHZ,10000); //晶振为7.68M
    _nop();
    _nop();
    _nop();
    }
  • 麻烦TI工程师 看看这个问题,非常奇怪~~ 麻烦大家了