天天看點

【架構】SPI四種模式+通用裝置驅動實作

目錄

前言

筆錄草稿

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通訊的停止信号。

簡單時序圖

【架構】SPI四種模式+通用裝置驅動實作

模式時序圖

【架構】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 讀寫函數