初级会员

- 积分
- 158
- 金钱
- 158
- 注册时间
- 2019-9-2
- 在线时间
- 19 小时
|
触摸IC用的是xpt2406,触摸屏的时候是可以得到一个触摸的坐标,但是无论触摸屏幕上哪个点,得到的坐标x轴和y轴的值都是相同的。SPI是用模拟的SPI,现在本人怀疑是SPI读AD值的时候出了错,求大神们指教,是SPI哪里出了问题。
下面是SPI写数据以及SPI读AD值的函数
void TP_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;
delay_us(1);
TCLK=1; //上升沿有效
}
}
u16 TP_Read_AD(u8 CMD)
{
u8 count=0;
u16 Num=0;
TCLK=0; //先拉低时钟
TDIN=0; //拉低数据线
TCS=0; //选中触摸屏IC
TP_Write_Byte(CMD);//发送命令字
delay_us(6);//ADS7846的转换时间最长为6us
TCLK=0;
delay_us(1);
TCLK=1; //给1个时钟,清除BUSY
delay_us(1);
TCLK=0;
for(count=0;count<12;count++)//读出16位数据,只有高12位有效
{
Num<<=1;
TCLK=0; //下降沿有效
delay_us(1);
TCLK=1;
if(DOUT)Num++;
}
TCS=1; //释放片选
return(Num);
}
|
|