歡迎您光臨本站 登入註冊首頁

SPI協議的簡單實例說明

admin @ 2014-03-26 , reply:0

概述

    SPI是一個環形匯流排結構,由ss(cs)、sck、sdi、sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位寄存器進行數據交換。&nb……
     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
10101010
1
0
        這樣就完成了兩個寄存器8位的交換,上面的上表示上升沿、下表示下降沿,sdi、sdo相對於主機而言的。其中ss引腳作為主機的時候,從機可以把它拉底被動選為從機,作為從機的是時候,可以作為片選腳用。根據以上分析,一個完整的傳送周期是16位,即兩個位元組,因為,首先主機要發送命令過去,然後從機根據主機的名準備數據,主機在下一個8位時鐘周期才把數據讀回來!!
看大家明白沒有!!!!!

[admin via 研發互助社區 ] SPI協議的簡單實例說明已經有1761次圍觀

http://cocdig.com/docs/show-post-44801.html