SPI匯流排(一):基本原理篇
1、什麼是SPI?
SPI是序列外設介面(Serial Peripheral Interface)的縮寫。是 Motorola 公司推出的一 種同步序列介面技術,是一種高速的,全雙工,同步的通訊匯流排。
2、SPI優點 支援全雙工通訊 通訊簡單 資料傳輸速率塊
3、缺點 沒有指定的流控制,沒有應答機制確認是否接收到資料,所以跟IIC匯流排協議比較在資料 可靠性上有一定的缺陷。
4、特點 1):高速、同步、全雙工、非差分、匯流排式 2):主從機通訊模式
5、協議通訊時序詳解 1):SPI的通訊原理很簡單,它以主從方式工作,這種模式通常有一個主裝置和一個或多 個從裝置,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基於SPI的裝置共 有的,它們是SDI(資料輸入)、SDO(資料輸出)、SCLK(時鐘)、CS(片選)。 (1)SDO/MOSI – 主裝置資料輸出,從裝置資料輸入; (2)SDI/MISO – 主裝置資料輸入,從裝置資料輸出; (3)SCLK – 時鐘訊號,由主裝置產生; (4)CS/SS – 其中CS是控制晶片是否被選中的,也就是說只有片選訊號為預先規定的使能訊號時(高電位或低電位),對此晶片的操作才有效,這就允許在同一總線上連線多個SPI裝置成為可能。需要注意的是,在具體的應用中,當一條SPI總線上連線有多個裝置時,SPI本身的CS有可能被其他的GPIO腳代替,即每個裝置的CS腳被連線到處理器端不同的GPIO,通過操作不同的GPIO口來控制具體的需要操作的SPI裝置,減少各個SPI裝置間的干擾。
SPI是序列通訊協議,也就是說資料是一位一位從MSB或者LSB開始傳輸的,這就是SCK時鐘線存在的原因,由SCK提供時鐘脈衝,MISO、MOSI則基於此脈衝完成資料傳輸。 SPI支援4-32bits的序列資料傳輸,支援MSB和LSB,每次資料傳輸時當從裝置的大小端發生變化時需要重新設定SPI Master的大小端。
2):需要說明的是,我們SPI通訊有4種不同的模式,不同的從裝置可能在出廠是就是配 置為某種模式,這是不能改變的;但我們的通訊雙方必須是工作在同一模式下,所以我們 可以對我們的主裝置的SPI模式進行配置,通過CPOL(時鐘極性)和CPHA(時鐘相位)來 控制我們主裝置的通訊模式,具體如下: Mode0:CPOL=0,CPHA=0 Mode1:CPOL=0,CPHA=1 Mode2:CPOL=1,CPHA=0 Mode3:CPOL=1,CPHA=1
時鐘極性CPOL是用來配置SCLK的電平出於哪種狀態時是空閒態或者有效態,時鐘相位CPHA 是用來配置資料取樣是在第幾個邊沿: CPOL=0,表示當SCLK=0時處於空閒態,所以有效狀態就是SCLK處於高電平時 CPOL=1,表示當SCLK=1時處於空閒態,所以有效狀態就是SCLK處於低電平時 CPHA=0,表示資料取樣是在第1個邊沿,資料傳送在第2個邊沿 CPHA=1,表示資料取樣是在第2個邊沿,資料傳送在第1個邊沿
例如: CPOL=0,CPHA=0:此時空閒態時,SCLK處於低電平,資料取樣是在第1個邊沿,也就是 SCLK由低電平到高電平的跳變,所以資料取樣是在上升沿,資料傳送是在下降沿。
CPOL=0,CPHA=1:此時空閒態時,SCLK處於低電平,資料傳送是在第2個邊沿,也就是 SCLK由低電平到高電平的跳變,所以資料取樣是在下降沿,資料傳送是在上升沿。
CPOL=1,CPHA=0:此時空閒態時,SCLK處於高電平,資料採集是在第1個邊沿,也就是 SCLK由高電平到低電平的跳變,所以資料採集是在下降沿,資料傳送是在上升沿。
CPOL=1,CPHA=1:此時空閒態時,SCLK處於高電平,資料傳送是在第2個邊沿,也就是 SCLK由高電平到低電平的跳變,所以資料採集是在上升沿,資料傳送是在下降沿。
需要注意的是:我們的主裝置能夠控制時鐘,因為我們的SPI通訊並不像UART或者IIC通訊 那樣有專門的通訊週期,有專門的通訊起始訊號,有專門的通訊結束訊號;所以我們的 SPI協議能夠通過控制時鐘訊號線,當沒有資料交流的時候我們的時鐘線要麼是 保持高電平要麼是保持低電平。
6、內部工作機制
SSPSR 是 SPI 裝置內部的移位暫存器(Shift Register). 它的主要作用是根據 SPI 時鐘訊號狀態, 往 SSPBUF 裡移入或者移出資料, 每次移動的資料大小由 Bus-Width 以 及 Channel-Width 所決定. --------------------- 作者:kaivenscode 來源:CSDN 原文:https://blog.csdn.net/kai_zone/article/details/78038716 版權宣告:本文為博主原創文章,轉載請附上博文連結!