chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式工程師常用的IIC和SPI總線協(xié)議

NJ90_gh_bee81f8 ? 來源:未知 ? 作者:胡薇 ? 2018-08-13 14:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

IIC vs SPI

現(xiàn)今,在低端數(shù)字通信應用領域,我們隨處可見IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是這兩種通信協(xié)議非常適合近距離低速芯片間通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市場需求制定了這兩種標準通信協(xié)議。

IIC 開發(fā)于1982年,當時是為了給電視機內的CPU和外圍芯片提供更簡易的互聯(lián)方式。電視機是最早的嵌入式系統(tǒng)之一,而最初的嵌入系統(tǒng)是使用內存映射(memory-mapped I/O)的方式來互聯(lián)微控制器和外圍設備的。要實現(xiàn)內存映射,設備必須并聯(lián)入微控制器的數(shù)據(jù)線和地址線,這種方式在連接多個外設時需大量線路和額外地址解碼芯片,很不方便并且成本高。

為了節(jié)省微控制器的引腳和和額外的邏輯芯片,使印刷電路板更簡單,成本更低,位于荷蘭的Philips實驗室開發(fā)了 ‘Inter-Integrated Circuit’,IIC 或 IIC ,一種只使用二根線接連所有外圍芯片的總線協(xié)議。最初的標準定義總線速度為100kbps。經(jīng)歷幾次修訂,主要是1995年的400kbps,1998的3.4Mbps。

有跡象表明,SPI總線首次推出是在1979年,Motorola公司將SPI總線集成在他們第一支改自68000微處理器的微控制器芯片上。SPI總線是微控制器四線的外部總線(相對于內部總線)。與IIC不同,SPI沒有明文標準,只是一種事實標準,對通信操作的實現(xiàn)只作一般的抽象描述,芯片廠商與驅動開發(fā)者通過data sheets和application notes溝通實現(xiàn)上的細節(jié)。

SPI

對于有經(jīng)驗的數(shù)字電子工程師來說,用SPI互聯(lián)兩支數(shù)字設備是相當直觀的。SPI是種四根信號線協(xié)議(如圖):

§ SCLK: Serial Clock (output from master);

§ MOSI; SIMO: Master Output, Slave Input(output from master);

§ MISO; SOMI: Master Input, Slave Output(output from slave);

§ SS: Slave Select (active low, outputfrom master).

SPI是[單主設備( single-master )]通信協(xié)議,這意味著總線中的只有一支中心設備能發(fā)起通信。當SPI主設備想讀/寫[從設備]時,它首先拉低[從設備]對應的SS線(SS是低電平有效),接著開始發(fā)送工作脈沖到時鐘線上,在相應的脈沖時間上,[主設備]把信號發(fā)到MOSI實現(xiàn)“寫”,同時可對MISO采樣而實現(xiàn)“讀”,如下圖:

SPI有四種操作模式——模式0、模式1、模式2和模式3,它們的區(qū)別是定義了在時鐘脈沖的哪條邊沿轉換(toggles)輸出信號,哪條邊沿采樣輸入信號,還有時鐘脈沖的穩(wěn)定電平值(就是時鐘信號無效時是高還是低)。每種模式由一對參數(shù)刻畫,它們稱為時鐘極(clock polarity)CPOL與時鐘期(clock phase)CPHA。

[主從設備]必須使用相同的工作參數(shù)——SCLK、CPOL 和 CPHA,才能正常工作。如果有多個[從設備],并且它們使用了不同的工作參數(shù),那么[主設備]必須在讀寫不同[從設備]間重新配置這些參數(shù)。以上SPI總線協(xié)議的主要內容。SPI不規(guī)定最大傳輸速率,沒有地址方案;SPI也沒規(guī)定通信應答機制,沒有規(guī)定流控制規(guī)則。事實上,SPI[主設備]甚至并不知道指定的[從設備]是否存在。這些通信控制都得通過SPI協(xié)議以外自行實現(xiàn)。例如,要用SPI連接一支[命令-響應控制型]解碼芯片,則必須在SPI的基礎上實現(xiàn)更高級的通信協(xié)議。SPI并不關心物理接口電氣特性,例如信號的標準電壓。在最初,大多數(shù)SPI應用都是使用間斷性時鐘脈沖和以字節(jié)為單位傳輸數(shù)據(jù)的,但現(xiàn)在有很多變種實現(xiàn)了連續(xù)性時間脈沖和任意長度的數(shù)據(jù)幀。

IIC

與SPI的單主設備不同,IIC 是多主設備的總線,IIC沒有物理的芯片選擇信號線,沒有仲裁邏輯電路,只使用兩條信號線—— ‘serial data’ (SDA) 和 ‘serial clock’ (SCL)。IIC協(xié)議規(guī)定:

§ 第一,每一支IIC設備都有一個唯一的七位設備地址;

§ 第二,數(shù)據(jù)幀大小為8位的字節(jié);

§ 第三,數(shù)據(jù)(幀)中的某些數(shù)據(jù)位用于控制通信的開始、停止、方向(讀寫)和應答機制。

IIC 數(shù)據(jù)傳輸速率有標準模式(100 kbps)、快速模式(400 kbps)和高速模式(3.4 Mbps),另外一些變種實現(xiàn)了低速模式(10 kbps)和快速+模式(1 Mbps)。

物理實現(xiàn)上,IIC 總線由兩根信號線和一根地線組成。兩根信號線都是雙向傳輸?shù)?,參考下圖。IIC協(xié)議標準規(guī)定發(fā)起通信的設備稱為主設備,主設備發(fā)起一次通信后,其它設備均為從設備。

IIC 通信過程大概如下。首先,主設備發(fā)一個START信號,這個信號就像對所有其它設備喊:請大家注意!然后其它設備開始監(jiān)聽總線以準備接收數(shù)據(jù)。接著,主設備發(fā)送一個7位設備地址加一位的讀寫操作的數(shù)據(jù)幀。當所設備接收數(shù)據(jù)后,比對地址自己是否目標設備。如果比對不符,設備進入等待狀態(tài),等待STOP信號的來臨;如果比對相符,設備會發(fā)送一個應答信號——ACKNOWLEDGE作回應。

當主設備收到應答后便開始傳送或接收數(shù)據(jù)。數(shù)據(jù)幀大小為8位,尾隨一位的應答信號。主設備發(fā)送數(shù)據(jù),從設備應答;相反主設備接數(shù)據(jù),主設備應答。當數(shù)據(jù)傳送完畢,主設備發(fā)送一個STOP信號,向其它設備宣告釋放總線,其它設備回到初始狀態(tài)。

基于IIC總線的物理結構,總線上的START和STOP信號必定是唯一的。另外,IIC總線標準規(guī)定SDA線的數(shù)據(jù)轉換必須在SCL線的低電平期,在SCL線的高電平期,SDA線的上數(shù)據(jù)是穩(wěn)定的。

在物理實現(xiàn)上,SCL線和SDA線都是漏極開路(open-drain),通過上拉電阻外加一個電壓源。當把線路接地時,線路為邏輯0,當釋放線路,線路空閑時,線路為邏輯1?;谶@些特性,IIC設備對總線的操作僅有“把線路接地”——輸出邏輯0。

IIC總線設計只使用了兩條線,但相當優(yōu)雅地實現(xiàn)任意數(shù)目設備間無縫通信,堪稱完美。我們設想一下,如果有兩支設備同時向SCL線和SDA線發(fā)送信息會出現(xiàn)什么情況。

基于IIC總線的設計,線路上不可能出現(xiàn)電平?jīng)_突現(xiàn)象。如果一支設備發(fā)送邏輯0,其它發(fā)送邏輯1,那么線路看到的只有邏輯0。也就是說,如果出現(xiàn)電平?jīng)_突,發(fā)送邏輯0的始終是“贏家”。

總線的物理結構亦允許主設備在往總線寫數(shù)據(jù)的同時讀取數(shù)據(jù)。這樣,任何設備都可以檢測沖突的發(fā)生。當兩支主設備競爭總線的時候,“贏家”并不知道競爭的發(fā)生,只有“輸家”發(fā)現(xiàn)了沖突——當它寫一個邏輯1,卻讀到0時——而退出競爭。

10位設備地址

任何IIC設備都有一個7位地址,理論上,現(xiàn)實中只能有127種不同的IIC設備。實際上,已有IIC的設備種類遠遠多于這個限制,在一條總線上出現(xiàn)相同的地址的IIC設備的概率相當高。為了突破這個限制,很多設備使用了雙重地址——7位地址加引腳地址(external configuration pins)。IIC 標準也預知了這種限制,提出10位的地址方案。

10位的地址方案對 IIC協(xié)議的影響有兩點:

§ 第一,地址幀為兩個字節(jié)長,原來的是一個字節(jié);

§ 第二,第一個字節(jié)前五位最高有效位用作10位地址標識,約定是“11110”。

除了10位地址標識,標準還預留了一些地址碼用作其它用途,如下表:

時鐘拉伸

在 IIC 通信中,主設備決定了時鐘速度。因為時鐘脈沖信號是由主設備顯式發(fā)出的。但是,當從設備沒辦法跟上主設備的速度時,從設備需要一種機制來請求主設備慢一點。這種機制稱為時鐘拉伸,而基于I2C結構的特殊性,這種機制得到實現(xiàn)。當從設備需要降低傳輸?shù)乃俣鹊臅r候,它可以按下時鐘線,逼迫主設備進入等待狀態(tài),直到從設備釋放時鐘線,通信才繼續(xù)。

高速模式

原理上講,使用上拉電阻來設置邏輯1會限制總線的最大傳輸速度。而速度是限制總線應用的因素之一。這也說明為什么要引入高速模式(3.4 Mbps)。在發(fā)起一次高速模式傳輸前,主設備必須先在低速的模式下(例如快速模式)發(fā)出特定的“High Speed Master”信號。為縮短信號的周期和提高總線速度,高速模式必須使用額外的I/O緩沖區(qū)。另外,總線仲裁在高速模式下可屏蔽掉。更多的信息請參與總線標準文檔。

IIC vs SPI: 哪位是贏家?

我們來對比一下IIC 和 SPI的一些關鍵點:

第一,總線拓撲結構/信號路由/硬件資源耗費

IIC 只需兩根信號線,而標準SPI至少四根信號,如果有多個從設備,信號需要更多。一些SPI變種雖然只使用三根線——SCLK, SS和雙向的MISO/MOSI,但SS線還是要和從設備一對一根。另外,如果SPI要實現(xiàn)多主設備結構,總線系統(tǒng)需額外的邏輯和線路。用IIC 構建系統(tǒng)總線唯一的問題是有限的7位地址空間,但這個問題新標準已經(jīng)解決——使用10位地址。從第一點上看,IIC是明顯的大贏家。

第二,數(shù)據(jù)吞吐/傳輸速度

如果應用中必須使用高速數(shù)據(jù)傳輸,那么SPI是必然的選擇。因為SPI是全雙工,IIC 的不是。SPI沒有定義速度限制,一般的實現(xiàn)通常能達到甚至超過10 Mbps。IIC 最高的速度也就快速+模式(1 Mbps)和高速模式(3.4 Mbps),后面的模式還需要額外的I/O緩沖區(qū),還并不是總是容易實現(xiàn)的。

第三,優(yōu)雅性

IIC 常被稱更優(yōu)雅于SPI。公正的說,我們更傾向于認為兩者同等優(yōu)雅和健壯。IIC的優(yōu)雅在于它的特色——用很輕盈的架構實現(xiàn)了多主設備仲裁和設備路由。但是對使用的工程師來講,理解總線結構更費勁,而且總線的性能不高。

SPI的優(yōu)點在于它的結構相當?shù)闹庇^簡單,容易實現(xiàn),并且有很好擴展性。SPI的簡單性不足稱其優(yōu)雅,因為要用SPI搭建一個有用的通信平臺,還需要在SPI之上構建特定的通信協(xié)議軟件。也就是說要想獲得SPI特有而IIC沒有的特性——高速性能,工程師們需要付出更多的勞動。另外,這種自定的工作是完全自由的,這也說明為什么SPI沒有官方標準。IIC和SPI都對低速設備通信提供了很好的支持,不過,SPI適合數(shù)據(jù)流應用,而IIC更適合“字節(jié)設備”的多主設備應用。

小結

在數(shù)字通信協(xié)議簇中,IIC和SPI常稱為“小”協(xié)議,相對Ethernet, USB, SATA, PCI-Express等傳輸速度達數(shù)百上千兆字節(jié)每秒的總線。但是,我們不能忘記的是各種總線的用途是什么?!按蟆眳f(xié)議是用于系統(tǒng)外的整個系統(tǒng)之間通信的,“小”協(xié)議是用于系統(tǒng)內各芯片間的通信,沒有跡象表明“大”協(xié)議有必要取代“小”協(xié)議。IIC和SPI的存在和流行體現(xiàn)了“夠用就好”的哲學。回應文首,IIC和SPI如此的流行,它是任何一位嵌入式工程師必備的工具。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1865

    瀏覽量

    99687
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1547

    瀏覽量

    130422

原文標題:很到位,關于I2C和SPI總線的總結

