SPI通信


SPI是由Motorola公司提出的一種同步串行外圍接口;它在速度要求不高,低功耗,需要保存少量參數的智能化傳感系統中得到了廣泛應用;

  SPI是一個全雙工的同步串行接口,在數據傳輸過程中,總線上只能是一個主機和一個從機進行通信;

  通信四種模式:

    1、MISO(Master In Slave Out)

       主機輸入,從機輸出;

    2、MOSI(Master  Out  Slave In)

        主機輸出,從機輸入;

    3、SCK(Serial  Clock)

        串行時鍾信號

    4、SS(Slave  Select)

        從機選擇信號,低電平有效;(即作從機時,該位置低)

SPI總線可在軟件的控制下構成各種系統

        

                      SPI總線與多從機連接

SPI的基本結構相當於兩個8位移位寄存器的首尾相接,構成16位的環形移位寄存器,從而實現了主機與從機的數據交換;

          

                      SPI接口的基本結構圖

SPI主從模式

  設置MSTR(主設備選擇)和SPE位(使能位)來選擇是否工作在主模式還是從模式;

stm32強大之處:因為從機NSS位必須接0,而主機NSS位接1;stm32可以有軟件來設置相應的主從位;

SPI下時鍾信號的相位和極性(設置由與之通信的具體芯片來設定)

  SPI接口可由CPOL和CPHA設定4種不同傳輸格式的時序;

  CPOL決定時鍾脈沖SCK的有效脈沖方式(正脈沖、負脈沖)。CPHA決定數據線MOSI什么時候輸出數據或采集數據;

  根據CPOL和CPHA的組合數目,一共四種設置情況;

                       

數據圖分析:

        

數據幀的格式

  根據SPI_CR1寄存器中的LSBFIRST位,輸出數據位時可以MSB(高位先傳)在先也可以是LSB(低位先傳),根據SPI_CR1寄存器的DFF位,每個數據幀可以是8位或者16位,所選擇的數據幀格式對發送/接收都有效;

SPI通信配置步驟:(在主模式下,串行時鍾在SCK腳產生)

  1、通過SPI_CR1寄存器的BR[2:0]位定義串行時鍾波特率;

  2、選擇CPOL和CPHA位,定義數據傳輸和串行時鍾間的相位關系;

  3、設置DFF位來定義8/16位數據幀格式;

  4、配置SPI_CR1寄存器的LSBFIRST位定義幀格式;

  5、如果NSS引腳需要工作在輸入模式,硬件模式中在整個數據幀傳輸期間應把NSS腳連接到高電平;在軟件模式中,需要設置SPI_CR1寄存器的SSM和SSI位,如果NSS引腳工作在輸出模式,則只需設置SSOE位;

  6、必須設置MSTR和SPE位(只當NSS被連到高電平,這些位才能保存置位)。

    在這個配置中,MOSI腳是數據輸出,而MISO腳是數據輸入;

SPI通信過程:

  

  

 


免責聲明!

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



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