完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近一直在研究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个回答
|
|
非常感谢楼主的分享有需要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 |
|
|
|
多谢分享!
|
|
|
|
多谢分享啊
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
2282个成员聚集在这个小组
加入小组1023 浏览 2 评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1409 浏览 2 评论
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1953 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4283 浏览 2 评论
9079 浏览 1 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1593浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1709浏览 2评论
1024浏览 2评论
1695浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1410浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-3 04:48 , Processed in 0.893452 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号