新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > SPI總線協(xié)議的通信原理及應用舉例

        SPI總線協(xié)議的通信原理及應用舉例

        作者: 時間:2012-08-28 來源:網(wǎng)絡 收藏

        很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基于的設備共有的,它們是SDI(數(shù)據(jù)輸入),SDO(數(shù)據(jù)輸出),SCK(時鐘),CS(片選)。

          (1)SDO – 主設備數(shù)據(jù)輸出,從設備數(shù)據(jù)輸入

        本文引用地址:http://www.104case.com/article/154052.htm

          (2)SDI – 主設備數(shù)據(jù)輸入,從設備數(shù)據(jù)輸出

          (3)SCLK – 時鐘信號,由主設備產(chǎn)生

          (4)CS – 從設備使能信號,由主設備控制

          其中CS是控制芯片是否被選中的,也就是說只有片選信號為預先規(guī)定的使能信號時(高電位或低電位),對此芯片的操作才有效。這就允許在同一上連接多個設備成為可能。

          接下來就負責通訊的3根線了。通訊是通過數(shù)據(jù)交換完成的,這里先要知道SPI是串行通訊,也就是說數(shù)據(jù)是一位一位的傳輸?shù)摹_@就是SCK時鐘線存 在的原因,由SCK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過 SDO線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數(shù)據(jù)傳輸,輸入也使用同樣。這樣,在至少8次時鐘信號的改變 (上沿和下沿為一次),就可以完成8位數(shù)據(jù)的傳輸。

          要注意的是,SCK信號線只由主設備控制,從設備不能控制信號線。同樣,在一個基于SPI的設備中,至少有一個主控設備。這樣傳輸?shù)奶攸c:這樣的傳輸 方式有一個優(yōu)點,與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而SPI允許數(shù)據(jù)一位一位的傳送,甚至允許暫停,因為SCK時鐘線由主 控設備控制,當沒有時鐘跳變時,從設備不采集或傳送數(shù)據(jù)。也就是說,主設備通過對SCK時鐘線的控制可以完成對通訊的控制。SPI還是一個數(shù)據(jù)交換: 因為SPI的數(shù)據(jù)輸入和輸出線獨立,所以允許同時完成數(shù)據(jù)的輸入和輸出。不同的SPI設備的實現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時間不同,在時鐘信 號上沿或下沿采集有不同定義,具體請參考相關器件的文檔。

          在點對點的中,SPI接口不需要進行尋址操作,且為全雙工,顯得簡單高效。在多個從設備的系統(tǒng)中,每個從設備需要獨立的使能信號,硬件上比I2C系統(tǒng)要稍微復雜一些。

          最后,SPI接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數(shù)據(jù)。

          AT91RM9200的SPI接口主要由4個引腳構成:SPICLK、MOSI、MISO及 /SS,其中SPICLK是整個SPI的公用時鐘,MOSI、MISO作為主機,從機的輸入輸出的標志,MOSI是主機的輸出,從機的輸入,MISO 是主機的輸入,從機的輸出。/SS是從機的標志管腳,在互相通信的兩個SPI的器件,/SS管腳的電平低的是從機,相反/SS管腳的電平高的是主機。 在一個SPI通信系統(tǒng)中,必須有主機。SPI總線可以配置成單主單從,單主多從,互為主從。

          SPI的片選可以擴充選擇16個外設,這時PCS輸出=NPCS,說NPCS0~3接4-16譯碼器,這個譯碼器是需要外接4-16譯碼器,譯碼器的輸入為NPCS0~3,輸出用于16個外設的選擇。

          SPI

          SPI是一個環(huán)形總線結構,由ss(cs)、sck、sdi、sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位寄存器進行數(shù)據(jù)交換。

          假設下面的8位寄存器裝的是待發(fā)送的數(shù)據(jù)10101010,上升沿發(fā)送、下降沿接收、高位先發(fā)送。

          那么第一個上升沿來的時候 數(shù)據(jù)將會是sdo=1;寄存器=0101010x。下降沿到來的時候,sdi上的電平將所存到寄存器中去,那么這時寄存器=0101010sdi,這樣在 8個時鐘脈沖以后,兩個寄存器的內容互相交換一次。這樣就完成里一個spi時序。



        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 四川省| 奉节县| 平利县| 胶南市| 鹤壁市| 融水| 昌邑市| 平遥县| 平原县| 东乡族自治县| 古浪县| 马公市| 专栏| 乌鲁木齐县| 广水市| 北海市| 邵东县| 芦山县| 阳山县| 公安县| 绍兴市| 甘孜| 岐山县| 凯里市| 新密市| 涞源县| 丹江口市| 梅河口市| 将乐县| 金沙县| 湘潭市| 治多县| 灵璧县| 措勤县| 大城县| 海门市| 桂平市| 凤冈县| 牟定县| 曲周县| 津南区|