Exemplo n.º 1
0
/************************************
** 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);   
}
Exemplo n.º 2
0
//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);   
}