前面在“富士通工控板DIY之AD篇”中讨论了AD多通道同时测量的方法(由于芯片自身只有3个ADC unit0、1、2转化器,所以一次测量过程最多只能测量3路AD通道)。实际应用中我们测量的的通道数可能远大于3,比如我们用到6个AD通道,这时我们怎么办呀?对,我们可以采样循环测量。6路AD通道平均分配给3个ADC unit0、1、2转化器(当然你也可以只用1个AD转化器测量6个通道)。16个AD通道都可以配置到任意一个AD转化器.我们按下面模式扩展测量。
AD0 ——|
|——> ADC unit0
AD1 ——|
AD2 ——|
|——> ADC unit1
AD3 ——|
AD4 ——|
|——> ADC unit2
AD5 ——|
第一轮测量时测量
AD0 ——> ADC unit0
AD2 ——> ADC unit1
AD4 ——> ADC unit2
第二轮测量时测量
AD1 ——> ADC unit0
AD3 ——> ADC unit1
AD4 ——> ADC unit2
第二轮测量后转到第一轮测量上面,循环交替测量。可以使我们测量扩展到6路。
每一轮可以同一通道测3到5次,为什么不测1次呢?大家先想想,后面给大家揭底.
配合咱们的富士通工业测控DIY板(DIY板有两路AD通道AN14和AN15)。为了体现出循环测量,我们用ADC unit0转换器来循环测量AD14和AD15两个通道。
Easy KIt 板例程里面有1路AD测量的程序,为了讲起来简单些。我们以这个例程为模板来修改程序。
1、修改AD初始化程序。
IOREG_ADE |= 0xC000; //AD14、AD15为模拟口
IOREG_PFR1 = 0xC000; //P1E、P1F为特殊功能管脚
IOREG_SCIS1_U0 = 0x40; //将AD14通道指向ADC unit0转换器
IOREG_SCCR_U0 |= 0x01; //启动AD转换
......
2、主程序中当AD14测量结果读取后将AD15通道指向ADC unit0转换器,启动AD转换,等到读取到AD15测量结果后,又转到AD14通道上面如此次循环测量。
SCFD为AD转化结果寄存器。低五位为测量通道。高12位为AD转化结果.
注意:每一轮测量时每一通道只测一组数据,当我们调节AD14通道的电位器时AD15电压会有小幅度变化(0.4v左右),同样我们调节AD15通道的电位器时AD14电压也会有小幅度变化(也在0.4Vz左右).
为什么会出现这种问题呀?我们使用同一个AD转换器循环测量2个AD通道。AD转换完成后,AD转换器累积了少量的残余电压,残余电压可以随时间慢慢释放掉,也可以通过多读几次AD就可以大幅度减小残余电压影响。
按照这个思路将同一通道测量次数由每轮1次增加到3次,第三次测量结果为当前AD通道采样值。经测试调节AD14通道的电位器时AD15电压未出现波动,同样调节AD15通道的电位器时AD14电压未出现波动.解决了通道相互影响的问题。
如果你要测量多路AD时,可以参考本文和“富士通工控板DIY之AD篇”,相信你一定能找到一个最佳的办法。
富士通工控板DIY之AD篇: https://bbs.eeworld.com.cn/thread-341444-1-1.html
[
本帖最后由 ltbytyn 于 2012-7-26 13:42 编辑 ]