//--SPI 触摸频初始化----------------------------------------------------------------------------------------
void SPI_Config(void)
{
/**************************************************/
//注意,时钟使能之后,对GPIO的操作才有效
//所以上拉之前,必须使能时钟.才能实现真正的上拉输出
RCC->APB2ENR|=1<<4; //PC时钟使能
RCC->APB2ENR|=1<<0; //开启辅助时钟
GPIOC->CRL&=0XFFFF0000;//PC0~3
GPIOC->CRL|=0X00003883;
GPIOC->CRH&=0XFF0FFFFF;//PC13
GPIOC->CRH|=0X00300000;//PC13推挽输出
GPIOC->ODR|=0X200f; //PC0~3 13 全部上拉
/**************************************************/
}
//===============================================================
//SPI写数据
void ADS_Write_Byte(u8 num)
{
u8 count=0;
for(count=0;count<8;count++)
{
if(num&0x80)TDIN=1;
else TDIN=0;
num<<=1;
TCLK=0;//上升沿有效;上升沿写进
TCLK=1;
}
}
//----SPI 延时-----------------------------------------------------------------------------------------------
void SpiDelay(unsigned int DelayCnt)
{
unsigned int i;
for(i=0;i<DelayCnt;i++);
}
u16 ADS_Read_AD(u8 CMD)
{
u8 count=0;
u16 Num=0;
TCLK=0;//先拉低时钟
TCS=0; //选中ADS7843
// SpiDelay(10);
ADS_Write_Byte(CMD);//发送命令字
SpiDelay(10);//ADS7846的转换时间最长为6us
TCLK=1;//给1个时钟,清除BUSY
TCLK=0;
for(count=0;count<15;count++)
{
Num><<=1;
TCLK=1;
TCLK=0;//下降沿有效;下降沿读取
if(DOUT)Num++;
}
Num>>=3; //只有高12位有效.
TCS=1; //释放ADS7843
return(Num);
}