用SPI读AD7888
用SPI读AD7888通道0,1,2转换的结果。收到的数据总是不对,不知道下面的程序有什么问题,请各位大侠们帮忙看看。该怎么修改呢?void AD_READ(void) //读AD数据
{ unsigned char temp,clear;
unsigned int i,ad1,ad2,ad0;
SELECT_AD; //选通AD芯片
SPDR= 0x00;//指令通道0
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
clear = SPDR;
SPDR= 0x00;
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
temp= SPDR;
NOSELECT_AD;
SELECT_AD; //选通AD芯片
SPDR= 0x08;
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
clear = SPDR;
ad0=(unsigned int)(temp*256)+clear;
SPDR= 0x08;//指令通道1
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
temp=SPDR;
NOSELECT_AD;
SELECT_AD; //选通AD芯片
SPDR= 0x10;//指令通道2
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
clear = SPDR;
ad1=(unsigned int)(temp*256)+clear;
SPDR= 0x10;
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
temp=SPDR;
NOSELECT_AD;
SELECT_AD; //选通AD芯片
SPDR= 0x00;//指令通道0
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
clear = SPDR;
ad2=(unsigned int)(temp*256)+clear;
SPDR= 0x00;
while (!(SPSR&(1<<SPIF)));
NOSELECT_AD;
} 我知道了,我把高低字节弄反了,调一下就好了。 现在AD7888市价多少?深圳这边的.. 有没有电路图 可不可以穿上来 参考下你用的什么芯片选通AD是用哪个引脚控制的 第一次ad值应左移3位 记得ADI的也给我推过这个AD芯片,后来没了解也没用。
页:
[1]