请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
您好!
我正在尝试使用 SoC C5505 eZdsp 监测电池电压。 根据 SPRUFP1C (SAR / ADC 用户指南)、我使用的是 GPAIN0方法。
我这样做:
-测量基准电压(通道0)
-测量电池电压/8作为内部分压器(通道1)的输出。
我的问题是基准电压低于电池电压。
这是我的代码:
UINT16 Read_Battery_Voltage (void)
{
uint16 i、ref、val、TBR;
SARPINCTRL = 0x3002; // GNDON = 1
SARCTRL = 0x0400; // ADCSTRT=0,CHSEL =0 (通道0),MULTICH =0 (正常模式),SINGLE =1
对于(i=0;i<30;i++)
asm (" nop");
//读取通道0上的电压基准
SARCTRL = SARCTRL | 0x8000;// ADCSTART (15)= 1以启动转换
while (SARDATA >> 15);//等待直到 SARDATA (15)=1 (ADCBUSY = 1)
REF = SARDATA & 0x03FF;//将基准电压读入 ref 变量
SARPINCTRL = 0x3000; // GNDON = 0
//读取通道1上的电池电压/8
SARCTRL = 0x1400; // ADCSTRT=0,CHSEL =1 (通道1),MULTICH =0 (正常模式),SINGLE =1
对于(i=0;i<30;i++)
asm (" nop");
SARCTRL = SARCTRL | 0x8000;// ADCSTART (15)= 1以启动转换
while (SARDATA >> 15);//等待直到 SARDATA (15)=1 (ADCBUSY = 1)
Val = SARDATA & 0x03FF;//将电池电压读入 val 变量
TBR = val - ref;
返回 TBR;
}
有任何提示?
提前感谢
Paolo