/************************************ ** ADS_Read_AD : ** SPI Reading ** Read adc value ************************************/ uint16_t ADS_Read_AD(uint8_t CMD) { uint8_t i; uint8_t count=0; uint16_t Num=0; T_DCLK_L; T_CS_L; ADS_Write_Byte(CMD); for(i=200;i>0;i--); T_DCLK_H; __nop();__nop(); __nop();__nop(); T_DCLK_L; for(count=0;count<16;count++) { Num<<=1; T_DCLK_L; __nop();__nop(); __nop();__nop(); T_DCLK_H; __nop();__nop(); if(T_DIN)Num++; } Num>>=4; T_CS_H; return(Num); }
//SPI读数据 //从7846/7843/XPT2046/UH7843/UH7846读取adc值 u16 ADS_Read_AD(u8 CMD) { u8 count=0; u16 Num=0; TCLK=0;//先拉低时钟 TCS=0; //选中ADS7843 ADS_Write_Byte(CMD);//发送命令字 delay_us(6);//ADS7846的转换时间最长为6us TCLK=1;//给1个时钟,清除BUSY TCLK=0; for(count=0;count<15;count++) { Num<<=1; TCLK=0;//下降沿有效 TCLK=1; if(DOUT)Num++; } Num>>=3; //只有高12位有效. TCS=1;//释放ADS7843 return(Num); }