SPI總線簡(jiǎn)介及原理
SPI通信
該總線通信基于主-從配置。它有以下4個(gè)信號(hào):
MOSI:主出/從入
MISO:主入/從出
SCK:串行時(shí)鐘
SS:從屬選擇
芯片上“從屬選擇”(slave-select)的引腳數(shù)決定了可連到總線上的器件數(shù)量。
數(shù)據(jù)方向和通信速度
SPI總線接口及時(shí)序
SPI總線包括1根串行同步時(shí)鐘信號(hào)線以及2根數(shù)據(jù)線。
SPI模塊為了和外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時(shí)鐘極性和相位可以進(jìn)行配置,時(shí)鐘極性(CPOL)對(duì)傳輸協(xié)議沒(méi)有重大的影響。如果CPOL=0,串行同步時(shí)鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時(shí)鐘的空閑狀態(tài)為高電平。時(shí)鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進(jìn)行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時(shí)鐘的第一個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時(shí)鐘的第二個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的外設(shè)音時(shí)鐘相位和極性應(yīng)該一致。SPI接口時(shí)序如圖3、圖4所示。
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ā)送命令過(guò)去,然后從機(jī)根據(jù)主機(jī)的名準(zhǔn)備數(shù)據(jù),主機(jī)在下一個(gè)8位時(shí)鐘周期才把數(shù)據(jù)讀回來(lái)
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)志;寫(xiě)沖突保護(hù);總線競(jìng)爭(zhēng)保護(hù)等。圖3示出SPI總線工作的四種方式,其中使用的最為廣泛的是SPI0和SPI3方式(實(shí)線表示):
SPI模塊為了和外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時(shí)鐘極性和相位可以進(jìn)行配置,時(shí)鐘極性(CPOL)對(duì)傳輸協(xié)議沒(méi)有重大的影響。如果CPOL=0,串行同步時(shí)鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時(shí)鐘的空閑狀態(tài)為高電平。時(shí)鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進(jìn)行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時(shí)鐘的第一個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時(shí)鐘的第二個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的外設(shè)音時(shí)鐘相位和極性應(yīng)該一致。SPI接口時(shí)序如圖3、圖4所示。
二,.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)論