SPI、I2C和UART

一、SPI
SPI(Serial Peripheral Interface,串行外設接口)是Motorola公司提出的一種同步串行數據傳輸標準,在很多器件中被廣泛應用。

  1. 接口
    SPI接口經常被稱爲4線串行總線,以主/從方式工作,數據傳輸過程由主機初始化。如圖1所示,其使用的4條信號線分別爲:
    1) SCLK:串行時鐘,用來同步數據傳輸,由主機輸出;
    2) MOSI:主機輸出從機輸入數據線,通常先傳輸MSB;
    3) MISO:主機輸入從機輸出數據線,通常先傳輸LSB;
    4) SS:片選線,低電平有效,由主機輸出。
    在SPI總線上,某一時刻可以出現多個從機,但只能存在一個主機,主機通過片選線來確定要通信的從機。這就要求從機的MISO口具有三態特性,使得該口線在器件未被選通時表現爲高阻抗。
    SPI、I2C和UART
  2. 數據傳輸
    在一個SPI時鐘週期內,會完成如下操作:
    1) 主機通過MOSI線發送1位數據,從機通過該線讀取這1位數據;
    2) 從機通過MISO線發送1位數據,主機通過該線讀取這1位數據。
    這是通過移位寄存器來實現的。如圖2所示,主機和從機各有一個移位寄存器,且二者連接成環。隨着時鐘脈衝,數據按照從高位到低位的方式依次移出主機寄存器和從機寄存器,並且依次移入從機寄存器和主機寄存器。當寄存器中的內容全部移出時,相當於完成了兩個寄存器內容的交換。
    SPI、I2C和UART
  3. 時鐘極性和時鐘相位
    在SPI操作中,最重要的兩項設置就是時鐘極性(CPOL或UCCKPL)和時鐘相位(CPHA或UCCKPH)。時鐘極性設置時鐘空閒時的電平,時鐘相位設置讀取數據和發送數據的時鐘沿。
    主機和從機的發送數據是同時完成的,兩者的接收數據也是同時完成的。所以爲了保證主從機正確通信,應使得它們的SPI具有相同的時鐘極性和時鐘相位。
    舉例來說,分別選取MSP430控制器和OLED驅動SH1101A爲主從機,圖3和圖4爲它們的SPI時序。由圖4可知,SH1101A的SPI時鐘空閒時爲高電平,並且在後時鐘沿接收數據,則MSP430控制器SPI的設置應與此保持一致。從圖3中可以看出,要使得時鐘在空閒時爲高電平,應將UCCKPL置1;要使得在後時鐘沿接收數據,應將UCCKPH清零。
    SPI、I2C和UART
    SPI、I2C和UART
  4. 優缺點
    SPI接口具有如下優點:
    1) 支持全雙工操作;
    2) 操作簡單;
    3) 數據傳輸速率較高。
    同時,它也具有如下缺點:
    1) 需要佔用主機較多的口線(每個從機都需要一根片選線);
    2) 只支持單個主機。

二、I2C

  1. 接口
    SPI、I2C和UART
    I2C接口包括時鐘線(SCL)和數據線(SDA)。這兩條線都是漏極開路或者集電極開路結構,使用時需要外加上拉電阻,可以掛載多個設備。每個設備都有自己的地址,主機通過不同地址來選中不同的設備。
  2. 一般操作
    1)主機給從機發數據
    • 發送開始條件START和從機地址;
    • 發送數據;
    • 發送停止條件STOP結束。
      2)主機從從機讀取數據
    • 發送開始條件START和從機地址;
    • 發送要讀取的地址;
    • 讀取數據;
    • 發送停止條件STOP結束。
      2.1開始和結束條件
      當SCL保持高電平期間,SDA從高電平跳變到低電平,即爲開始條件START。當SCL保持高電平期間,SDA從低電平跳變到高電平,即爲結束條件STOP。
      SPI、I2C和UART
      2.2 重複的起始條件
      與起始條件的區別是,它出現在結束條件STOP之前。例如讀取數據時,發送START、從機地址、要讀取的地址後,不需要發送STOP,而可以發送重複起始條件和從機地址,開始數據讀取。
      2.3 ACK和NACK
      數據傳輸時先傳MSB。接收者在每個字節後的第9個時鐘週期將SDA保持低電平進行確認數據接收成功;而在第9個時鐘週期將SDA保持高電平表示數據傳輸出錯,或者主機不再想接收數據。
      SPI、I2C和UART
      SPI、I2C和UART
      1. 數據讀寫
        1)寫數據
        SPI、I2C和UART
        2)讀數據
        SPI、I2C和UART
      2. 優缺點
        1)優點
        只使用兩條信號線;
        支持多主機多從機;
        有應答機制。
        2)缺點
        速率比SPI慢。

三、UART
UART是一種異步傳輸接口,不需要時鐘線,通過起始位和停止位及波特率進行數據識別。

  1. 接口
    UART僅使用兩條線TXD和RXD用於數據的發和收。
    SPI、I2C和UART
  2. 數據格式
    1)起始位
    數據線空閒狀態爲高電平,要發送數據時將其拉低一個時鐘週期表示起始位。
    2)數據位
    使用校驗位時,數據位可以有5~8位;如果不使用校驗位,數據位可以達9位。
    3)校驗位
    奇偶校驗,保證包括校驗位和數據位在內的所有位中1的個數爲偶數。
    4)停止位
    爲了表示數據包的結束,發送端需要將信號線從低電平變爲高電平,並至少保持2個時鐘週期。
  3. 優缺點
    1)優點
    只使用兩條信號線;
    不需要時鐘信號;
    有校驗位進行錯誤檢測;
    2)缺點
    傳輸速率比較低。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章