在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>工控技術(shù)>SPI協(xié)議,4線制還是3線制?資料下載

SPI協(xié)議,4線制還是3線制?資料下載

2021-03-27 | pdf | 130.82KB | 次下載 | 3積分

資料介紹

有哪些內(nèi)容?

  • SPI協(xié)議簡介

  • 4線還是3線?

  • 4種工作模式

  • 多種傳輸速率

  • SPI協(xié)議的時序

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

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

  • SPI和IIC的對比

  • 總結(jié)

SPI協(xié)議簡介

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

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

4線還是3線?

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

  • SCLK,時鐘信號,時鐘頻率即SPI速率,和SPI模式有關(guān)

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

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

  • CS,從機設(shè)備選擇,低電平有效

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

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

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

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

4種工作模式

既然是進行數(shù)據(jù)傳輸,雙方就要明確從機在什么時刻去采樣主機發(fā)出的數(shù)據(jù),主機在什么時刻去讀取從機發(fā)來的數(shù)據(jù)。對于STM32等MCU自帶的硬件SPI外設(shè)來說,可能沒有那么重要,只需要配置一下模式就行了,但是對于使用使用GPIO模擬或者FPGA來實現(xiàn)SPI的時序,這一點是非常重要的,這就涉及到SPI標(biāo)準(zhǔn)協(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ù)有效

這四種模式中,應(yīng)用最廣泛的是模式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=0CPHA=1SCK空閑為0,在SCK第二個邊沿時數(shù)據(jù)有效,即SCK下降沿有效。

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

在一些自帶SPI硬件外設(shè)的MCU上,設(shè)置主機的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,&SPI_InitStruct);

而在FPGA中實現(xiàn),需要嚴(yán)格根據(jù)時序來控制SCK和數(shù)據(jù)的輸入輸出。

多種傳輸速率

SCK的速率就是SPI的傳輸速率,SPI協(xié)議沒有一個固定的速率,不像IIC標(biāo)準(zhǔn)模式100K,快速模式400K,高速模式3.4M,SPI的傳輸速率取決于器件本身支持多高的速率,器件手冊里都有描述,以FM25V05為例:

不同電源電壓情況下的最大SCK時鐘頻率:

SPI協(xié)議的基本時序

CS為低電平時,表示對應(yīng)的從機設(shè)備被使能,在每個SCLK周期可以傳輸1Bit數(shù)據(jù),采樣時刻取決于器件支持的SPI mode,根據(jù)不同SPI器件的控制方法,在進行正式的數(shù)據(jù)讀寫操作前,一般需要先寫入控制字,然后是寄存器地址和數(shù)據(jù)。下圖是FM25V05鐵電存儲器采用SPI模式0的寫時序:

讀時序:

如果要使用FPGA來實現(xiàn)SPI時序,在CS下降沿和SCLK第一個邊沿,或CS上升沿和SCLK最后一個邊沿之間要留有一定的延遲時間,一般是0.5個SCLK周期。

一些SPI從機設(shè)備支持菊花鏈連接模式,即節(jié)省GPIO,又不會占據(jù)太多布線面積,但并不是所有的SPI器件都支持菊花鏈模式。

控制時序:

SPI協(xié)議的升級版

傳統(tǒng)標(biāo)準(zhǔn)的SPI協(xié)議,一個SCLK周期只能傳輸1Bit數(shù)據(jù),能不能一個SCLK傳輸多個Bit數(shù)據(jù)呢?答案是可以的。Motorola公司在現(xiàn)有的標(biāo)準(zhǔn)4線SPI協(xié)議上,又開發(fā)出了多種SPI協(xié)議的升級版,通過增加數(shù)據(jù)線位數(shù)的方式,來提高數(shù)據(jù)傳輸?shù)男剩壳昂芏郌lash廠家都已經(jīng)支持多種SPI協(xié)議。

以比較常用的一款SPI Flash ROM W25Q128FW為例,在其器件手冊上寫著除了標(biāo)準(zhǔn)的4線SPI模式,還支持Dual SPI,Quad SPI,QPI等,在這幾種模式下,IO0/1/2/3這些IO作為雙向端口,大大增加了數(shù)據(jù)讀寫的速率。

QSPI協(xié)議讀寫時序:

一些支持QSPI協(xié)議的Flash芯片型號:

FPGA實測SPI波形

FPGA實現(xiàn)、SPI、IIC等串行時序,最常用的實現(xiàn)方式就是狀態(tài)機大法,將各個步驟分解為各個狀態(tài),然后根據(jù)不同的狀態(tài)去控制輸出或讀取輸入,細(xì)節(jié)方面需要考慮數(shù)據(jù)的對齊、建立和保持時間、一些異常情況時狀態(tài)的跳轉(zhuǎn),不能進入死循環(huán),或卡死在某一個狀態(tài)。

