|
//------------initAD7712------------
//说明:AD芯片初始化
//创建日期:2010-07-28
//历史记录:
//-----------------------------
void initAD7712(void)
{
unsigned long temp = 0;
AD7712_WDATA = 0;
AD7712_TFS = 1;
AD7712_RFS = 1;
AD7712_A0 = 1;
AD7712_SCLK = 0;
delay_10us(10);
writeCtrlRegister(0x22830D);
delay_10us(10);
//正常模式
//增益为1
//选择AIN2
//非掉电模式,正常模式
//24位字长
//Burnout Current ON
//双极输入
}
//------------readAD------------
//说明:读取AD值
//创建日期:2010-07-28
//历史记录:
//-----------------------------
void readAD(unsigned long *data)
{
unsigned char i = 0;
unsigned char dTemp[3] = {0};
*data = 0;
while(AD7712_DRDY);//判断是否有数据转换完成
AD7712_RFS = 0;
delay_10us(1);
for(i = 0; i < 24; i++)
{
*data += AD7712_RDATA;
if(i < 23)
{
*data <<= 1;
}
AD7712_SCLK = 1;
Nop();
AD7712_SCLK = 0;
Nop();
}
AD7712_RFS = 1;
}
//------------writeCtrlRegister------------
//说明:写控制寄存器
//创建日期:2010-07-28
//历史记录:
//-----------------------------
void writeCtrlRegister(unsigned long data)
{
unsigned char i = 0;
unsigned char bitTmp = 0;
AD7712_A0 = 0;
AD7712_TFS = 0;
delay_10us(1);
for(i = 0; i < 24; i++)
{
if(data & 0x00800000)
{
AD7712_WDATA = 1;
}
else
{
AD7712_WDATA = 0;
}
Nop();
AD7712_SCLK = 1;
Nop();
AD7712_SCLK = 0;
Nop();
data <<= 1;
}
AD7712_TFS = 1;
AD7712_A0 = 1;
AD7712_WDATA = 0;
}
上面是AD的代码。然后下面是原理图。
![](http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_596738YFCZNN.JPG)
这些都是光耦。原理图不是我画的,可能不太标准 (原文件名:1.JPG)
![](http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_596739HTWK64.JPG)
这两个是通道选择用的。 (原文件名:2.JPG)
![](http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_596740AT8MV3.JPG)
AD7712,和一个74HC125 (原文件名:3.JPG)
哪位高手帮我看看原理图有没有问题~。我是个新手,这些图不是我画的。我也不太明白~ |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|