![]() |
|
||||||||||||||
| | 首页 | 新闻 | 文库 | 方案 | 技术 | 独家 | 座谈 | 下载 | 图库 | 开发板 | 仿真器 | 邮购 | VIP | 芯片 | 客户评价 | 论坛 | | ||
|
||
|
|||||
| AD7705使用两点注意事项(附初始化程序) | |||||
作者:佚名 文章来源:Internet 点击数: 更新时间:2006-11-22 ![]() |
|||||
|
近日项目中应用了AD7705,作为一款16位的AD,非常适合应用在高精度慢速采集的场合。我在项目中实现温度分辨率0.01度,给PID控制精度提高提供了条件。
但开始调试时,也遇到了一些麻烦,主要有两点:
1,初始化:
如果AD7705复位引脚直连VCC,最好在初始化程序中加入初始化序列,不然ready信号不会输出。
2,输入范围
如果AD7705采集单端信号,则输入必须在0到VDD之间,而不可以超出或为负,如果一个输入为负,则另一个输入会有灌入电流的现象,芯片无法正常运行。
附初始化程序:
/*
********************************************************************************************************* * InitAD7705 * * Description : init ad7705 * * Arguments : none ********************************************************************************************************* */ void InitAD7705 (void) { INT8U i; INT8U temp; OS_CPU_SR cpu_sr; DDRB |= 0x07;// Mosi, sck, ss
DDRB &= ~(1 << 3);//Miso PORTB |= 1 << 1;//sck high PORTB |= 1 << 2;//mosi high PORTB &= ~ (1 << 0); // ss low for (i=0;i<50;i++) // AD7705复位
{ PORTB &= ~(1 << 1); PORTB |= 1 << 1; } SpiInit();
//PutChar1(0x5a); temp = PutCharSpi(0x20);//next is clock temp = PutCharSpi(0x05);//60hz temp = PutCharSpi(0x10);//next is setup temp = PutCharSpi(0x44);// while ((PIND & 0x01) == 1); temp = PutCharSpi(0x21);//next is clock
temp = PutCharSpi(0x05);//60hz temp = PutCharSpi(0x11);//next is setup temp = PutCharSpi(0x44);//0x44比0x46要准确一些,可能是因为缓冲 //不适合于变化的输入。比如模拟开关,以及通道切换 //带来的影响,如果只有一路 //稳定的输入,可以就不会有问题 //FSYNC 不能为1,不然,似乎rdy线不会变低 while ((PIND & 0x01) == 1); //PutChar1(0xA5); } |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| AD9958用ADuC845控制的keil源 AD5933做的简易网络分析仪(改 AD5302 8位DAC |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 本站介绍 | 合作联络 | 欢迎投稿 | 广告业务 | 网站地图 | 设为首页 | 加入收藏 | 友情链接 | 网站公告 | 联系我们 | | |||
|