CC2541温度采集为什么要连续采样10次呢?

2019-07-18 14:56发布

CC2541板载温度传感器,数据采集采用如下方式获取:
  1. <p>uint16 ADC_Read (uint8 channel)</p><p>{</p><p>    int16  reading = 0;</p><p>    uint8  adcChannel = 0x01<<channel;</p><p>    int16  Result = 0;</p><p>    if (channel <= 7)   // 通道0-7需要通过P0.0-P0.7输入</p><p>    {</p><p>        ADCCFG |= adcChannel;</p><p>    }</p><p>    uint8 i=0;</p><p>    do{</p><p>        ADCCON3 = channel | 0x20;           // 12位精度,启动转换</p><p>        while (!(ADCCON1 & 0x80));          // 等待转换完成</p><p>        // 读取采样结果</p><p>        reading = (int16)(ADCL);</p><p>        reading |= (int16)(ADCH << 8);</p><p>        reading >>= 4;                      // 丢弃低位</p><p>        Result += reading;                  // 累加</p><p>    }while(i++ < 10);   // 连续采样10次</p><p>    if (channel <= 7)</p><p>    {</p><p>        ADCCFG &= (adcChannel ^ 0xFF);</p><p>    }</p><p>    return (Result/10);</p><p>}</p>
复制代码
其中为什么要连续采样10次呢?

我测试了下,在同一温度下采样,循环1次采出来的是2900;循环2次采出来的是2175;循环5次采出来的是1740;循环8次采出来的是1632;循环10次采出来的是1595;这个是什么原因呢?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
发烧友推温针
2019-07-18 15:31
多采几次取平均值减小误差。

首先确认输入是不是电压本身就是下降了,由于2541是sigma delta的ADC,采样需要抽电流,你在输入端加一个大一点的电容看看有没有改善

一周热门 更多>