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,采样需要抽电流,你在输入端加一个大一点的电容看看有没有改善。