专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 硬件开发

哪位高手用过AD7714模数转换芯片的请进来指教

发布时间:2010-06-13 21:44:47 文章来源:www.iduyao.cn 采编人员:星星草
谁用过AD7714模数转换芯片的请进来指教
各位硬件高手,我是第一次用AD7714芯片,这个程序已经调试很久了,一直没有调试成功。
所以我把源代码复制在这里请各位高手指教,看看哪里不符合AD7714。其中,AD7714转换器的硬件电路设置为,POL=0 BUFFER=0 AIN6=GND=0 REFIN-=0 REFIN+=2.5V AIN6=0,CS=0

模拟量变化在0-2.5V时,输出值都没变化,具体为:
(24位十六进制数值H-L顺序)
模拟量:2.5V 7F FF FF
模拟量:2.5V FF FF FF 
模拟量:1V FF FF FF
模拟量:1V FF FF FF
模拟量:0V FF FF FF
一直没有正确的模拟量结果出来。
/*
////////////////////////////////////////////////////////////////////////////////////
*/
void WriteAD7714(unsigned char dat)
{ int i;
  unsigned char adregister=0,tem=0;
  GPIOPinWrite(GPIO_PORTE_BASE, AD7714_DIN,~AD7714_DIN);  
  GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,~AD7714_SCLK);  
  delay(3);  
  adregister=dat;
  for(i=0;i<8;i++)
  {  
  tem=(adregister>>(7-i))&0x01; 
  if(tem==0x01)  
  GPIOPinWrite(GPIO_PORTE_BASE, AD7714_DIN, AD7714_DIN);  
  else  
  GPIOPinWrite(GPIO_PORTE_BASE, AD7714_DIN, ~AD7714_DIN);  
  delay(2); 
  GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,AD7714_SCLK);  
  delay(4);  
  GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,~AD7714_SCLK);  
  delay(3); 
  }
  GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,~AD7714_SCLK);  
  GPIOPinWrite(GPIO_PORTE_BASE, AD7714_DIN,AD7714_DIN);
}

/* 
  ////////////////////////////////////////////////////////////////////////////////////
*/
unsigned char ReadAD7714(void)
{
unsigned char adregister=0,temp;
int i;  
 GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,~AD7714_SCLK); //设置闲置电平
  temp=0;
 for(i=0;i<8;i++)
  { temp=temp<<1;
  GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,AD7714_SCLK); //上跳沿  
  if(GPIOPinRead(GPIO_PORTE_BASE, AD7714_DOUT))  
  adregister|=1;
  else
  adregister|=0;  
  temp=(temp|adregister);  
  GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,~AD7714_SCLK); ; //下跳沿
  delay(5);  
  } 
 GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,~AD7714_SCLK);
 return (temp);
}

/* 
/////////////////////// AD7714 SOFT RESET ////////////////////////////////////////// 
*/
void AD7714Reset(void)  
{
int i;
GPIOPinWrite(GPIO_PORTE_BASE, AD7714_DIN, AD7714_DIN); //发送位数据
GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,~AD7714_SCLK); //设置闲置时钟电平
delay(1); //延迟5个及其周期
delay(25);  
for(i=0;i<40;i++){
GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,AD7714_SCLK); //设置闲置时钟电平
delay(2); //延迟2个及其周期
GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,~AD7714_SCLK); //下跳沿
delay(2);
}
GPIOPinWrite(GPIO_PORTE_BASE, AD7714_SCLK,~AD7714_SCLK); //设置闲置时钟电平
GPIOPinWrite(GPIO_PORTE_BASE, AD7714_DIN, AD7714_DIN); //发送位数据

}

/* 
  AD7714芯片硬件配置连接:POL=0 BUFFER=0 AIN6=GND=0 REFIN-=0 REFIN+=2.5V AIN6=0,CS=0
  以下将AIN1-AIN6,AIN2-AIN6,AIN3-AIN6,AIN4-AIN6,AIN5-AIN6配置成准差分 增益为1
*/
void AD7714_INIT(void)

  int i;
  static unsigned char REG_set[30]={
  0x20,0x41,0x30,0x40,0x10,0x20, //通道1初始化
  0x21,0x41,0x31,0x40,0x11,0x20, //通道2初始化
  0x22,0x41,0x32,0x40,0x12,0x20, //通道3初始化
  0x23,0x41,0x33,0x40,0x13,0x20, //通道4初始化
  0x26,0x41,0x36,0x40,0x16,0x20 //通道5初始化
  };
  
  for(i=0;i<30;i++)
  {  
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: