目錄
前言
筆錄草稿
SPI介紹
SPI四種模式 **
SPI 驅動架構 **架構
SPI 介紹為搜集百度資料+個人了解
其餘為原創(有誤請指正)
集四種模式于一身
李柱明部落格:https://www.cnblogs.com/lizhuming/
本文連結:https://www.cnblogs.com/lizhuming/p/13907267.html
SPI 協定簡介
SPI 協定是由摩托羅拉公司提出的通訊協定(Serial Peripheral Interface),即串行外圍裝置接口,是一種高速全雙工的通信總線。
是一個環形總線結構
由 ss(cs)、sck、sdi、sdo 構成
其時序主要是在 sck 的控制下,兩個雙向移位寄存器進行資料交換。
實體線說明
SS
從裝置選擇信号線,常稱為片選信号線,也稱為NSS、CS。
用于選擇從機。
SCK (Serial Clock)
時鐘信号線
用于通訊資料同步。
MOSI (Master Output, Slave Input)
主裝置輸出/從裝置輸入引腳。
主機發出,從機接收。
MISO (Master Input,,Slave Output)
主裝置輸入/從裝置輸出引腳。
從機發出,主機接收。
SPI 四種模式
請移步到下面章節學習
SPI的協定層
SPI協定定義了通訊的起始和停止信号、資料有效性、時鐘同步等環節。
基本通訊過程
圖解
标号1:NSS信号線由高變低,是SPI通訊的起始信号。
标号6:NSS信号由低變高,是SPI通訊的停止信号。
簡單時序圖

模式時序圖
四種模式由 CPOL 和 CPHA 組合區分
CPOL
時鐘極性
是指SPI通訊裝置處于空閑狀态時,SCK信号線的電平信号
為 0 時
SCK 空閑狀态為 低電平
為 1 時
SCK 空閑狀态為 高電平
CPHA
時鐘相位
是指資料的采樣的時刻
MOSI或MISO資料線上的信号将會在SCK時鐘線的“奇數邊沿”被采樣。(即是第一個邊沿)
這種模式适合那種從裝置一旦被片選後就輸出資料到MISO線上。
資料線在SCK的“偶數邊沿”采樣。(即是第二個邊沿)
這種模式适合那種從裝置被片選後還需要一個時鐘才能 輸出資料到MISO線上。
四種模式(CPOL, CPHA)
模式 0:(0, 0)
SCK空閑為 低電平,資料在SCK的 上升沿 被采樣
模式 1:(0, 1)
SCK空閑為 低電平,資料在SCK的 下降沿 被采樣
模式 2:(1, 0)
SCK空閑為 高電平,資料在SCK的 下降沿 被采樣
模式 3:(1, 1)
SCK空閑為 高電平,資料在SCK的 上升沿 被采樣
實作方法參考 I2C裝置驅動拆解
自己先在寫出四種模式的讀寫時序,便會發現以下規律
讀寫的邏輯差不多都一樣,隻是 SCK 信号線出現的位置及高低電平會因不同模式而不同。(這裡我就不分别寫出4種模式的單獨實作了,直接上規律表,然後實作統一的源碼)
R/W
位置1-SCK
位置2-SCK
位置3-SCK
位置4-SCK
R
X
1
-
W
由上規律得出 支援四種模式的 SPI 讀寫源碼
SPI 寫函數
SPI 讀函數
SPI 讀寫函數