这个芯片用SPI驱动,FPGA作为SPI主设备。显然用单片机驱动更方便。
#include <AT89X51.H>#include<math.h>
#include<INTRINS.h>
#define uchar unsigned char
#define uint unsigned int
sbit AD7707_DRDY=P3^3
sbit AD7707_DIN=P1^5
sbit AD7707_DOUT=P1^6
sbit AD7707_SCLK=P1^7
bdata uchar WtrByte
sbit WtrBit=WtrByte^7
void Init_AD7707(void) /*初始化AD7707*/
{
uchar i
AD7707_SCLK=1
AD7707_DIN=1
for(i=0i<100i++) /*防止接口迷失*/
{
AD7707_SCLK=0
AD7707_SCLK=1
}
}
void WriteToReg_AD7707(uchar RegByte) /*写AD7707寄存器*/
{
uchar i
WtrByte=RegByte
for(i=0i<8i++)
{
AD7707_SCLK=0
AD7707_DIN=WtrBit
AD7707_SCLK=1
WtrByte=WtrByte<<1
}
}
void AD_AINT1(void) //通道1初始化
{
WriteToReg_AD7707(0x20) /*激活通道 AIN1/LOCOM, 下一步 *** 作为写 Clock Register*/
WriteToReg_AD7707(0x18) /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/
WriteToReg_AD7707(0x10) /*激活通道 AIN1/LOCOM, 下一步 *** 作为写 Setup Register*/
WriteToReg_AD7707(0x44) /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/
}
void AD_AINT2(void) //通道2初始化
{
WriteToReg_AD7707(0x21) //*激活通道 AIN2/LOCOM, 下一步 *** 作为写 Clock Register*/
WriteToReg_AD7707(0x18) /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/
WriteToReg_AD7707(0x11) /*激活通道 AIN2/LOCOM, 下一步 *** 作为写 Setup Register*/
WriteToReg_AD7707(0x44) /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/
}
void AD_AINT3(void) //通道3初始化
{ WriteToReg_AD7707(0x23) /*激活通道 AIN3/HICOM, 下一步 *** 作为写 Clock Register*/
WriteToReg_AD7707(0x18) /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/
WriteToReg_AD7707(0x13) /*激活通道 AIN3/HICOM, 下一步 *** 作为写 Setup Register*/
WriteToReg_AD7707(0x44) /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/
}
uint Read_AD7707(void) /*读取AD7707数据*/
{
uchar i
uint Data=0
while(AD7707_DRDY==1)
for(i=0i<16i++)
{
Data=Data<<1
AD7707_SCLK=0
Data=Data|AD7707_DOUT
AD7707_SCLK=1
}
return Data
}
供供参考:http://www.zhixinrui.com/forum.php?gid=1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)