ADI 技术
直播中

李霞

7年用户 1221经验值
私信 关注
[问答]

AD7606 C51程序分享

最近一直在研究AD7606来做项目,感觉这块IC不错,资料齐全,很好用,速度快。在调试过程中也碰到很多问题,但都一一解决了。下面是C51程序,分享给大家,高手的请绕过。手下留情。

***it OS0=P5^2;
***it OS1=P0^4;
***it OS2=P0^3;

***it RANGE=P0^2;
***it CONVST=P0^1;
***it ADC_RST=P0^0;

***it RD_SCK=P4^6; //SPI=SCLK
***it ADC_CS1=P7^5;         //U19                                
***it ADC_CS2=P4^5;         //U15                                

***it FRSTDAT=P7^6; //指示何时读通道1(V1)数据=1;
***it HBEN=P4^3;   //DB14,选择输出:1=先输出高8位,后输出低8位
***it BUSY=P7^7;   //在高电平时读取数据

***it AD_DoutA=P2^0;  //DB7,串行模式用到,输出数据Dout A
***it AD_DoutB=P4^4;  //DB8,串行模式用到,输出数据Dout B

/*
*****************************************************************************
*        函 数 名: ad7606_Reset
*        功能说明: 硬件复位AD7606
*        形    参:无
*        返 回 值: 无
*****************************************************************************
*/
void ad7606_Reset(void)
{
        /* AD7606是高电平复位,要求最小脉宽50ns */
        
        ADC_RST=0 ;
        ADC_RST=1;
        ADC_RST=1;
        ADC_RST=1;
        ADC_RST=1;
        Delay1ms();
        ADC_RST=0;
}
/*
*********************************************************************************************************
[table=98%,#eeeeee][/table]
*        函 数 名: ad7606_StartConv
*        功能说明: 启动AD7606的ADC转换
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
void ad7606_StartConv(void)
{
        /* 上升沿开始转换,低电平持续时间至少25ns  */
        CONVST=0;
        CONVST=0;
        CONVST=0;        /* 连续执行2次,低电平约50ns */
        Delay10us();
        CONVST=1;
        Delay100us();
        Delay100us();
//        Delay100us();
}
//******************************************************************************//
void AD7606_init()
{
        Delay1ms();
        ad7606_Reset();
        OS2=1;OS1=1;OS0=0;  //设定过采样
        ADC_CS1=1;
        ADC_CS2=1;
        P2=0x80;
        RD_SCK=1;
        CONVST=1;
        RANGE=0; //选择+/- 5V 输入         
        HBEN=0;   //DB14,选择输出:1=先输出高8位,后输出低8位
}

//***************************************************************************
void AD7606C(uchar acch)//(unsigned int *adcdat)
{
        uint DoutA[4],DoutB[4];
        uint i,j,n;
        uchar TempAH,TempBH,TempAL,TempBL;

        OS2=1;OS1=1;OS0=0;  //设定过采样
        RANGE=1; //选择+/- 10V 输入        
        select_CH(acch);
        P51=1; P35=0;
        delayms(50);

        for(j=0;j<100;j++)
        {
                  
                ad7606_StartConv();        //启动AD7606的ADC转换
                  while(BUSY){;}
                ADC_CS1=0;
                ADC_CS2=1;
                TempAH=0;  TempBH=0;
                TempAL=0;  TempBL=0;

                for(n=0;n<4;n++)
                {
                        TempAH=TempAH<<1;
                        TempBH=TempBH<<1;
                        RD_SCK=0;  
                        if(AD_DoutA)TempAH|=0x01;
                        if(AD_DoutB)TempBH|=0x01;                                 
                        RD_SCK=1;

                        for(i=0;i<7;i++)
                        {               
                                RD_SCK=0;         
                                RD_SCK=1;
                                TempAH=TempAH<<1;
                                TempBH=TempBH<<1;
                                if(AD_DoutA)TempAH|=0x01;                                
                                if(AD_DoutB)TempBH|=0x01;                                                                                          
                        }
                        for(i=0;i<8;i++)
                        {               
                                RD_SCK=0;         
                                RD_SCK=1;         
                                TempAL=TempAL<<1;
                                TempBL=TempBL<<1;
                                if(AD_DoutA)TempAL|=0x01;                                
                                if(AD_DoutB)TempBL|=0x01;                                                                                          
                        }
                        DoutA[n]=MakeWord(TempAL,TempAH); //MakeWord(L,H);
                        DoutB[n]=MakeWord(TempBL,TempBH);
                }
                //..............................................
                ADC_CS1=1;         
        }

}

回帖(4)

顾天天

2018-8-19 07:11:30
非常感谢楼主的分享有需要AD7606 C51程序的侠士赶快copy走吧~
 
AD7606是一款16位、8通道同步采样模数数据采集系统(DAS),内置模拟输入箝位保护、二阶抗混叠滤波器、跟踪保持放大器、16位电荷再分配逐次逼近型ADC、灵活的数字滤波器、2.5V基准电压源、基准电压缓冲以及高速串行和并行接口。
 
AD7606,采用5V单电源供电,可以处理±10V和±5V真双极性输入信号,同时所有通道均能以高达200 kSPS的吞吐速率采样。输入箝位保护威廉希尔官方网站 可以耐受最高达±16.5V的电压。无论以何种采样频率工作,AD7606的模拟输入阻抗均为1 MΩ。它采用单电源工作方式,具有片内滤波和高输入阻抗,因此无需驱动运算放大器和外部双极性电源。
 
欲详细了解该产品,请点击http://www.analog.com/cn/products/analog-to-digital-converters/precision-adc-10msps/simultaneous-sampling-ad-converters/ad7606.html
举报

孙秀英

2018-8-19 07:27:32
多谢分享!
举报

杨波

2018-8-19 07:35:26
多谢分享啊 
举报

dongdongjun

2019-10-6 14:14:50
看看程序代码,正好用到
举报

更多回帖

发帖
×
20
完善资料,
赚取积分