www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 電子電路開發(fā)學習
[導讀]有哪些內容?SPI協(xié)議簡介4線還是3線?4種工作模式多種傳輸速率SPI協(xié)議的時序SPI協(xié)議的升級版FPGA實現(xiàn)SPI協(xié)議SPI和IIC的對比總結SPI協(xié)議簡介板卡內不同芯片間通訊最常用的三種串行協(xié)議:UART、I2C、SPI,之前寫過串口協(xié)議及其FPGA實現(xiàn),今天我們來介紹SPI...

有哪些內容?

  • SPI協(xié)議簡介

  • 4線還是3線?

  • 4種工作模式

  • 多種傳輸速率

  • SPI協(xié)議的時序

  • SPI協(xié)議的升級版

  • FPGA實現(xiàn)SPI協(xié)議

  • SPI和IIC的對比

  • 總結

SPI協(xié)議簡介

板卡內不同芯片間通訊最常用的三種串行協(xié)議:UART、I2C、SPI,之前寫過串口協(xié)議及其FPGA實現(xiàn),今天我們來介紹SPI協(xié)議,SPI是Serial Perripheral Interface的簡稱,是由Motorola公司推出的一種高速、全雙工的總線協(xié)議。

與IIC類似,SPI也是采用主從方式工作,主機通常為FPGA、MCU或DSP等可編程控制器,從機通常為EPROM、Flash,AD/DA,音視頻處理芯片等設備。一般由SCLK、CS、MOSI,MISO四根線組成,有的地方可能是:SCK、SS、SDI、SDO等名稱,都是一樣的含義,當有多個從機存在時,通過CS來選擇要控制的從機設備。和標準SPI類似的協(xié)議,還有TI的SSP協(xié)議,區(qū)別主要在片選信號的時序上。

4線還是3線?

當我們談到SPI時,默認情況下都是指標準的4線制Motorola SPI協(xié)議,即SCLK,MOSI,MISO和CS共4根數(shù)據(jù)線,標準4線制的好處是可以實現(xiàn)數(shù)據(jù)的全雙工傳輸。當只有一個主機和一個從機設備時,只需要一個CS,多個從機需要多個CS,各數(shù)據(jù)線的介紹:

  • SCLK,時鐘信號,時鐘頻率即SPI速率,和SPI模式有關

  • MOSI,主機輸出,從機輸入

  • MISO,主機輸入,從機輸出

  • CS,從機設備選擇,低電平有效

3線制SPI,根據(jù)不同的應用場景,主要有以下2種類型:

  • 只有3根線:SCLK,CS和DI或DO,適用于單工通訊,主機只發(fā)送或接收數(shù)據(jù)。

  • 只有3根線:SCLK,SDIO和CS,這里的SDIO作為雙向端口,適用于半雙工通訊,比如ADI的多款ADC芯片都支持雙向傳輸。在使用FPGA操作雙向端口時,作為輸入時要設置為高阻態(tài)z。

還有標準SPI協(xié)議的升級版,Dual SPI、Quad SPI和QPI等,這些協(xié)議不在本小節(jié)3線/4線制討論的范圍內,文章后面會提到。

4種工作模式

既然是進行數(shù)據(jù)傳輸,雙方就要明確從機在什么時刻去采樣主機發(fā)出的數(shù)據(jù),主機在什么時刻去讀取從機發(fā)來的數(shù)據(jù)。對于STM32等MCU自帶的硬件SPI外設來說,可能沒有那么重要,只需要配置一下模式就行了,但是對于使用使用GPIO模擬或者FPGA來實現(xiàn)SPI的時序,這一點是非常重要的,這就涉及到SPI標準協(xié)議的工作模式了,通過CPOL(Clock Polarity)時鐘極性和CPHA(Clock Phase)時鐘相位的不同組合,可以分為4種模式。

一般從機器件的工作模式是固定的,主機需要采用一樣的工作模式,雙方才能正常“交流”。

CPOL=0表示,SCK在空閑狀態(tài)時為0
CPOL=1表示,SCK在空閑狀態(tài)時為1
CPHA=0表示,在SCK第一個邊沿時輸入輸出數(shù)據(jù)有效
CPHA=1表示,在SCK第二個邊沿時輸入輸出數(shù)據(jù)有效
這四種模式中,應用最廣泛的是模式0和3,大多數(shù)SPI器件都同時支持這兩種工作模式,其實這些都不重要,具體采用什么模式,看你的器件手冊就知道了。

以我最近工作中使用到的一款Cypress的鐵電存儲器FM25V05為例,在其官方DataSheet上介紹同時支持SPI Mode 0和Mode 3,

根據(jù)后面的時序圖,可以得知SPI mode 0的讀寫時序,圖中可以看出SCK空閑狀態(tài)為低電平,主機數(shù)據(jù)在每個上升沿被從機采樣,數(shù)據(jù)輸出同理。

對于SPI mode0,SCK空閑狀態(tài)為高電平,主機數(shù)據(jù)在每個上升沿被從機采樣,數(shù)據(jù)輸出同理。

模式1和模式2同理,模式1即CPOL=0,CPHA=1,SCK空閑為0,在SCK第二個邊沿時數(shù)據(jù)有效,即SCK下降沿有效。

模式2即CPOL=1,CPHA=0SCK空閑為1,在SCK第一個邊沿時數(shù)據(jù)有效,即SCK下降沿有效。

在一些自帶SPI硬件外設的MCU上,設置主機的SPI模式非常簡單,只需要配置幾個寄存器的值即可,而且是寫了SCK高電平還是低電平,和第一個還是第二個邊沿,不用去記憶等于0還是等于1。以STM32F103硬件SPI配置為例:

SPI_InitTypeDef??SPI_InitStruct;

SPI_InitStruct.SPI_Mode?=SPI_Mode_Master;???????//主
.....
SPI_InitStruct.SPI_CPOL?=SPI_CPOL_High;?//SCK空閑時為高電平
SPI_InitStruct.SPI_CPHA?=SPI_CPHA_1Edge;//SCK第一個邊沿有效
.....
SPI_Init(SPI2,
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉
關閉