下圖的波形是使用Xilinx FPGA對一款鐵電存儲器FM25V05的驅(qū)動,采用標(biāo)準(zhǔn)4線SPI協(xié)議,和IIC接口的ERPOM操作方式類似:先寫控制字,再寫地址,再寫數(shù)據(jù)或者讀數(shù)據(jù),SCK時鐘頻率40MHz,使用ChipScope抓取到的實際讀寫波形,在SCK低電平中間數(shù)據(jù)改變,在SCK上升沿左右數(shù)據(jù)要保持穩(wěn)定。

SPI寫時序,需要注意的是先寫使能命令,然后重新產(chǎn)生CS信號,這一塊卡了好久,在官方示例的C代碼中才發(fā)現(xiàn)了問題所在,還是對手冊上的時序理解不到位。

FM25V05寫時序

SPI讀時序,先寫控制字,再寫16位地址,然后讀8位數(shù)據(jù)。

FM25V05讀時序

SPI和IIC的對比

  • SPI是全雙工,而IIC是半雙工。

  • IIC支持多主機多從機模式,而SPI只能有一個主機。

  • 從GPIO占用上來看,IIC占用更少的GPIO,更節(jié)省資源。

  • SPI的數(shù)據(jù)位寬更靈活,可以根據(jù)需要選擇多位數(shù)據(jù)寬度。

  • SPI協(xié)議沒有響應(yīng)機制,主機無法得知從機是否接收到所發(fā)的數(shù)據(jù),如果不采取一些方法的話可能會導(dǎo)致數(shù)據(jù)丟幀。

  • 正是因為沒有復(fù)雜的響應(yīng)機制,SPI協(xié)議可以做到非常高的速率(上百兆),每一個SCK都可以進行數(shù)據(jù)的傳輸,通過引入CRC校驗等校驗方法,可以即高速傳輸數(shù)據(jù),又能保持?jǐn)?shù)據(jù)的準(zhǔn)確度。

  • IIC通過器件地址來選擇從機,從機數(shù)量的增加不會導(dǎo)致GPIO的增加,而SPI通過CS選擇從機,每增加一個從機就要多占用一個GPIO,當(dāng)然也可以通過加入譯碼器來實現(xiàn)多從機控制。

  • SPI協(xié)議在SCLK沿進行采樣,IIC在SCL高電平器件進行采樣。

  • 兩者大多都應(yīng)用于板內(nèi)器件短距離通訊。

總結(jié)

使用FPGA來實現(xiàn)SPI時序,最大的好處就是靈活,時序可以根據(jù)需要精確的定制,可以實現(xiàn)非常高的速率,特別是同時驅(qū)動多片芯片上有很大的優(yōu)勢,在一些高速AD采集的場合必須使用FPGA來實現(xiàn),難點就是做起來比較麻煩,需要一點點的調(diào)試,仿真,雖然FPGA也有一些現(xiàn)成的IP可以使用,但還是不夠靈活。不像STM32等MCU那樣有現(xiàn)成的庫函數(shù)和寄存器簡單幾行代碼配置一下,就可以實現(xiàn)主從模式、SPI模式、數(shù)據(jù)位寬、多種速率、單線雙線、半雙工全雙工、DMA等等。總之,F(xiàn)PGA和MCU各有優(yōu)點,也各有不足,根據(jù)需求來選擇吧!無論采用什么控制器實現(xiàn),只要根據(jù)數(shù)據(jù)手冊嚴(yán)時序,就沒有什么協(xié)議是不能搞定的

(mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關(guān)電源基礎(chǔ)知識
  4. 5.73 MB  |  11次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5DIY動手組裝LED電子顯示屏
  10. 0.98 MB  |  3次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機PM2.5檢測系統(tǒng)程序
  14. 0.83 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537797次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191186次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 日韩欧美亚洲综合一区二区 | 99色在线视频 | 一 级 黄 中国色 片 | 求网址你懂的手机在线观看网站 | 性感美女福利视频 | 高清性欧美xxx | 日本免费一区二区三区视频 | 久久观看午夜精品 | 热re久久精品国产99热 | 亚洲免费视频一区二区三区 | 456影院第一 | 天天操夜夜操美女 | 免费观看视频在线观看 | 简单视频在线播放jdav | 欧美一区二区三区在线观看 | 国产盗摄女子私密保健视频 | 亚洲色图欧美视频 | 亚洲www| 亚洲黄色网址在线观看 | 国产又色又爽又黄的网站在线一级 | 欧美香蕉视频 | 一区二区精品 | 免费特黄| 国产在视频线精品视频2021 | 国产亚洲3p无码一区二区 | 美女网站色免费 | yy6080理aa级伦大片一级 | 啪啪午夜| 日本大片免费观看视频 | 一本一本大道香蕉久在线精品 | 亚欧美色| 一级免费黄色片 | 日产乱码免费一卡二卡在线 | 亚洲电影av| 岛国毛片一级一级特级毛片 | 69xxxx日本hd4k| 欧美成人观看免费全部完小说 | 在线观看日本免费视频大片一区 | 国产美女久久久 | 亚洲国产精品久久精品怡红院 | 男人边吃奶边爱边做视频日韩 |