微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541板载温度传感器数据采集问题

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top