CC2541板载温度传感器数据采集问题
时间:10-02
整理:3721RD
点击:
数据采集采用如下方式获取:
uint16 ADC_Read (uint8 channel)
{
int16 reading = 0;
uint8 adcChannel = 0x01<<channel;
int16 Result = 0;
if (channel <= 7) // 通道0-7需要通过P0.0-P0.7输入
{
ADCCFG |= adcChannel;
}
uint8 i=0;
do{
ADCCON3 = channel | 0x20; // 12位精度,启动转换
while (!(ADCCON1 & 0x80)); // 等待转换完成
// 读取采样结果
reading = (int16)(ADCL);
reading |= (int16)(ADCH << 8);
reading >>= 4; // 丢弃低位
Result += reading; // 累加
}while(i++ < 10); // 连续采样10次
if (channel <= 7)
{
ADCCFG &= (adcChannel ^ 0xFF);
}
return (Result/10);
}
其中为什么要连续采样10次呢?
我测试了下,在同一温度下采样,循环1次采出来的是2900;循环2次采出来的是2175;循环5次采出来的是1740;循环8次采出来的是1632;循环10次采出来的是1595;这个是什么原因呢?
多采几次取平均值减小误差。
首先确认输入是不是电压本身就是下降了,由于2541是sigma delta的ADC,采样需要抽电流,你在输入端加一个大一点的电容看看有没有改善。
