首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[讨论]对同一模拟量进行4次采样,而采样结果却有很大的不同。

[讨论]对同一模拟量进行4次采样,而采样结果却有很大的不同。

有个ADC的初始化程序是这样的:
void AD_Init(void)
{
ATD0CTL1=0x00; //7:1-外部触发,65:00-8位精度,4:放电,3210:ch
ATD0CTL2=0x40; //禁止外部触发, 中断禁止
ATD0CTL3=0xa0; //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转
ATD0CTL4=0x01; //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]
ATD0CTL5=0x30; //6:0特殊通道禁止,5:1连续转换 ,4:1多通道轮流采样
ATD0DIEN=0x00; //禁止数字输入
}
我理解是:对通道0连续进行4次采样,不断循环。每一轮采样的结果存放在ATDDR0,ATDDR1,ATDDR2和ATDDR3中。
我用开发板进行了调试。通过改变AN0的模拟输入进行测试。测试结果如下:
模拟输入1: ADDR0 1.68 ; ADDR1 2.21 ; ADDR2 2.25; ADDR3 2.78
模拟输入2: ADDR0 1.45 ; ADDR1 2.03 ; ADDR2 2.50; ADDR3 2.31
模拟输入3: ADDR0 1.09 ; ADDR1 1.86 ; ADDR2 2.31; ADDR3 2.58
我的问题是:为什么对同一输入进行4次采样,而采样结果却有很大的差别呢?

难道这就是要加入滤波算法的原因吗?还是我对程序理解有错误?

请大家给些提示。谢谢!

ATD0CLT5寄存器的MULT位为1,意味着对多个通道轮流进行采样,而不是对单个通道进行多次采样。

海纳百川  有容乃大
返回列表