SPI、I2C、UART三種串行總線(xiàn)協(xié)議的區別和SPI接口介紹
SPI interface
SPI接口介紹
SPI總線(xiàn)協(xié)議
SPI是一個(gè)環(huán)形總線(xiàn)結構,由ss(cs)、sck、sdi、sdo構成,其時(shí)序其實(shí)很簡(jiǎn)單,主要是在sck的控制下,兩個(gè)雙向移位寄存器進(jìn)行數據交換。
脈沖 | 主機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 |
這樣就完成了兩個(gè)寄存器8位的交換,上面的上表示上升沿、下表示下降沿,sdi、sdo相對于主機而言的。其中ss引腳作為主機的時(shí)候,從機可以把它拉底被動(dòng)選為從機,作為從機的是時(shí)候,可以作為片選腳用。根據以上分析,一個(gè)完整的傳送周期是16位,即兩個(gè)字節,因為,首先主機要發(fā)送命令過(guò)去,然后從機根據主機的名準備數據,主機在下一個(gè)8位時(shí)鐘周期才把數據讀回來(lái)
SPI 總線(xiàn)是Motorola公司推出的三線(xiàn)同步接口,同步串行3線(xiàn)方式進(jìn)行通信:一條時(shí)鐘線(xiàn)SCK,一條數據輸入線(xiàn)MOSI,一條數據輸出線(xiàn)MISO;用于 CPU與各種外圍器件進(jìn)行全雙工、同步串行通訊。SPI主要特點(diǎn)有:可以同時(shí)發(fā)出和接收串行數據;可以當作主機或從機工作;提供頻率可編程時(shí)鐘;發(fā)送結束中斷標志;寫(xiě)沖突保護;總線(xiàn)競爭保護等。圖3示出SPI總線(xiàn)工作的四種方式,其中使用的最為廣泛的是SPI0和SPI3方式(實(shí)線(xiàn)表示):
圖2
SPI總線(xiàn)接口及時(shí)序
SPI功能模塊的設計
根據功能定義及SPI的工作原理,將整個(gè)IP Core分為8個(gè)子模塊:uC接口模塊、時(shí)鐘分頻模塊、發(fā)送數據FIFO模塊、接收數據FIFO模塊、狀態(tài)機模塊、發(fā)送數據邏輯模塊、接收數據邏輯模塊以及中斷形式模塊。
深入分析SPI的四種傳輸協(xié)議可以發(fā)現,根據一種協(xié)議,只要對串行同步時(shí)鐘進(jìn)行轉換,就能得到其余的三種協(xié)議。為了簡(jiǎn)化設計規定,如果要連續傳輸多個(gè)數據,在兩個(gè)數據傳輸之間插入一個(gè)串行時(shí)鐘的空閑等待,這樣狀態(tài)機只需兩種狀態(tài)(空閑和工作)就能正確工作。
評論