SPI协议详解
SPI協議詳解
? 以實際用到的ARM PrimeCell SSP(PL022)為主,針對SPI分享以下:
? SSP是一種同步串行接口控制器,可以兼容SPI、4線SSI或者Microwire總線。在一條總線上可以有多個主機或從機。在一次數據傳輸中,總線上只有一個主機和一個從機進行通信。數據傳輸原則上為全雙工方式,4 位到 16 位數據幀由主機發送到從機或由從機發送到主機。實際上通常情況下只有一個方向上的數據流包含有意義的數據。
1.特性總結
(1).兼容Motorola SPI、4線TI SSI和國家半導體Microwire總線;
(2).同步串行通信;
(3).主/從操作;
? SSP總線可以掛接一個主機、多個從機;同一時刻主機只能與一個從機進行通信;SSP總線上的通訊原則上是全雙工的。
(4).8 幀收發FIFO;
(5).可編程數據大小,每幀4~16位;
(6)中斷生成器可服務于收發FIFO或錯誤標識;
(7)可使用DMA驅動
2.信號
3.功能描述
3.1單主機、多從機模式
多條SSPFSSIN
菊花鏈
在設備信號(總線信號或中斷信號)以串行的方式從一 個設備依次傳到下一個設備,不斷循環直到數據到達目標設備的方式被稱為菊花鏈。
3.2SPI通信模式
模式一:空閑時SSPCLK為低電平;在前沿開始采樣
模式二:空閑時SSPCLK為低電平;在后沿開始采樣
模式三:空閑時SSPCLK為高電平;在前沿開始采樣
模式四:空閑時SSPCLK為高電平;在后沿開始采樣
以上通過配置SSPCR0寄存器中的SPH(時鐘相位)、SPO(時鐘極性)實現。
強調一點,兩spi為主機、從機交互時,需配置:
? 主機在第二個時鐘跳變沿捕獲數據,從機在第一個時鐘跳變沿捕獲數據。
即,主機SPH=1;從機SPH=0;原因:主機SSP設置為前沿輸出后沿采樣。從機設置為前沿采樣后沿輸出。在主從機之間進行數據傳輸時,正好可以做到主機輸出時從機開始采樣,從機輸出時主機開始采樣。
3.3傳輸機制
? 實際上SPI的全雙工傳輸,就是靠移位寄存器來完成的,通過8個時鐘周期的移位,來達到交換主從數據的目的,也就是說: 在每個SPI時鐘周期內,都會發生全雙工數據傳輸。外設的寫操作和讀操作是同步完成的。如果只進行寫操作,主機只需忽略接收到的字節;反之,若主機要讀取從機的一個字節,就必須發送一個空字節來引發從機的傳輸。
主機先將片選信號拉低,這樣保證開始接收數據;
當接收端檢測到時鐘的邊沿信號時,它將立即讀取數據線上的信號,這樣就得到了一位數據(1bit);
主機發送到從機時:主機產生相應的時鐘信號,然后數據一位一位地將從MOSI(主機輸出從機輸入)信號線上進行發送到從機;
主機接收從機數據:如果從機需要將數據發送回主機,則主機將繼續生成預定數量的時鐘信號,并且從機會將數據通過MISO(主機輸入從機輸出)信號線發送;
4.SPI寄存器
4.1分類
根據功能的不同將SSP寄存器分為4大類:數據收發相關、控制相關、中斷相關和狀態相關。
4.2寄存器信息表
4.3關于中斷
SSPIMSC:SSP中斷屏蔽置位/清零寄存器
SSPRIS:SSP原始中斷狀態寄存器
SSPMIS:SSP屏蔽中斷狀態寄存器。該寄存器是一個只讀寄存器。注意使用的Masked在ARM中是使能的意思;當中斷條件出現且相應的中斷在 SSPnIMSC 寄存器中使能時,該寄存器中對應的位就會置 1。
分析如下:
一旦產生中斷條件,原始中斷狀態寄存器會記錄中斷狀態TXRIS,再由intrerrupt mask信號TXIM使能中斷,以產生屏蔽中斷狀態信號TXMIS。
中斷產生邏輯輸入的信號就是TXMIS。
追設計代碼:
發生中斷條件,原始中斷狀態TXRIS置位。
TXIM通過PWDATA寫入使能中斷。
&邏輯,發生中斷條件且使能中斷,TXIM置位。
TXMIS輸入,|邏輯輸出INTR
4.4寄存器相互關系
5.SPI基本操作
5.1初始化
5.1.1工作模式設置
SSPCR1[0:3]相應位置1設置工作模式:
? 主機模式、從機模式、正常模式、回寫模式
5.1.2通信模式設置
幀格式:SSPCR0 FRF位設置 SSP、SSI、Micro wire
幀長度:SSPCR0 DSS位可配置4-16位
通信速率:由SSPCR0的SCR(位速率控制位)和SSPCPSR的CPSDVSR(時鐘預分頻寄存器)共同決定
即所配置的從機的clk頻率必須大于主機的clk時鐘頻率的12倍,這樣從機才能檢測到主機輸入時鐘的變化沿;
而主機模式中,只要采樣頻率大于被采樣的2倍即可。
5.2 狀態信息
5.2.1發送FIFO狀態
標志位狀態:TXFIFO空、未滿
5.2.2接收FIFO狀態
接收FIFO不空、滿
5.2.3忙狀態
5.2.4中斷狀態
四種情形觸發中斷:1)發送FIFFO至少一半為空;2)接收溢出;3)接收FIFO至少一半為滿;4)接收超時
5.3DMA方式傳輸數據
DMA:直接存儲器訪問。實現數據的直接傳輸
DMA用來提供在外設和存儲器之間或者存儲器和存儲器之間的高速數據傳輸。無須CPU的干預,通過DMA數據可以快速地移動。這就節省了CPU的資源來做其他操作。
5.3.1DMA所需要的核心參數:
1數據的源地址 2 數據傳輸位置的目標地址 ,3 傳遞數據多少的數據傳輸量 ,4 進行多少次傳輸的傳輸模式
5.3.2DMA操作
包含查詢和中斷兩種方式
6.SPI的優缺點
6.1SPI的優勢
? (1)全雙工串行通信;(2)高速數據傳輸速率;(3)簡單的軟件配置;(4)靈活的數據配置,可以是任意大小的字;(5)簡單的硬件結構:從機不需要像IIC一樣需要唯一地址;從機使用主機時鐘,不需要像UART一樣使用精密時鐘震蕩器/晶振,不需要像CAN一樣需要收發器
6.2 SPI的缺點
沒有硬件應答信號;僅支持單一主設備;沒有規定錯誤檢查;只支持非常短的距離。
總結
- 上一篇: iOS蓝牙开发之数据传输精华篇
- 下一篇: dependency 和dependen