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

2010-3-5 10:01 5762 10 10 分类: 测试测量
近日项目中应用了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);
 
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
10
关闭 站长推荐上一条 /3 下一条