linux驅動開發----SPI驅動(一)

注:本文針對xilinx的zynqMP系列芯片講解SPI驅動

一、引言

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

二、SPI總線結構

spi總線結構

三、SPI接口

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

                                          https://img-blog.csdnimg.cn/20200527080942986.png

MOSI

主器件數據輸出,從器件數據輸入

MISO

主器件數據輸入,從器件數據輸出

SCLK

時鐘信號,由主器件產生

SS

從器件使能信號,由主器件控制

 四、SPI工作原理      

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

spi時序圖

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

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

spi寄存器交換

五、SPI接口的優缺點

  • 優點:
  1. 支持全雙工操作;
  2. 操作簡單;
  3. 數據傳輸速率較高(相對的)。
  • 缺點:
  1. 多個spi設備需要佔用主機較多的管腳(每個從機都需要一根片選線);
  2. 只支持單個主機;
  3. 沒有指定的流控制,沒有應答機制確認是否接收到數據。

六、SPI工作模式

SPI有四種工作模式,具體由CPOL(Clock Polarity 時鐘極性),CPHA(Clock Phase時鐘相位)決定

MODE0 CPOL=0,CPHA=0
MODE1 CPOL=0,CPHA=1
MODE2 CPOL=1,CPHA=0
MODE3 CPOL=1,CPHA=1
  • 當CPOL爲0時,空閒的時候SCLK電平是低電平;
  • 當CPOL爲1時,空閒的時候SCLK電平是高電平;
  • 當CPHA爲0時,採集數據發生在時鐘週期的前邊緣(第一個邊緣,可能是上升緣也可能是下降緣,由CPOL決定),這同時意味着輸出數據發生在後邊緣;
  • 當CPHA爲1時,採集數據發生在時鐘週期的後邊緣(第二個邊緣,可能是上升緣也可能是下降緣,由CPOL決定),這同時意味着輸出數據發生在前邊緣;

摘抄一張網上的圖:


        我們編寫spi接口的設備驅動程序的時候,最需要關心的就是spi控制器的部分是spi設備採用的是那種模式,確定模式後,我們得將spi控制器配置成一樣的模式才能正常工作。所以說如何選擇SPI控制器的工作模式,是根據從設備的工作模式來定的,一般從設備是FLASH、eeprom之類的存儲介質,其工作模式是在出廠時就確定的,所以只能通過修改SPI控制器的工作模式,來適應從設備,從而實現SPI通信流程。

二、zynqMP芯片的SPI控制器

詳見https://download.csdn.net/download/m0_37765662/12414895

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章