搜索
bottom↓
回复: 11

C8051F350 ad采样通道切换遇到的问题

[复制链接]
头像被屏蔽

出0入0汤圆

发表于 2011-10-29 21:41:58 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2011-10-29 22:47:02 | 显示全部楼层
切换通道后要重新校正!
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2011-10-30 09:35:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2011-10-30 20:19:47 | 显示全部楼层
还没有做过两路采集。
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2011-10-31 10:11:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2011-10-31 10:27:37 | 显示全部楼层
个人建议:
1. 切换通道后不必执行校准,因为电子开关的差异很小不会影响测量
2. 同一通道至少采集4次,丢掉前三次的数据,最后一次是准确的,然后再换通道
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2011-10-31 23:42:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2012-3-28 13:19:22 | 显示全部楼层
不错,受教了

出0入0汤圆

发表于 2012-7-7 08:46:42 | 显示全部楼层
dsoyy 发表于 2011-10-31 23:42
【5楼】zhao_pc0305  
个人建议:
1. 切换通道后不必执行校准,因为电子开关的差异很小不会影响测量

转换通道后要丢掉前三个数据?我怎么没有看见呢...

出0入0汤圆

发表于 2012-7-7 16:56:02 | 显示全部楼层
li0713 发表于 2011-10-29 22:47
切换通道后要重新校正!

不需要吧!!我单端和差分方式混合采样 矫正一次就ok了!只要更改ADC0MUX 就ok了!!说实话这个单片机的continue模式不能像stm32那样几个通道循环采样!!

出0入0汤圆

发表于 2012-7-7 17:00:54 | 显示全部楼层
你改成单词转换ADC0MD =0x82  转换结束后等ADC0MUX =0X80才能修改ADC0MUX 然后再次ADC0CMD=0X82启动转换,我这是352 16bit的多通道差分 单端混合采样
while(1)
   {

                 ADC0CN = 0x07;                         // unique output codes, GAIN=128
                   ADC0MUX = 0x01;                  // Input pin selection:
              ADC0MD = 0x82;                      // Start SINGLE conversions   
         while(!AD0INT);                     // wait till conversion complete
         AD0INT = 0;                         // clear AD0 interrupt flag

         // concatenate ADC0 data bytes to form the16-bit value
         ADC_OutputVal = (char)ADC0H;
         ADC_OutputVal <<= 8;
         ADC_OutputVal += (long)ADC0M;
        voltage_temp1=(float)((float)ADC_OutputVal/26);
         current1=(voltage_temp1-offset_voltage1)/128*10.14/5+offset_current1;
               
      
               
                ADC0CN = 0x00;                      // Gain = 1, Unipolar mode
                ADC0MUX=0X08;                      //select pin
                ADC0MD = 0x82;                      // Start SINGLE conversions   
                while(!AD0INT);                     // wait till conversion complete
        AD0INT = 0;                         // clear AD0 interrupt flag
                //ADC0MD=0X80;
                ADC_OutputVal=(char)ADC0H ;
                ADC_OutputVal<<=8;
                ADC_OutputVal+=(long)ADC0M;
                AIN0_voltage=(float)((float)ADC_OutputVal/26)/1000*10.14;
                power1=current1* AIN0_voltage;



                printf ("current1 = %.2fA\t ;AIN0_voltage=%.2fV\t;power=%.4fW,temp_voltage= %.2f\n",current1,AIN0_voltage,power1,voltage_temp1);


        }

出0入0汤圆

发表于 2012-7-7 17:01:32 | 显示全部楼层
前面还有个adc init初始化频率什么的没写!你看官方代码就可以了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 00:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表