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.
你好,我想请教一个问题。
我使用RF430F5144编程,开发环境为CCS 5.1.
对于PMM的寄存器设置,使用的是DATASHEET中的SetVCoreUp(unsigned int level )程序。当SetVcoreUp(0)时Reset的电压为2.4 V, release reset的电压为2.5. SetVcoreUp(1)时Reset电压为2.6V,release reset电压为2.7V。而RF430F5144 datasheet中SetVcoreUp(1)时的RESET和release reset电压为1.94V。请问,怎样才能是Reset的电压与Datasheet中一致。
补充:
1.使用REFO+DCO使总线频率为1MHz左右,和直接使用8MHZ的外部晶振时的测量结果几乎一致。
2. 当SVS和SVM均disable时,Reset电压为2.2V,Release电压为2.5V。
你好,非常感谢你的回复. 你说的是对的.
我想问你另一个问题,也是同一IC. 在Datasheet中,从LPM4.5到Active的时间是2ms(typ), 3ms(max).但我通过多次测试,都是11ms.请问怎样解决这个问题.
部分代码如下:
void main(void) {
u8 Reset_Wait = TRUE;
u8 LPM45_Wake_Flag = FALSE;
u16 m_delay;
while(Reset_Wait == TRUE)
{
switch( __even_in_range(SYSRSTIV, SYSRSTIV_PMMKEY) )
{
case SYSRSTIV_NONE:
Reset_Wait = FALSE;
break;
case SYSRSTIV_BOR:
break;
case SYSRSTIV_RSTNMI:
break;
case SYSRSTIV_LPM5WU:
LPM45_Exit();
LPM45_Wake_Flag = TRUE;
break;
case SYSRSTIV_SECYV:
break;
case SYSRSTIV_SVSL:
break;
case SYSRSTIV_SVSH:
break;
case SYSRSTIV_SVML_OVP:
break;
case SYSRSTIV_SVMH_OVP:
break;
case SYSRSTIV_DOPOR:
break;
case SYSRSTIV_WDTTO:
break;
case SYSRSTIV_WDTKEY:
break;
case SYSRSTIV_KEYV:
break;
case SYSRSTIV_PLLUL:
break;
case SYSRSTIV_PERF:
break;
}
}
if(LPM45_Wake_Flag == FALSE) //If not wake from LPM4.5, then go to LPM4.5
{
LPM45_Enter();
}
}
void LPM45_Enter()
{
WDT_HOLD();
//IO SET
P1DIR = 0x7F; //0b00111011;
P1REN = 0xFF; //Input without any pulldown or pullup resistor
P1OUT = 0x00; //Input with pulldown resistor
P1SEL = 0x00;
P1IE = 0x80; //p1.7 INPUT INTERRUPT EANALBE
P1IES = 0x00; //low-to-high transition
P1IFG = 0; //Clear the interrupt flag
//P2.4 - RFIC FSK, P2.5 - RFIC - EN
P2DIR = 0xFF;
//P2REN = 0xFF;
P2OUT = 0x00;
P2SEL = 0x00;
//P3
P3DIR = 0xFF;
//P2REN = 0xFF;
P3OUT = 0x00;
//PJ
PJDIR = 0xFF;
//P2REN = 0xFF;
PJOUT = 0x00;
PJSEL = 0;
P1MAP0 = 0; // Map UCA0CLK
P1MAP1 = 0; // Map UCA0SIMO
P1MAP2 = 0; // Map UCA0SOMI
PMAPPWD = 0; // Lock port mapping registers
//models turn off
TA0CTL = 0; //Turn off all timer
TD0CTL0 = 0;
TD1CTL0 = 0;
UCA0CTL1 |= UCSWRST; //Disable SPI interface
UCB0CTL1 |= UCSWRST;
__enable_interrupt();
//Enter LPM4.5
PMMCTL0_H = PMMPW_H;
PMMCTL0_L |= PMMREGOFF;
LPM45;
}
void LPM45_Exit()
{
PMMCTL0_H = PMMPW_H;
PM5CTL0 &= ~LOCKIO;
PMMCTL0_H = 0x00;
RAIDAES_Wake = TRUE;
Timer_Count_ms = 3; //Wake from lpm4.5: 2ms + XTAL set up: about 0.5 ms.
P3DIR |= 0x01; //此处打开IO.并测量wake信号和此时IO的输出信号的时间差.
P3OUT |= 0x01;
P1IFG = 0; //Clear pending interrupts
//while(1);
}