SPI總線(xiàn)協(xié)議的通信原理及應用舉例
SPI的通信原理很簡(jiǎn)單,它以主從方式工作,這種模式通常有一個(gè)主設備和一個(gè)或多個(gè)從設備,需要至少4根線(xiàn),事實(shí)上3根也可以(單向傳輸時(shí))。也是所有基于SPI的設備共有的,它們是SDI(數據輸入),SDO(數據輸出),SCK(時(shí)鐘),CS(片選)。
?。?)SDO – 主設備數據輸出,從設備數據輸入
本文引用地址:http://dyxdggzs.com/article/154052.htm?。?)SDI – 主設備數據輸入,從設備數據輸出
?。?)SCLK – 時(shí)鐘信號,由主設備產(chǎn)生
?。?)CS – 從設備使能信號,由主設備控制
其中CS是控制芯片是否被選中的,也就是說(shuō)只有片選信號為預先規定的使能信號時(shí)(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線(xiàn)上連接多個(gè)SPI設備成為可能。
接下來(lái)就負責通訊的3根線(xiàn)了。通訊是通過(guò)數據交換完成的,這里先要知道SPI是串行通訊協(xié)議,也就是說(shuō)數據是一位一位的傳輸的。這就是SCK時(shí)鐘線(xiàn)存 在的原因,由SCK提供時(shí)鐘脈沖,SDI,SDO則基于此脈沖完成數據傳輸。數據輸出通過(guò) SDO線(xiàn),數據在時(shí)鐘上升沿或下降沿時(shí)改變,在緊接著(zhù)的下降沿或上升沿被讀取。完成一位數據傳輸,輸入也使用同樣原理。這樣,在至少8次時(shí)鐘信號的改變 (上沿和下沿為一次),就可以完成8位數據的傳輸。
要注意的是,SCK信號線(xiàn)只由主設備控制,從設備不能控制信號線(xiàn)。同樣,在一個(gè)基于SPI的設備中,至少有一個(gè)主控設備。這樣傳輸的特點(diǎn):這樣的傳輸 方式有一個(gè)優(yōu)點(diǎn),與普通的串行通訊不同,普通的串行通訊一次連續傳送至少8位數據,而SPI允許數據一位一位的傳送,甚至允許暫停,因為SCK時(shí)鐘線(xiàn)由主 控設備控制,當沒(méi)有時(shí)鐘跳變時(shí),從設備不采集或傳送數據。也就是說(shuō),主設備通過(guò)對SCK時(shí)鐘線(xiàn)的控制可以完成對通訊的控制。SPI還是一個(gè)數據交換協(xié)議: 因為SPI的數據輸入和輸出線(xiàn)獨立,所以允許同時(shí)完成數據的輸入和輸出。不同的SPI設備的實(shí)現方式不盡相同,主要是數據改變和采集的時(shí)間不同,在時(shí)鐘信 號上沿或下沿采集有不同定義,具體請參考相關(guān)器件的文檔。
在點(diǎn)對點(diǎn)的通信中,SPI接口不需要進(jìn)行尋址操作,且為全雙工通信,顯得簡(jiǎn)單高效。在多個(gè)從設備的系統中,每個(gè)從設備需要獨立的使能信號,硬件上比I2C系統要稍微復雜一些。
最后,SPI接口的一個(gè)缺點(diǎn):沒(méi)有指定的流控制,沒(méi)有應答機制確認是否接收到數據。
AT91RM9200的SPI接口主要由4個(gè)引腳構成:SPICLK、MOSI、MISO及 /SS,其中SPICLK是整個(gè)SPI總線(xiàn)的公用時(shí)鐘,MOSI、MISO作為主機,從機的輸入輸出的標志,MOSI是主機的輸出,從機的輸入,MISO 是主機的輸入,從機的輸出。/SS是從機的標志管腳,在互相通信的兩個(gè)SPI總線(xiàn)的器件,/SS管腳的電平低的是從機,相反/SS管腳的電平高的是主機。 在一個(gè)SPI通信系統中,必須有主機。SPI總線(xiàn)可以配置成單主單從,單主多從,互為主從。
SPI的片選可以擴充選擇16個(gè)外設,這時(shí)PCS輸出=NPCS,說(shuō)NPCS0~3接4-16譯碼器,這個(gè)譯碼器是需要外接4-16譯碼器,譯碼器的輸入為NPCS0~3,輸出用于16個(gè)外設的選擇。
SPI是一個(gè)環(huán)形總線(xiàn)結構,由ss(cs)、sck、sdi、sdo構成,其時(shí)序其實(shí)很簡(jiǎn)單,主要是在sck的控制下,兩個(gè)雙向移位寄存器進(jìn)行數據交換。
假設下面的8位寄存器裝的是待發(fā)送的數據10101010,上升沿發(fā)送、下降沿接收、高位先發(fā)送。
那么第一個(gè)上升沿來(lái)的時(shí)候 數據將會(huì )是sdo=1;寄存器=0101010x。下降沿到來(lái)的時(shí)候,sdi上的電平將所存到寄存器中去,那么這時(shí)寄存器=0101010sdi,這樣在 8個(gè)時(shí)鐘脈沖以后,兩個(gè)寄存器的內容互相交換一次。這樣就完成里一個(gè)spi時(shí)序。
評論