不一定要开中断,通常AD都有一个状态忙管脚,找个IO连接,感知当前AD状态,当AD不忙的话,就读数据。当然,有的则是通过SPI读取AD的状态寄存器判断状态,两种选其1即可。
你的代码逻辑有点问题,发送数据时,应先将数据填入FIFO,然后用while 死等,等待传输完成。接着判断是否有新的数据要读取,读取数据时不能死等,仅仅是判断一下是否有,有的话,读取FIFO数据,没有就退出收发函数。
你到我们网站上,下载专区里,把那个BF533下触摸屏的代码下下来参考一下。
另外SPI有4种时序,你要根据你的AD,匹配好使用哪一种,具体看SPI控制寄存器的CPOL和CPHA位说明。
SPI片选有自动和手动,手动时,片选产生也要和你的AD匹配。
你先把SPI收发数据的波形配的和AD手册要求的一致,再读取AD一个已知的寄存器,看是否能读取正确。