我这边是上海ABB软件,想请教一下MSP432P4111这颗芯片的复位功能:
user manual SYSCTL_A 模块中关于寄存器SYS_RESET_REQ设置问题:
这边是想实现出现异常状况后,自复位系统。SYS_REST_REQ寄存器=0x6901可以实现POR复位。前提是设置SYS_MASTER_UNLOCK=0x695A。
这边在IAR中code实现如下:
addrLock = (uint32_t *)(SYSCTL_A_BASE + 0x1000u);
*addrLock = 0x695A;
addrRst = (uint32_t *)(SYSCTL_A_BASE + 0x1010u);
*addrRst = 0x6901;
实际运行后并没有解锁以及复位成功,对应地址并没有变更,见下图:

人为更改地址里内容0xE00E4400和0xE00E4010,执行POR复位就会成功

我这边的问题是:怎样能让软件直接运行code实现手册中的POR复位?

同时是不是这种复位是不是这颗芯片复位最可靠或者最有效彻底的复位方式?
麻烦辛苦帮忙分析一下。
Yale Li:
您好,根据datasheet的6.8.1节,非硬件方式的POR只能由调试器引起:
POR确实是最彻底的复位方式。根据TRM的3.2节,MSP432P4111共有4个等级的复位,如下图所示,等级数字越小,复位越彻底:
但是同Class0级别的POR一样,Class1级别的Reboot Reset通过非硬件方式也只能由调试器引起:
通过改写相关寄存器引起这两种方式的复位,一般是作调试用:
jing chen 说:这边是想实现出现异常状况后,自复位系统。
实现这个功能一般使用watchdog,watchdog可以引起Class2级别的硬件复位或Class3级别的软件复位:
有关watchdog的使用,请阅读TRM的17 Watchdog Timer (WDT_A);
有关reset的更多信息,请阅读TRM的3 Reset Controller (RSTCTL),datasheet的5.26.1 Reset Timing、6.8.1 Device Resets。
,
jing chen:
上面两个截图,看门狗是硬复位的,这两种复位,哪种优先级更高,可靠性更好呢?
我们现在用的是第一种,有可能出现不能因为MCU自身复位的情况?所以基于你上面的回复,我该从这两种复位里选择哪一种更可靠呢?
,
Yale Li:
jing chen 说:上面两个截图,看门狗是硬复位的,这两种复位,哪种优先级更高,可靠性更好呢?
REBOOT更高,但是只能通过调试器引起;
jing chen 说:我们现在用的是第一种,有可能出现不能因为MCU自身复位的情况?
根据上一条来说,是的;
jing chen 说:所以基于你上面的回复,我该从这两种复位里选择哪一种更可靠呢?
综合来说的话是看门狗
,
jing chen:
你这边说REBOOT只能通过调试器引起复位,但是我们一直都不是在调试模式下调用这个复位模式,却可以引起MCU复位。这个怎么解释呢?
那么这么说来,是不是REBOOT不通过调试器引起的复位可能是不可靠的?有可能会出现复位不了的情况?
,
Yale Li:
jing chen 说:你这边说REBOOT只能通过调试器引起复位,但是我们一直都不是在调试模式下调用这个复位模式,却可以引起MCU复位。这个怎么解释呢?
不好意思,这个确实是我的理解出现了偏差。REBOOT可以通过软件引起复位,而且是通过软件引起的复位最彻底的复位。它与POR不同的是可以通过软件引起,且不会引起调试部分的复位。
TI中文支持网







