日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SPI 协议简介

發布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SPI 协议简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SPI 協議是由摩托羅拉公司提出的通訊協議(Serial Peripheral Interface),即串行外圍設備接口,是一種高速全雙工的通信總線。它被廣泛地使用在 ADC、LCD 等設備與 MCU間,要求通訊速率較高的場合

一、SPI 物理層

SPI 通訊設備之間的常用連接方式如下圖所示

SPI 通訊使用 3 條總線及片選線,3 條總線分別為 SCK、MOSI、MISO,片選線為SS,它們的作用介紹如下:

  • SS ( Slave Select):從設備選擇信號線,常稱為片選信號線,也稱為 NSS、CS,以下用 NSS 表示。當有多個 SPI 從設備與 SPI 主機相連時,設備的其它信號線 SCK、MOSI 及 MISO 同時并聯到相同的 SPI 總線上,即無論有多少個從設備,都共同只使用這 3 條總線;而每個從設備都有獨立的這一條 NSS 信號線,本信號線獨占主機的一個引腳,即有多少個從設備,就有多少條片選信號線。 I2C 協議中通過設備地址來尋址、選中總線上的某個設備并與其進行通訊;而 SPI 協議中沒有設備地址,它使用 NSS 信號線來尋址,當主機要選擇從設備時,把該從設備的 NSS 信號線設置為低電平,該從設備即被選中,即片選有效,接著主機開始與被選中的從設備進行 SPI 通訊。所以SPI 通訊以 NSS 線置低電平為開始信號,以 NSS 線被拉高作為結束信號。
  • SCK (Serial Clock):時鐘信號線,用于通訊數據同步。它由通訊主機產生,決定了通訊的速率,兩個設備之間通訊時,通訊速率受限于低速設備。
  • MOSI (Master Output, Slave Input):主設備輸出/從設備輸入引腳。 主機的數據從這條信號線輸出,從機由這條信號線讀入主機發送的數據,即這條線上數據的方向為主機到從機。
  • MISO(Master Input,,Slave Output):主設備輸入/從設備輸出引腳。主機從這條信號線讀入數據,從機的數據由這條信號線輸出到主機,即在這條線上數據的方向為從機到主機。

二、協議層

與 I2C 的類似,SPI 協議定義了通訊的起始和停止信號、數據有效性、時鐘同步等環節。

1. SPI 基本通訊過程

SPI 通訊時序圖

  • 這是一個主機的通訊時序。NSS、SCK、MOSI 信號都由主機控制產生,而 MISO 的信號由從機產生,主機通過該信號線讀取從機的數據。MOSI 與 MISO 的信號只在 NSS 為低電平的時候才有效,在 SCK 的每個時鐘周期 MOSI 和 MISO 傳輸一位數據。 以上通訊流程中包含的各個信號分解如下:

2. 通訊的起始和停止信號

  • 在SPI通訊時序圖的標號1處,NSS 信號線由高變低,是 SPI 通訊的起始信號。NSS 是每個從機各自獨占的信號線,當從機在自己的 NSS 線檢測到起始信號后,就知道自己被主機選 中了,開始準備與主機通訊。在圖中的標號6處,NSS 信號由低變高,是 SPI 通訊的停止信號,表示本次通訊結束,從機的選中狀態被取消。

3. 數據有效性

  • SPI 使用 MOSI 及 MISO 信號線來傳輸數據,使用 SCK 信號線進行數據同步。MOSI及 MISO 數據線在 SCK 的每個時鐘周期傳輸一位數據,且數據輸入輸出是同時進行的。數據傳輸時,MSB 先行或 LSB 先行并沒有作硬性規定,但要保證兩個 SPI 通訊設備之間使用同樣的協定,一般都會采用上圖中的 MSB 先行模式。
  • 觀察圖中的2345標號處,MOSI 及 MISO 的數據在 SCK 的上升沿期間變化輸出,在 SCK 的下降沿時被采樣。即在 SCK 的下降沿時刻,MOSI 及 MISO 的數據有效,高電平時表示數據“1”,為低電平時表示數據“0”。在其它時刻,數據無效,MOSI 及 MISO為下一次表示數據做準備。SPI 每次數據傳輸可以 8 位或 16 位為單位,每次傳輸的單位數不受限制

4.CPOL/CPHA 及通訊模式

  • 上面講述的圖中的時序只是 SPI 中的其中一種通訊模式,SPI 一共有四種通訊模式,它們的主要區別是總線空閑時 SCK 的時鐘狀態以及數據采樣時刻。為方便說明,在此引入“時鐘極性 CPOL”和“時鐘相位 CPHA”的概念。
  • 時鐘極性 CPOL 是指 SPI 通訊設備處于空閑狀態時,SCK 信號線的電平信號(即 SPI 通訊開始前、 NSS 線為高電平時 SCK 的狀態)。CPOL=0 時, SCK 在空閑狀態時為低電平,CPOL=1 時,則相反。
  • 時鐘相位 CPHA 是指數據的采樣的時刻,當 CPHA=0 時,MOSI 或 MISO 數據線上的信號將會在 SCK 時鐘線的“奇數邊沿”被采樣。當 CPHA=1 時,數據線在 SCK 的“偶數邊沿”采樣。見下圖所示。

CPHA=0 時的 SPI 通訊模

  • 我們來分析這個 CPHA=0 的時序圖。首先,根據 SCK 在空閑狀態時的電平,分為兩種情況。SCK 信號線在空閑狀態為低電平時,CPOL=0;空閑狀態為高電平時,CPOL=1。
  • 無論 CPOL=0 還是=1,因為我們配置的時鐘相位 CPHA=0,在圖中可以看到,采樣時刻都是在 SCK 的奇數邊沿。注意當 CPOL=0 的時候,時鐘的奇數邊沿是上升沿,而CPOL=1 的時候,時鐘的奇數邊沿是下降沿。所以 SPI 的采樣時刻不是由上升/下降沿決定的。MOSI 和 MISO 數據線的有效信號在 SCK 的奇數邊沿保持不變,數據信號將在 SCK 奇數邊沿時被采樣,在非采樣時刻,MOSI 和 MISO 的有效信號才發生切換。
  • 類似地,當 CPHA=1 時,不受 CPOL 的影響,數據信號在 SCK 的偶數邊沿被采樣,如下圖所示。

CPHA=1 時的 SPI 通訊模式

  • 由 CPOL 及 CPHA 的不同狀態,SPI 分成了四種模式,見下表,主機與從機需要工作在相同的模式下才可以正常通訊,實際中采用較多的是“模式 0”與“模式 3”。

總結

以上是生活随笔為你收集整理的SPI 协议简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。