我们已知的可以把SPI 和 USART 连接实现全双工
通信, SPI在单工模式里面有介绍一根时钟线和一根单向数据线/一根时钟线和一根双线数据线两种模式,不知道大家注意到了没有:I2C也是 一根时钟线和一根双向数据线,在基本结构上是一样的,I2C可以实现半双工通信,SPI是否也能只使用两跟线实现半双工通信呢?我的思路如下: 置两个MCU分别主机和从机,都设置为一根时钟线一根双向数据线模式,设定一个特殊字符序列作为主机的读命令(假设为 0xAA,0X55),当主机写数据到从机的时候设置主机 BIDIOE为1,从机BIDIOE为0,当主机要读取从机数据的时候先发 0XAA 0X55 ,从机收到这个特殊序列后设置从机的BIDIOE为1(数据输出模式),主机发完特殊序列后也设置主机BIDIOE为0(数据输入模式),主机向SPI->DR写数据,产生SPI SCK脉冲,然后预设从机发送数据长度,当发送长度到了从机又设置BIDIOE为0,主机也设置BIDIOE为1。