SPI协议的简单实例说明

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下
0101010 0
1010101 1
0
1
2上
101010 0x
010101 1x
1
0
2下
101010 01
010101 10
1
0
3上
01010 01x
10101 10x
0
1
3下
01010 010
10101 101
0
1
4上
1010 010x
0101 101x
1
0
4下
1010 0101
0101 1010
1
0
5上
010 0101x
101 1010x
0
1
5下
010 01010
101 10101
0
1
6上
10 01010x
01 10101x
1
0
6下
10 010101
01 101010
1
0
7上
0 010101x
1 101010x
0
1
7下
0 0101010
1 1010101
0
1
8上
0101010 x
1010101 x
1
0
8下
01010101
10101010
1
0
        这样就完成了两个寄存器8位的交换,上面的上表示上升沿、下表示下降沿,sdi、sdo相对于主机而言的。其中ss引脚作为主机的时候,从机可以把它拉底 被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根 据主机的名准备数据,主机在下一个8位时钟周期才把数据读回来!!

你可能感兴趣的:(嵌入式软件开发)