SPI、I2C、I2S


1. SPI總線

1.1 基礎概念:

  • 技術性能

    SPI接口是Motorola 首先提出的全雙工三線同步串行外圍接口,采用主從模式(Master Slave)架構;支持多slave模式應用,一般僅支持單Master。時鍾由Master控制,在時鍾移位脈沖下,數據按位傳輸,高位在前,低位在后(MSB first);SPI接口有2根單向數據線,為全雙工通信,目前應用中的數據速率可達幾Mbps的水平

  • SPI結構示意圖

SPI接口共有4根信號線,分別是:串行輸出數據線、串行輸入數據線、時鍾線、設備選擇線。

(1)MOSI:主器件數據輸出,從器件數據輸入
(2)MISO:主器件數據輸入,從器件數據輸出
(3)SCLK :時鍾信號,由主器件產生
(4)/SS:從器件使能信號,由主器件控制

  • 時鍾極性和時鍾相位

    在SPI操作中,最重要的兩項設置就是時鍾極性(CPOL或UCCKPL)和時鍾相位(CPHA或UCCKPH)。時鍾極性設置時鍾空閑時的電平,時鍾相位設
    置讀取數據和發送數據的時鍾沿。

    主機和從機的發送數據是同時完成的,兩者的接收數據也是同時完成的。所以為了保證主從機正確通信,應使得它們的SPI具有相同的時鍾極性和
    時鍾相位。

SPI接口時鍾配置心得:在主設備這邊配置SPI接口時鍾的時候一定要弄清楚從設備的時鍾要求,因為主設備這邊的時鍾極性和相位都是以從設備為
基准的。因此在時鍾極性的配置上一定要搞清楚從設備是在時鍾的上升沿還是下降沿接收數據,是在時鍾的下降沿還是上升沿輸出數據

  • 優缺點

SPI接口具有如下優點:

1) 支持全雙工操作;

2) 操作簡單;

3) 數據傳輸速率較高。

同時,它也具有如下缺點:

1) 需要占用主機較多的口線(每個從機都需要一根片選線);

2) 只支持單個主機。

3) 沒有指定的流控制,沒有應答機制確認是否接收到數據。

1.2傳輸時序:

SPI接口在內部硬件實際上是兩個簡單的移位寄存器,傳輸的數據為8位,在主器件產生的從器件使能信號和移位脈沖下,按位傳輸,高位在前,低位在后。如下圖所示,在SCLK的下降沿上數據改變,上升沿一位數據被存入移位寄存器。

在一個SPI時鍾周期內,會完成如下操作:

  1. 主機通過MOSI線發送1位數據,從機通過該線讀取這1位數據;

  2. 從機通過MISO線發送1位數據,主機通過該線讀取這1位數據。

這是通過移位寄存器來實現的。如下圖所示,主機和從機各有一個移位寄存器,且二者連接成環。隨着時鍾脈沖,數據按照從高位到低位的方式依次移出主機寄存器和從機寄存器,並且依次移入從機寄存器和主機寄存器。當寄存器中的內容全部移出時,相當於完成了兩個寄存器內容的交換。

SPI總線協議及SPI時序圖詳解

嵌入式工程師常用的IIC和SPI總線協議,今天來說透!

SPI總線 通俗易懂講解

【博文匯總】SPI總線學習

2. I2C

2.1 I2C數據發送全過程:

IIC 通信過程大概如下。首先,主設備發一個START信號,這個信號就像對所有其它設備喊:請大家注意!然后其它設備開始監聽總線以准備接收數據。接着,主設備發送一個7位設備地址加一位的讀寫操作的數據幀。當所設備接收數據后,比對地址自己是否目標設備。如果比對不符,設備進入等待狀態,等待STOP信號的來臨;如果比對相符,設備會發送一個應答信號——ACKNOWLEDGE作回應。

當主設備收到應答后便開始傳送或接收數據。數據幀大小為8位,尾隨一位的應答信號。主設備發送數據,從設備應答;相反主設備接數據,主設備應答。當數據傳送完畢,主設備發送一個STOP信號,向其它設備宣告釋放總線,其它設備回到初始狀態。

【博文匯總】I2C總線學習

I2C總線時序模擬(二)-加深理解總線協議

嵌入式工程師常用的IIC和SPI總線協議,今天來說透!

2.2 原理:

1、 在I2C總線上傳送的每一位數據都有一個時鍾脈沖相對應(或同步控制),即在SCL串行時鍾的配合下,在SDA上逐位地串行傳送每一位數據。進行數據傳送時,在SCL呈現高電平期間,SDA上的電平必須保持穩定,低電平為數據0,高電平為數據1。只有在SCL為低電平期間,才允許SDA上的電平改變狀態

為什么IIC總線進行數據發送時,時鍾信號為高電平期間,數據線上的數據必須保持數據穩定???這是因為會在高電平期間采集總線上的數據,如果此時總線上的數據不穩定,會導致采集的數據和發送的數據不一致,從而關閉發送(類似仲裁失敗)。協議規定只有在時鍾信號為低電平期間,數據線上的高電平或低電平才允許變化,這是因為BSD7中的數據是在時鍾下降沿發出的,且不會在時鍾脈沖低電平期間采集總線上的數據。

2、無論讀與寫,都是在時鍾線為低時把數據送到數據總線上,在高時采樣數據,把數據鎖存到內部,所以讀之前先把時鍾線拉低,做好准備(數據線為高表示釋放數據線),為接下來讀數據做好准備。也就是時鍾信號為低時,數據線上的高低電平才允許變化,時鍾信號為高時,數據總線上的數據必須保持穩定。

3、起始信號產生后,總線為被占用狀態(SDA拉低);終止信號產生后,總線為空閑狀態(SCL被釋放了)。

4、接收器件收到一個完整的數據字節后有可能需要完成一些其它工作,如處理中斷,可能無法立刻接收下一字節,這時從機將SCL拉成低電平,從而使主機處於等待狀態。直到從機准備好接收下一字節,再釋放SCL線使之為高,從而數據傳送可繼續進行。數據線上的數據是在時鍾信號為高時被采樣。

5、當主機接收數據時,它收到最后一個數據字節后,必須向從機發出一結束信號。這個信號是由對從機的非應答來實現的。然后,從機釋放SDA線,以允許主機產生終止信號。

3. I2S

3.1 基礎概念:

  • I2S硬件接口定義

    串行時鍾SCLK,也叫位時鍾(BCLK),即對應數字音頻的每一位數據,SCLK都有1個脈沖,SCLK的頻率=2采樣頻率采樣位數。

    幀時鍾LRCK,用於切換左右聲道的數據,1為左聲道,0為右聲道,LRCK頻率等於采樣頻率。

    串行數據SD,就是用二進制補碼表示的音頻數據。

    有時為了使系統能夠更好地同步,還需要另外一個信號MCLK,稱為主時鍾,也叫系統時鍾(sys clock),一般是采樣頻率的256倍或是384倍。切記,MCLK並不是必須的。可有可無,看設計要求。

  • 電氣連接

IIS是比較簡單的數字接口協議,沒有地址或設備選擇機制,在IIS總線上,只能同時存在一個主設備和發送設備。
主設備可以是發送設備,也可以是接收設備,或是協調發送設備和接受設備的其它控制設備。
在IIS系統中,提供時鍾的設備為主設備。

Linux下的I2S驅動學習

I2S協議

I2S音頻總線學習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM