今天对着原子个的驱动程序一点一点的再看spi的写法,在看到这里的时候我发现一个问题,不知道是我还没有理解,还是原子哥的笔误。
//SPI读数据
//从触摸屏IC读取adc值
//CMD:指令
//返回值:读到的数据
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<16;count++)//读出16位数据,只有高12位有效
{
Num<<=1;
TCLK=0; //下降沿有效 就是这个地方明明是下降沿有效,但是程序里面这个是从0到1,明明是上升沿啊!但是下载进开发板里面触摸屏还是可以正常触摸显示的。
delay_us(1);
TCLK=1;
if(DOUT)Num++;
}
Num>>=4; //只有高12位有效.
TCS=1; //释放片选
return(Num);
}
请论坛里的好心人帮忙解答一下,谢谢啦!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>