EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请教一下, lvd_che_low2dot3V这个函数是用于 检测 锂电池电压(初始时3V), 当设备中用于控制电机开关阀时,检测 电压低于2.3V时 作此时电池中的电能已耗尽,液晶屏上提示 【请换电池】 ,实测 当 电池电压3V时, 而后电机动作到达最终点时,电池电压为2.55V左右,请问此时用lvd_che_low2dot3V 这个函数测出的电压准吗?需要不需要用BGR?
$ @# ~6 V; X/ p+ Z2 U. J6 X9 K( R请问 lvd_che_low2dot3V * y4 s1 y7 ?/ g
int lvd_che_low2dot3V(void)4 |1 h) b* b& e* \* I
{3 }4 P7 q: p/ r3 E6 \# o% c6 w# s
int i, c = 0;
; l, q% c4 C- I% Y- G* x% [+ n M0P_SYSCTRL->PERI_CLKEN_f.VC = 1;8 [' N$ s. p9 k' D
M0P_LVD->CR_f.SOURCE_SEL = 0; // VCC) Q1 [8 u' N' L( ^' q! _
M0P_LVD->CR_f.VTDS = 5; // 2.3V
6 L7 _# ~7 C% `' A/ r: U M0P_LVD->CR_f.FLTEN = 0; // no filter
! l$ O7 _! W4 ^8 E" u4 u M0P_LVD->CR_f.DEBOUNCE_TIME = 0; // filter time
. X: n4 g9 Z4 o8 E M0P_LVD->CR_f.HTEN = 1; // level2 s, Z8 V1 b, K. S' t& c& m
M0P_LVD->CR_f.ACT = 0; // use as int
8 _2 O- s3 _ E# g; l M0P_LVD->CR_f.IE = 0; // int off
5 B' x5 }" ~8 H* P* Y5 C M0P_LVD->CR_f.LVDEN = 1; // LVD on 电池电压检测 不耗电时选择2.5V* B( S9 ^1 c8 o& \9 b7 U$ {6 F# ]# b
M0P_LVD->IFR_f.INTF = 0;/ J$ x, r) ?2 a: _3 E
delay_ms(2); if(M0P_LVD->IFR_f.INTF)
0 g4 f5 G7 s8 J. K% `3 X {
2 C4 q# L/ x. u9 \! D: H M0P_LVD->IFR_f.INTF = 0; for(i = 0; i < 10; i++). Z. z2 v4 M7 L
{
: _7 I! f. w$ U' \7 x delay_ms(1); if(M0P_LVD->IFR_f.INTF)
/ E! O$ I+ A9 T {$ x/ w% l( {8 R! o- a
c++;4 y& n# P1 i8 S s( j, x
} M0P_LVD->IFR_f.INTF = 0;
# _8 Z$ S6 O% J' M0 x P B }, ]* o) b4 ^& j! D) b% d' @
} M0P_LVD->CR_f.LVDEN = 0;0 _" g1 N# O3 {
M0P_SYSCTRL->PERI_CLKEN_f.VC = 0;
5 n3 T1 \+ S/ o7 C: H return c > 8;
$ Z! R x5 Q( @* {- E$ {9 K! Z/ N} / J; X( R9 G6 n& v. \
|