AD7705/TM7705使用注意事项

http://bbs.eeworld.com.cn/thread-66467-1-1.html

1 空闲是SCLK=1(C POA),DIN=1(因为写寄存器都是从写通讯寄存器开始,此时第8位必须为0,若DIN上存在干扰使BIT8=1则会持续等待后面7bitS,从而RDY不拉低。

2 缓冲和非缓冲:

 非缓冲模式时,AD7705模拟输入前端的电阻电容的变化对AD转换精度影响很大,造成测量不准确,所以通常我们使用buf模式。因为缓冲模式可以适应前段温度,阻容参数变化,接入高阻抗信号源抗干扰能力强 

3 不管是校准还是数据AD转换,数字滤波器同步位FSYNC都要置为0,否则RDY不会拉低;

4注意输入通道的电压范围,结合极性和增益。

5 注意CLK的设置,AD7705和TM7705说的不一样

6 TM7706的第三通道是3(第一、二通道分别是0和1),所以读三个通道AD值的寄存器值分别应为0x38,0x39,0x3b.

7 软复位是发送40了SCLK高低脉冲,相当于发送5个0xFF的寄存器值;

8IO口模拟读一个字节时须注意(在MSB,上升沿读数据),一定是先移位再读高低加上去;如果按照下面的错误读法,读的值将扩大2倍(最后一位永远是0),输入只要超过一半16位AD值就会溢出

/*错误程序*/
static uint8_t TM7706_Recive8Bit(void)
{
    uint8_t i;
    uint8_t read = 0;

    for (i = 0; i < 8; i++)
    {
        TM7706_SCLK_L;
       if(TM7706_MISO_IS_H)
      {
              read++;
      }    
        read = (read<<1);/*多左移一位,且最低位永远为0*/
        TM7706_Delay();

        TM7706_SCLK_H;
        TM7706_Delay();/*Tspw最小100ns;*/

    }
    TM7706_SCLK_H;//20201112
    return read;
}


/*正确程序*/
static uint8_t TM7706_Recive8Bit(void)
{
    uint8_t i;
    uint8_t read = 0;

    for (i = 0; i < 8; i++)
    {
        TM7706_SCLK_L;
        read = (read<<1)|TM7706_MISO_IS_H;
        TM7706_Delay();

        TM7706_SCLK_H;
        TM7706_Delay();/*Tspw最小100ns;*/

    }
    TM7706_SCLK_H;//20201112
    return read;
}
View Code

 

posted on 2019-05-10 18:07  杰瑞鼠  阅读(4879)  评论(0编辑  收藏  举报