您好!谢谢回复!
我用的是LPC1788,在量产过程中,通一批板,RTC复位后(VBAT和VDD都断开),然后上电直接读取GPREG[0~4]的值,80%的板卡GPREG[0~4]为0,20%的为其他值。没有保留上一次的值。与您的实验结果完全不一致。测试代码见下面。
另外,对您的实验有以下疑问:
1、RTC重新上电时,是否确保之前VBAT和VDD都断开?
2、VBAT前面是否有储能电容?能否把电池去掉,VBAT引脚进行放电,然后做一次实验?
希望可以得到深圳这边的FAE现场支持。
谢谢!
代码1,先对寄存器写值,若VBAT有电(不复位),GPREG[0~4]值不变:
int main (void)
{
int test0,test1,test2,test3,test4,i;
SystemInit();
LPC_RTC->GPREG0 = 0x07654321;
LPC_RTC->GPREG1 = 0x17654321;
LPC_RTC->GPREG2 = 0x27654321;
LPC_RTC->GPREG3 = 0x37654321;
LPC_RTC->GPREG4 = 0x47654321;
test0 = LPC_RTC->GPREG0;
test1 = LPC_RTC->GPREG1;
test2 = LPC_RTC->GPREG2;
test3 = LPC_RTC->GPREG3;
test4 = LPC_RTC->GPREG4;
i = 0;
}
代码2,对寄存器读值
int main (void)
{
int test0 = 0;
int test1 = 0;
int test2 = 0;
int test3 = 0;
int test4 = 0;
SystemInit();
GPIOInit();
LPC_GPIO3->DIR |= LED3;
LPC_GPIO3->SET = LED3;
test0 = LPC_RTC->GPREG0;
test1 = LPC_RTC->GPREG1;
test2 = LPC_RTC->GPREG2;
test3 = LPC_RTC->GPREG3;
test4 = LPC_RTC->GPREG4;
}