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