SPI的通訊原理很簡單,它以主從方式工作,這種模式通常有一個主裝置和一個或多個從裝置,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基於SPI的裝置共有的,它們是SDI(資料輸入),SDO(資料輸出),SCK(時鐘),CS(片選)。
(1)SDO – 主裝置資料輸出,從裝置資料輸入
(2)SDI – 主裝置資料輸入,從裝置資料輸出
(3)SCLK – 時鐘訊號,由主裝置產生
(4)CS – 從裝置使能訊號,由主裝置控制
其中CS是控制晶片是否被選中的,也就是說只有片選訊號為預先規定的使能訊號時(高電位或低電位),對此晶片的操作才有效。這就允許在同一總線上連線多個SPI裝置成為可能。
接下來就負責通訊的3根線了。通訊是透過資料交換完成的,這裡先要知道SPI是序列通訊協議,也就是說資料是一位一位的傳輸的。這就是SCK時鐘線存在的原因,由SCK提供時鐘脈衝,SDI,SDO則基於此脈衝完成資料傳輸。資料輸出透過 SDO線,資料在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位資料傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘訊號的改變(上沿和下沿為一次),就可以完成8位資料的傳輸。
要注意的是,SCK訊號線只由主裝置控制,從裝置不能控制訊號線。同樣,在一個基於SPI的裝置中,至少有一個主控裝置。這樣傳輸的特點:這樣的傳輸方式有一個優點,與普通的序列通訊不同,普通的序列通訊一次連續傳送至少8位資料,而SPI允許資料一位一位的傳送,甚至允許暫停,因為SCK時鐘線由主控裝置控制,當沒有時鐘跳變時,從裝置不採集或傳送資料。也就是說,主裝置透過對SCK時鐘線的控制可以完成對通訊的控制。SPI還是一個數據交換協議:因為SPI的資料輸入和輸出線獨立,所以允許同時完成資料的輸入和輸出。不同的SPI裝置的實現方式不盡相同,主要是資料改變和採集的時間不同,在時鐘訊號上沿或下沿採集有不同定義,具體請參考相關器件的文件。
在點對點的通訊中,SPI介面不需要進行定址操作,且為全雙工通訊,顯得簡單高效。在多個從裝置的系統中,每個從裝置需要獨立的使能訊號,硬體上比I2C系統要稍微複雜一些。
最後,SPI介面的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到資料。
AT91RM9200的SPI介面主要由4個引腳構成:SPICLK、MOSI、MISO及 /SS,其中SPICLK是整個SPI匯流排的公用時鐘,MOSI、MISO作為主機,從機的輸入輸出的標誌,MOSI是主機的輸出,從機的輸入,MISO 是主機的輸入,從機的輸出。/SS是從機的標誌管腳,在互相通訊的兩個SPI匯流排的器件,/SS管腳的電平低的是從機,相反/SS管腳的電平高的是主機。在一個SPI通訊系統中,必須有主機。SPI匯流排可以配置成單主單從,單主多從,互為主從。
SPI的片選可以擴充選擇16個外設,這時PCS輸出=NPCS,說NPCS0~3接4-16譯碼器,這個譯碼器是需要外接4-16譯碼器,譯碼器的輸入為NPCS0~3,輸出用於16個外設的選擇。
二 SPI協議舉例
SPI是一個環形匯流排結構,由ss(cs)、sck、sdi、sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位暫存器進行資料交換。
假設下面的8位暫存器裝的是待發送的資料10101010,上升沿傳送、下降沿接收、高位先發送。
那麼第一個上升沿來的時候 資料將會是sdo=1;暫存器=0101010x。下降沿到來的時候,sdi上的電平將所存到暫存器中去,那麼這時暫存器=0101010sdi,這樣在 8個時鐘脈衝以後,兩個暫存器的內容互相交換一次。這樣就完成裡一個spi時序。I2C匯流排 I2C(Inter-Integrated Circuit)匯流排是一種由PHILIPS公司開發的兩線式序列匯流排,用於連線微控制器及其外圍裝置。I2C匯流排產生於在80年代,最初為音訊和影片裝置開發,如今主要在伺服器管理中使用,其中包括單個元件狀態的通訊。例如管理員可對各個元件進行查詢,以管理系統的配置或掌握元件的功能狀態,如電源和系統風扇。可隨時監控記憶體、硬碟、網路、系統溫度等多個引數,增加了系統的安全性,方便了管理。
1 I2C匯流排特點
I2C匯流排最主要的優點是其簡單性和有效性。由於介面直接在元件之上,因此I2C匯流排佔用的空間非常小,減少了電路板的空間和晶片管腳的數量,降低了互聯成本。匯流排的長度可高達25英尺,並且能夠以10Kbps的最大傳輸速率支援40個元件。I2C匯流排的另一個優點是,它支援多主控(multimastering), 其中任何能夠進行傳送和接收的裝置都可以成為主匯流排。一個主控能夠控制訊號的傳輸和時鐘頻率。當然,在任何時間點上只能有一個主控。
2 I2C匯流排工作原理
2.1 匯流排的構成及訊號型別
I2C匯流排是由資料線SDA和時鐘SCL構成的序列匯流排,可傳送和接收資料。在CPU與被控IC之間、IC與IC之間進行雙向傳送,最高傳送速率100kbps。各種被控制電路均並聯在這條總線上,但就像電話機一樣只有撥通各自的號碼才能工作,所以每個電路和模組都有唯一的地址,在資訊的傳輸過程中,I2C總線上並接的每一模組電路既是主控器(或被控器),又是傳送器(或接收器),這取決於它所要完成的功能。CPU發出的控制訊號分為地址碼和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確定控制的種類;控制量決定該調整的類別(如對比度、亮度等)及需要調整的量。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨立,互不相關。
I2C匯流排在傳送資料過程中共有三種類型訊號, 它們分別是:開始訊號、結束訊號和應答訊號。
開始訊號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送資料。
結束訊號:SCL為高電平時,SDA由低電平向高電平跳變,結束傳送資料。
應答訊號:接收資料的IC在接收到8bit資料後,向傳送資料的IC發出特定的低電平脈衝,表示已收到資料。CPU向受控單元發出一個訊號後,等待受控單元發出一個應答訊號,CPU接收到應答訊號後,根據實際情況作出是否繼續傳遞訊號的判斷。若未收到應答訊號,由判斷為受控單元出現故障。
SPI的通訊原理很簡單,它以主從方式工作,這種模式通常有一個主裝置和一個或多個從裝置,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基於SPI的裝置共有的,它們是SDI(資料輸入),SDO(資料輸出),SCK(時鐘),CS(片選)。
(1)SDO – 主裝置資料輸出,從裝置資料輸入
(2)SDI – 主裝置資料輸入,從裝置資料輸出
(3)SCLK – 時鐘訊號,由主裝置產生
(4)CS – 從裝置使能訊號,由主裝置控制
其中CS是控制晶片是否被選中的,也就是說只有片選訊號為預先規定的使能訊號時(高電位或低電位),對此晶片的操作才有效。這就允許在同一總線上連線多個SPI裝置成為可能。
接下來就負責通訊的3根線了。通訊是透過資料交換完成的,這裡先要知道SPI是序列通訊協議,也就是說資料是一位一位的傳輸的。這就是SCK時鐘線存在的原因,由SCK提供時鐘脈衝,SDI,SDO則基於此脈衝完成資料傳輸。資料輸出透過 SDO線,資料在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位資料傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘訊號的改變(上沿和下沿為一次),就可以完成8位資料的傳輸。
要注意的是,SCK訊號線只由主裝置控制,從裝置不能控制訊號線。同樣,在一個基於SPI的裝置中,至少有一個主控裝置。這樣傳輸的特點:這樣的傳輸方式有一個優點,與普通的序列通訊不同,普通的序列通訊一次連續傳送至少8位資料,而SPI允許資料一位一位的傳送,甚至允許暫停,因為SCK時鐘線由主控裝置控制,當沒有時鐘跳變時,從裝置不採集或傳送資料。也就是說,主裝置透過對SCK時鐘線的控制可以完成對通訊的控制。SPI還是一個數據交換協議:因為SPI的資料輸入和輸出線獨立,所以允許同時完成資料的輸入和輸出。不同的SPI裝置的實現方式不盡相同,主要是資料改變和採集的時間不同,在時鐘訊號上沿或下沿採集有不同定義,具體請參考相關器件的文件。
在點對點的通訊中,SPI介面不需要進行定址操作,且為全雙工通訊,顯得簡單高效。在多個從裝置的系統中,每個從裝置需要獨立的使能訊號,硬體上比I2C系統要稍微複雜一些。
最後,SPI介面的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到資料。
AT91RM9200的SPI介面主要由4個引腳構成:SPICLK、MOSI、MISO及 /SS,其中SPICLK是整個SPI匯流排的公用時鐘,MOSI、MISO作為主機,從機的輸入輸出的標誌,MOSI是主機的輸出,從機的輸入,MISO 是主機的輸入,從機的輸出。/SS是從機的標誌管腳,在互相通訊的兩個SPI匯流排的器件,/SS管腳的電平低的是從機,相反/SS管腳的電平高的是主機。在一個SPI通訊系統中,必須有主機。SPI匯流排可以配置成單主單從,單主多從,互為主從。
SPI的片選可以擴充選擇16個外設,這時PCS輸出=NPCS,說NPCS0~3接4-16譯碼器,這個譯碼器是需要外接4-16譯碼器,譯碼器的輸入為NPCS0~3,輸出用於16個外設的選擇。
二 SPI協議舉例
SPI是一個環形匯流排結構,由ss(cs)、sck、sdi、sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位暫存器進行資料交換。
假設下面的8位暫存器裝的是待發送的資料10101010,上升沿傳送、下降沿接收、高位先發送。
那麼第一個上升沿來的時候 資料將會是sdo=1;暫存器=0101010x。下降沿到來的時候,sdi上的電平將所存到暫存器中去,那麼這時暫存器=0101010sdi,這樣在 8個時鐘脈衝以後,兩個暫存器的內容互相交換一次。這樣就完成裡一個spi時序。I2C匯流排 I2C(Inter-Integrated Circuit)匯流排是一種由PHILIPS公司開發的兩線式序列匯流排,用於連線微控制器及其外圍裝置。I2C匯流排產生於在80年代,最初為音訊和影片裝置開發,如今主要在伺服器管理中使用,其中包括單個元件狀態的通訊。例如管理員可對各個元件進行查詢,以管理系統的配置或掌握元件的功能狀態,如電源和系統風扇。可隨時監控記憶體、硬碟、網路、系統溫度等多個引數,增加了系統的安全性,方便了管理。
1 I2C匯流排特點
I2C匯流排最主要的優點是其簡單性和有效性。由於介面直接在元件之上,因此I2C匯流排佔用的空間非常小,減少了電路板的空間和晶片管腳的數量,降低了互聯成本。匯流排的長度可高達25英尺,並且能夠以10Kbps的最大傳輸速率支援40個元件。I2C匯流排的另一個優點是,它支援多主控(multimastering), 其中任何能夠進行傳送和接收的裝置都可以成為主匯流排。一個主控能夠控制訊號的傳輸和時鐘頻率。當然,在任何時間點上只能有一個主控。
2 I2C匯流排工作原理
2.1 匯流排的構成及訊號型別
I2C匯流排是由資料線SDA和時鐘SCL構成的序列匯流排,可傳送和接收資料。在CPU與被控IC之間、IC與IC之間進行雙向傳送,最高傳送速率100kbps。各種被控制電路均並聯在這條總線上,但就像電話機一樣只有撥通各自的號碼才能工作,所以每個電路和模組都有唯一的地址,在資訊的傳輸過程中,I2C總線上並接的每一模組電路既是主控器(或被控器),又是傳送器(或接收器),這取決於它所要完成的功能。CPU發出的控制訊號分為地址碼和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確定控制的種類;控制量決定該調整的類別(如對比度、亮度等)及需要調整的量。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨立,互不相關。
I2C匯流排在傳送資料過程中共有三種類型訊號, 它們分別是:開始訊號、結束訊號和應答訊號。
開始訊號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送資料。
結束訊號:SCL為高電平時,SDA由低電平向高電平跳變,結束傳送資料。
應答訊號:接收資料的IC在接收到8bit資料後,向傳送資料的IC發出特定的低電平脈衝,表示已收到資料。CPU向受控單元發出一個訊號後,等待受控單元發出一個應答訊號,CPU接收到應答訊號後,根據實際情況作出是否繼續傳遞訊號的判斷。若未收到應答訊號,由判斷為受控單元出現故障。