SPI 是一个环形总线结构,由ss(cs)、sck、sdi、sdo 构成,其时序其实很简单,主要是在 sck 的控制下,两个双向移位寄存器进行数据交换
假设下面的 8 位寄存器装的是待发送的数据 10101010,上升沿发送、下降沿接收、高位先发送
那么第一个上升沿来的时候 数据将会是sdo=1;寄存器=0101010x
下降沿到来的时候,sdi 上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在 8 个时钟脉冲以后,两个寄存器的内容互相交换一次
这样就完成里一个spi 时序
例子: 假设主机和从机初始化就绪:并且主机的 sbuff=0xaa,从机的 sbuff=0x55,下面将分步对 spi 的 8 个时钟周期的数据情况演示一遍:假设上升沿发送数据 脉冲 主机 sbuff 从机 sbuff sdi sdo 0 10101010 01010101 0 0 1 上 0101010x 1010101x 0 1 1 下 01010100 10101011 0 1 2 上 1010100x 0101011x 1 0 2 下 10101001 01010110 1 0 3 上 0101001x 1010110x 0 1 3 下 01010010 10101101 0 1 4 上 1010010x 0101101x 1 0 4 下 10100101 01011010 1 0 5 上 0100101x 1011010x 0 1 5 下 01001010 10110101 0 1 6 上 1001010x 0110101x 1 0 6 下 10010101 01101010 1 0 7 上 0010101x 1101010x 0 1 7 下 00101010 11010101 0 1 8 上 0101010x 1010101x 1 0 8 下 01010101