新闻  |   论坛  |   博客  |   在线研讨会
AD7705使用两点注意事项(附初始化程序)
mayer | 2009-07-20 17:52:52    阅读:3996   发布文章

AD7705使用两点注意事项(附初始化程序)

 

近日项目中应用了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 |= 0×07;// 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(0×5a);
 temp = PutCharSpi(0×20);//next is clock
 temp = PutCharSpi(0×05);//60hz
 temp = PutCharSpi(0×10);//next is setup
 temp = PutCharSpi(0×44);//
 while ((PIND & 0×01) == 1);
 temp = PutCharSpi(0×21);//next is clock
 temp = PutCharSpi(0×05);//60hz
 temp = PutCharSpi(0×11);//next is setup
 temp = PutCharSpi(0×44);//0×44比0×46要准确一些,可能是因为缓冲
 //不适合于变化的输入。比如模拟开关,以及通道切换
 //带来的影响,如果只有一路
 //稳定的输入,可以就不会有问题
 //FSYNC 不能为1,不然,似乎rdy线不会变低
 while ((PIND & 0×01) == 1);
 //PutChar1(0xA5);

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客