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; }