佚名通过本文主要向大家介绍了cc2541,cc2541中文数据手册,cc2541烧录器,cc2541编程器,cc2541编程器脱机等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: CC2541板载温度传感器数据采集问题
描述:
其中为什么要连续采样10次呢?
最初考虑是取平均值让最终结果稳定,但是我尝试修改了一下(将10修改成2),发现所得到的数据发生了变化(正常25,修改后变为88),求大神指导~~~

解决方案1:
描述:
BLEADCCC2541
数据采集采用如下方式获取: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次呢?
最初考虑是取平均值让最终结果稳定,但是我尝试修改了一下(将10修改成2),发现所得到的数据发生了变化(正常25,修改后变为88),求大神指导~~~


解决方案1:
你改成 1 试一下
解决方案2:连续十次采样就是均值滤波,如果改成两次采样,在ruturn哪里也要改为2
解决方案3: reading |= (int16)(ADCH << 8);
==>
reading |= ((int16)(ADCH)) << 8;