SPI问题集锦
假定:主从机采用硬件SPI通信,主机发送两字节数据,从机回应四字节数据。
1.时钟信号的产生
主机在读取从机数据时,时钟信号怎么产生?
时钟信号全程由主机产生,主机在读取从机数据时,主机必须发送无效字节,以产生时钟信号。
2.主机什么时候读取
第三个字节发送后读取。
SPI是全双工同步通信,在第一个时钟信号到来时,主机移出一位数据给从机,从机也同时移出一位数据给主机,依次类推。所以当主机发送完第三个数据给从机时,从机的第三个数据也同时发送给了主机(从机发送的前两个数据无效,第三个数据才是主机需要的有效数据)。
3.无效数据读取
主机发送前两个字节时,从机会返回两个无效数据给主机,这两个数据虽然无效,但是对于不同的单片机来说,有的就需要将其读出来,从而后续的有效字节才能够正常读取。如果出现读取数据中有部分字节出错,则可以将无效字节读出来试试。
如下是AT32F421的手册说明,在13.2.8 接收器简述和配置流程中: