本帖最后由 HUA_WIND 于 2015-9-10 12:24 编辑
我想请大侠帮忙看一下我的ad转换软件过程有没有错误,急等。
读写寄存器正确,AD转换读出来的数据随机,不正确。IO模拟SPI。
硬件:AIN0,ANI1差分输入,内部2.5V参考,DSYNC及DRDY悬空,用软件控制。
void AD_Convert(void)
{
BYTE temp;
SPI_CSN_CLR;
DrvSYS_Delay(3000);//Ñ¡ÔñADS1216Y
SpiTxRxByte(0xfe);
DrvSYS_Delay(100);//¸´Î»¼Ä´æÆ÷
SpiTxRxByte(0x50);
SpiTxRxByte(0x02);
SpiTxRxByte(0x0e);//0x00ÅäÖÃSETUP¼Ä´æÆ÷
SpiTxRxByte(0x01);//ÅäÖÃMUX¼Ä´æÆ÷,Ñ¡ÔñͨµÀ0+¡¢Í¨µÀ1-²î·Ö
SpiTxRxByte(0x00);//ÅäÖÃACR,ÔöÒæÑ¡1µµ
DrvSYS_Delay(100);
//test ¼Ä´æÆ÷¶Áok
// SpiTxRxByte(0x19);
// SpiTxRxByte(0x00);
// AD0_VALUE[0] = SpiTxRxByte(0);
//test
SpiTxRxByte(0x58);
SpiTxRxByte(0x01);
SpiTxRxByte(0x80);//ÅäÖòÉÑùƵÂʼĴæÆ÷0x780
SpiTxRxByte(0x07);
DrvSYS_Delay(100);
SpiTxRxByte(0x57);//ÅäÖÃIOȫΪÊä³ö
SpiTxRxByte(0x00);
SpiTxRxByte(0x00);
DrvSYS_Delay(100);
SpiTxRxByte(0x5D);//ÅäÖÃÂú¿Ì¶È¼Ä´æÆ÷
SpiTxRxByte(0x02);
SpiTxRxByte(0xFF);
SpiTxRxByte(0xFF);
SpiTxRxByte(0xFF);
DrvSYS_Delay(100);
SpiTxRxByte(0x59);
SpiTxRxByte(0x00);
SpiTxRxByte(0x37);//Ñ¡ÔñÂ˲¨Ä£Ê½,SINC3£¬Ë«¼«ÐÔ£¿
DrvSYS_Delay(100);
SpiTxRxByte(0x56);
SpiTxRxByte(0x00);
SpiTxRxByte(0x08);//08hΪͨµÀ0(0aH,0cH,0eH)
DrvSYS_Delay(1000);
SpiTxRxByte(0xfc);
DrvSYS_Delay(500);
wait: SpiTxRxByte(0x19);//¶ÁM/DEC1,È¡/DRDY
SpiTxRxByte(0x00);
temp=SpiTxRxByte(0);
temp=temp&0x80;
if(temp)goto wait;//µÈ´ýÊý¾Ý×¼±¸ºÃ
SpiTxRxByte(0x01);
DrvSYS_Delay(100);
SpiTxRx3Byte(0);
SPI_CSN_SET;
}
|