请教一下, lvd_che_low2dot3V这个函数是用于 检测 锂电池电压(初始时3V), 当设备中用于控制电机开关阀时,检测 电压低于2.3V时 作此时电池中的电能已耗尽,液晶屏上提示 【请换电池】 ,实测 当 电池电压3V时, 而后电机动作到达最终点时,电池电压为2.55V左右,请问此时用lvd_che_low2dot3V 这个函数测出的电压准吗?需要不需要用BGR?
请问 lvd_che_low2dot3V
int lvd_che_low2dot3V(void)
{
int i, c = 0;
M0P_SYSCTRL->PERI_CLKEN_f.VC = 1;
M0P_LVD->CR_f.SOURCE_SEL = 0; // VCC
M0P_LVD->CR_f.VTDS = 5; // 2.3V
M0P_LVD->CR_f.FLTEN = 0; // no filter
M0P_LVD->CR_f.DEBOUNCE_TIME = 0; // filter time
M0P_LVD->CR_f.HTEN = 1; // level
M0P_LVD->CR_f.ACT = 0; // use as int
M0P_LVD->CR_f.IE = 0; // int off
M0P_LVD->CR_f.LVDEN = 1; // LVD on 电池电压检测 不耗电时选择2.5V
M0P_LVD->IFR_f.INTF = 0;
delay_ms(2);
if(M0P_LVD->IFR_f.INTF)
{
M0P_LVD->IFR_f.INTF = 0; for(i = 0; i < 10; i++)
{
delay_ms(1); if(M0P_LVD->IFR_f.INTF)
{
c++;
} M0P_LVD->IFR_f.INTF = 0;
}
} M0P_LVD->CR_f.LVDEN = 0;
M0P_SYSCTRL->PERI_CLKEN_f.VC = 0;
return c > 8;
}
|