关于SPI的问题汇总,跪求大牛前来解答!
4线SPI 本来就Support full-Duplex。
三线 DI/DO 复用同一根线。
spi是全双工的
那如果SPI从器件只会接收数据,不会发送数据怎么办?
SPI Host 干什么 也是SW 决定的。
Host 端 只写不读这个 Slave 就行了。
如果误发读给这个Slave, 就会发现MOSI 全是同一个Value,只要 SPI Bus 不会死掉,不影响 对其它Slave 的Access 就行了。
SPI是全双工的,接收和发送能够同时进行。硬件是支持的,就看怎么用了
如果SPI做从机的话,SCK还是这个控制模块的吗?还是一个输入信号!
主提供时钟发起操作,这个时候就看主从是那个发的数据有效,还是同事有效,这个要 看双方的约定,SPI还有标准的协议,自己定义!
主机发送数据时,即些SPDR时,就启动时钟,那么在主机接收从机发送来的数据时,时钟是怎样启动的呢?
时钟就是主机串口提供的时钟。主机开始工作时提供时钟。
一般是情况下,主机提供时钟,主从机都在时钟的下沿输出数据,主从机都在时钟的上沿采样数据。
控制器在做主机的时候可以发送或者接受,发送的时候只要有数据写入数据寄存器就可以启动传输,但是接收的时候如何启动传输?接受的时候不会有数据写入寄存器了,而且接受寄存器这个时候也是空的。还有就是接收和发送如何转换?
在主控发送数据的过程中,SPI的从器件在时钟的采样下,就会将内部的数据发送按照协议发送出去,主控这边接收从器件发送的数据,然后将起存储的接收FIFO中,CPU可以根据软件来读取接收到的数据。 SPI是全双工的,支持同时数据发送和接收。
当主控做为master时,串口的时钟由master提供,master的发送FIFO中的数据在master的串口时钟下发送数据给从器件,同时从器件在master的串口时钟下发送数据给主控。
总而言之,主控接收发送数据,从器件接收发送数据用的是同一个时钟。
不知道我说清楚了咩有?