文章出處:【微信號:gh_bee81f890fc1,微信公眾號:面包板社區(qū)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    嵌入式軟件工程師和硬件工程師的區(qū)別?

    嵌入式軟件工程師和硬件工程師的區(qū)別? 嵌入式軟件工程師 嵌入式軟件
    發(fā)表于 05-16 11:00

    如何成為嵌入式開發(fā)工程師?

    和使用方法。- 掌握接口標準和總線協(xié)議,如UART、SPI、I2C、CAN等。 3. 編程能力:- 精通至少一種編程語言,尤其是C/C++,因為它們是嵌入式系統(tǒng)開發(fā)中最
    發(fā)表于 02-19 10:39

    深圳誠聘嵌入式工程師

    職位:嵌入式工程師工作地點:深圳崗位要求:學歷:本科1、兩年以上嵌入式Linux或Android驅動開發(fā)經(jīng)驗; 2、熟悉常用UART、IIC
    發(fā)表于 01-28 17:03

    高級嵌入式軟件工程師-上海

    高級嵌入式軟件工程師-上海崗位職責:車載GPS定位/導航終端軟件的開發(fā),包括設計、編碼、單元測試、聯(lián)調等。任職資格:1、計算機、通信、電子、自控或相關專業(yè)本科(二本)及以上學歷,5年以上軟件開發(fā)經(jīng)驗
    發(fā)表于 01-13 09:52

    嵌入式工程師高薪機會

    杭州某大型企業(yè)需要一名資深嵌入式工程師,主要崗位要求是:1、 本科及以上學歷,計算機、電子信息等相關專業(yè);2、熟練使用C/C++語言,具備良好的編程風格;3、熟悉Python、Bash等常用腳本語言
    發(fā)表于 07-21 08:55

    誠聘嵌入式軟件工程師

    獵頭職位:嵌入式軟件工程師【南京】崗位職責:1、按要求進行軟件代碼的編寫、測試;2、根據(jù)開發(fā)進度和任務分配,完成相應模塊軟件的設計、開發(fā)、編程任務;3、進行程序單元、功能的測試,檢查軟件缺陷從而
    發(fā)表于 12-01 10:40

    誠招“FPGA工程師嵌入式系統(tǒng)開發(fā)工程師

    納睿達科技有限公司誠招“FPGA工程師、嵌入式系統(tǒng)開發(fā)工程師”【FPGA工程師】學歷要求:研究生 工作經(jīng)驗:不限 崗位職責:1、主要從事設備產(chǎn)品中的FPGA的設計、開發(fā),按流程、規(guī)范完
    發(fā)表于 01-13 14:17

    嵌入式軟件工程師嵌入式硬件工程師有什么不同,區(qū)別在哪里?

    對于初學者來說,一些概念總是容易搞不清楚,容易混淆。比如:“嵌入式硬件工程師嵌入式軟件工程師有什么不同?”,“嵌入式硬件
    發(fā)表于 07-15 16:01

    什么是混合信號嵌入式設計?

    當前的嵌入式設計工程師面臨著系統(tǒng)復雜程度日益提高的挑戰(zhàn)。典型的嵌入式設計可能會包括各種模擬信號、高速和低速串行數(shù)字通信、微處理器總線等等。I2C和S
    發(fā)表于 08-30 06:02

    嵌入式工程師必備知識點:I2C和SPI總線協(xié)議

    表明“大”協(xié)議有必要取代“小”協(xié)議IICSPI的存在和流行體現(xiàn)了“夠用就好”的哲學。回應文首,IIC
    發(fā)表于 05-08 06:00

    嵌入式軟件開發(fā)工程師技能要求總結 精選資料推薦

    找準一個行業(yè)方向:音視頻、人工智能、深度學習、視覺識別、機器學習嵌入式軟件開發(fā)工程師:技能要求:熟悉Linux操作系統(tǒng)、shell腳本語言、mysql的開發(fā),部署,優(yōu)化優(yōu)先、掌握數(shù)據(jù)結構,常用算法
    發(fā)表于 08-09 08:18

    嵌入式工程師需要哪些關鍵技能呢

    流利的用于編寫操作系統(tǒng)的編程語言,例如C:對組件級別的硬件的理解;以及輕松跨越軟件和硬件的能力,這些都是當今嵌入式工程師的全部核心技能。嵌入式開發(fā)所包含的技術的多樣性和不斷擴展的功能,那么什么樣
    發(fā)表于 11-08 08:14

    什么是嵌入式硬件工程師?什么是嵌入式軟件工程師

    什么是嵌入式硬件工程師?什么是嵌入式軟件工程師?嵌入式軟件工程師
    發(fā)表于 12-24 06:41

    嵌入式工程師詳解常用IICSPI總線協(xié)議概念

    )的身影。原因是這兩種通信協(xié)議非常適合近距離低速芯片間通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市場需求制定了這兩種標準通信協(xié)議。
    發(fā)表于 12-22 20:15 ?2015次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>工程師</b>詳解<b class='flag-5'>常用</b>的<b class='flag-5'>IIC</b>和<b class='flag-5'>SPI</b><b class='flag-5'>總線</b><b class='flag-5'>協(xié)議</b>概念

    嵌入式系統(tǒng)中常用IICSPI該怎么選?

    現(xiàn)今,在低端數(shù)字通信應用領域,我們隨處可見IIC(Inter-Integrated Circuit)和 SPI(Serial Peripheral Interface)的身影。原因是這兩種通信協(xié)議
    的頭像 發(fā)表于 04-07 16:12 ?2943次閱讀
    <b class='flag-5'>嵌入式</b>系統(tǒng)中<b class='flag-5'>常用</b>的<b class='flag-5'>IIC</b>與<b class='flag-5'>SPI</b>該怎么選?