搜索
bottom↓
回复: 2

c8051f350 ADC转换数据不正确。大家看看是哪里不对

[复制链接]

出0入0汤圆

发表于 2012-9-3 14:42:16 | 显示全部楼层 |阅读模式
本帖最后由 sunnyjaky1 于 2012-9-3 14:49 编辑

void ADC_Init(void)
{
  unsigned long int i;
  //set adc idle mode
  ADC0MD = 0x80;
  //unipolar mode & pga = 1
  ADC0CN = 0x00;
  //internal vref+
  ADC0CF = 0x00;
  // CLK pre-devided
  ADC0CLK = ((unsigned long int)C8051_SYSCLK / 2457600) & 0xff - 1;
  ADC0DECL =  ((unsigned long int)C8051_SYSCLK / (ADC0CLK+1)/100/128) & 0xff - 1;
  ADC0DECH = 0;
  //dac offset
  ADC0DAC = 0x00;
  //in buffer control
  ADC0BUF = 0x00;
  //adc offset  
  ADC0COL = 0;  
  ADC0COH = 0;
  ADC0COM = 0;
  //adc gain
  ADC0CGH = 0x80;
  ADC0CGM = 0;
  ADC0CGL = 0;
  i = 2000;
  while(i--);
  ADC0STA = 0;  
  //adc multiplexer
  //+:adcin1 -:agnd
  ADC0MUX = 0x18;
  ADC0MD |= 0x81;                        // 完全内部校准
  while (!ADC0STA_bit.AD0CALC);                      // 等待转换完成
  ADC0MD = 0x80;  
}
其中C8051_SYSCLK :12MHZ
运行到最后一句的时候从仿真器看
ADC0CGH 0XFF ADC0CGM 0XFF ADC0CGL 0XFF
ADC0COL 0X50 ADC0COL 0XCD ADC0C0L 0X76
其中ADC0CO每次也不一样。
ADC0STA : 0X3A
所有通道转换后也全为FF FF FF
如果校正前adc0cg改为00 00 00,
所有通道转换后不论实际情况也全为00 00 00
看了网上的一些例程,但是都是一样的问题。请各位朋友给看看问题出在哪里。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-9-4 15:24:12 | 显示全部楼层
检查PGA是否设定太大,满幅了,
关闭缓冲,校准,只留最基本的转换设定,
我做的差分的正常,

出0入0汤圆

发表于 2014-6-24 20:34:22 | 显示全部楼层
看来这个片子引起不小的凡响啊,我大概是去年也调试了下,发现这个片子只能做成4位半的电压表!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-23 12:40

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

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