色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

嵌入式系統中常用的IIC與SPI

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-06-23 10:04 ? 次閱讀

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

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

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

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

SPI總線介紹

對于有經驗的數字電子工程師來說,用SPI互聯兩支數字設備是相當直觀的。SPI是一種四根信號線協議(如圖1):

SCLK:Serial Clock (output from master);

MOSI;SIMO:Master Output,Slave Input;

MISO;SOMI:Master Input,Slave Output;

SS:Slave Select (active low)。

00ce84bc-f291-11ec-ba43-dac502259ad0.jpg

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

00e0968e-f291-11ec-ba43-dac502259ad0.jpg

圖2 SPI有四種操作模式:模式0、模式1、模式2和模式3.它們的區別是定義了在時鐘脈沖的哪條邊沿轉換(toggles)輸出信號,哪條邊沿采樣輸入信號,還有時鐘脈沖的穩定電平值(即時鐘信號無效時是高還是低)。每種模式由一對參數刻畫,它們稱為時鐘極(clock polarity)CPOL與時鐘期(clock phase)CPHA。 主從設備必須使用相同的工作參數——SCLKCPOL和CPHA,才能正常工作。如果有多個從設備,并且它們使用了不同的工作參數,那么主設備必須在讀寫不同從設備間重新配置這些參數。 SPI不規定最大傳輸速率,沒有地址方案;SPI也沒規定通信應答機制,沒有規定流控制規則。事實上,SPI主設備甚至并不知道指定的從設備是否存在。這些通信控制都得通過SPI協議以外自行實現。例如,要用SPI連接一支“命令-響應控制型”解碼芯片,則必須在SPI的基礎上實現更高級的通信協議。 SPI并不關心物理接口電氣特性,例如信號的標準電壓。在最初,大多數SPI應用都是使用間斷性時鐘脈沖和以字節為單位傳輸數據的,但現在有很多變種實現了連續性時間脈沖和任意長度的數據幀。 IIC總線介紹 與SPI的單主設備不同,IIC是多主設備的總線,IIC沒有物理的芯片選擇信號線,沒有仲裁邏輯電路,只使用兩條信號線——serial data(SDA)和serial clock(SCL)。

IIC協議規定:

每一支IIC設備都有一個唯一的七位設備地址。

數據幀大小為8位的字節。

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

IIC數據傳輸速率有標準模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps),另外一些變種實現了低速模式(10kbps)和快速+模式(1Mbps)。 物理實現上,IIC總線由兩根信號線和一根地線組成。兩根信號線都是雙向傳輸的,參考圖3。IIC協議標準規定發起通信的設備稱為主設備,主設備發起一次通信后,其它設備均為從設備。

010295f4-f291-11ec-ba43-dac502259ad0.jpg

圖3 IIC通信過程大概如下。首先,主設備發一個START信號,這個信號就像對所有其它設備喊:請大家注意!然后其它設備開始監聽總線以準備接收數據。接著,主設備發送一個7位設備地址加一位的讀寫操作的數據幀。當所設備接收數據后,比對地址自己是否目標設備。如果比對不符,設備進入等待狀態,等待STOP信號的來臨;如果比對相符,設備會發送一個應答信號——ACKNOWLEDGE作回應。 當主設備收到應答后便開始傳送或接收數據。數據幀大小為8位,尾隨一位的應答信號。主設備發送數據,從設備應答;相反主設備接數據,主設備應答。當數據傳送完畢,主設備發送一個STOP信號,向其它設備宣告釋放總線,其它設備回到初始狀態。

011328b0-f291-11ec-ba43-dac502259ad0.jpg

基于IIC總線的物理結構,總線上的START和STOP信號必定是唯一的。另外,IIC總線標準規定:SDA線的數據轉換必須在SCL線的低電平期,在SCL線的高電平期,SDA線的上數據是穩定的。

013a27da-f291-11ec-ba43-dac502259ad0.jpg

圖4 在物理實現上,SCL線和SDA線都是漏極開路(open-drain),通過上拉電阻外加一個電壓源。當把線路接地時,線路為邏輯0,當釋放線路,線路空閑時,線路為邏輯1。基于這些特性,IIC設備對總線的操作僅有“把線路接地”——輸出邏輯0。 IIC總線設計只使用了兩條線,但相當優雅地實現任意數目設備間無縫通信,堪稱完美。我們設想一下,如果有兩支設備同時向SCL線和SDA線發送信息會出現什么情況。 基于IIC總線的設計,線路上不可能出現電平沖突現象。如果一支設備發送邏輯0,其它發送邏輯1,那么線路看到的只有邏輯0。也就是說,如果出現電平沖突,發送邏輯0的始終是“贏家”。 總線的物理結構亦允許主設備在往總線寫數據的同時讀取數據。這樣,任何設備都可以檢測沖突的發生。當兩支主設備競爭總線的時候,“贏家”并不知道競爭的發生,只有“輸家”發現了沖突——當它寫一個邏輯1,卻讀到0時——而退出競爭。 十位設備地址 任何IIC設備都有一個7位地址,理論上,現實中只能有127種不同的IIC設備。實際上,已有IIC的設備種類遠遠多于這個限制,在一條總線上出現相同的地址的IIC設備的概率相當高。為了突破這個限制,很多設備使用了雙重地址——7位地址加引腳地址(external configuration pins)。IIC標準也預知了這種限制,提出10位的地址方案。 10位的地址方案對IIC協議的影響有兩點:

第一,地址幀為兩個字節長,原來的是一個字節。

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

014e350e-f291-11ec-ba43-dac502259ad0.jpg

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

01686e88-f291-11ec-ba43-dac502259ad0.jpg

時鐘拉伸 在IIC通信中,主設備決定了時鐘速度。因為時鐘脈沖信號是由主設備顯式發出的。但是,當從設備沒辦法跟上主設備的速度時,從設備需要一種機制來請求主設備慢一點,這種機制稱為時鐘拉伸。而基于IIC結構的特殊性,這種機制得到實現。當從設備需要降低傳輸的速度的時候,它可以按下時鐘線,逼迫主設備進入等待狀態,直到從設備釋放時鐘線,通信才繼續。 高速模式 原理上講,使用上拉電阻來設置邏輯1,會限制總線的最大傳輸速度。而速度是限制總線應用的因素之一。這也說明為什么要引入高速模式(3.4Mbps)。在發起一次高速模式傳輸前,主設備必須先在低速的模式下(例如快速模式)發出特定的“High Speed Master”信號。為縮短信號的周期和提高總線速度,高速模式必須使用額外的I/O緩沖區。另外,總線仲裁在高速模式下可屏蔽掉。更多的信息請參與總線標準文檔。 IIC與SPI對比 我們來對比一下IIC和SPI的一些關鍵點。

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

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

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

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

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

審核編輯 :李倩

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

    關注

    48

    文章

    7542

    瀏覽量

    151316
  • 通信協議
    +關注

    關注

    28

    文章

    879

    瀏覽量

    40299
  • IIC
    IIC
    +關注

    關注

    11

    文章

    300

    瀏覽量

    38311

原文標題:嵌入式系統中常用的IIC與SPI,這兩種通訊方式該怎么選?

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    新手怎么學嵌入式?

    的運行機制。例如,了解數據結構中的鏈表、棧和隊列,對于在嵌入式編程中管理數據非常有幫助。 2. 選擇合適的編程語言 嵌入式開發中常用的編程語言有 C 和 C++。C 語言是嵌入式開發
    發表于 12-12 10:51

    什么是嵌入式人工智能

    嵌入式人工智能是指將人工智能技術應用于嵌入式系統中的一種技術。嵌入式系統嵌入到其他設備或
    的頭像 發表于 12-11 09:23 ?257次閱讀
    什么是<b class='flag-5'>嵌入式</b>人工智能

    嵌入式系統開發與硬件的關系 嵌入式系統開發常見問題解決

    嵌入式系統開發與硬件的關系 嵌入式系統是專為特定應用設計的計算機系統,它們通常嵌入在所控制的設備
    的頭像 發表于 12-09 09:38 ?234次閱讀

    嵌入式系統的原理和應用

    嵌入式系統是一種專用的計算機系統,其設計初衷是執行特定任務,而非作為通用計算機使用。這類系統通常作為更大系統的一部分,起到控制、監控或輔助的
    的頭像 發表于 10-05 17:03 ?822次閱讀

    嵌入式常用總線有哪些

    嵌入式系統中常用的總線種類繁多,它們各自具有不同的特點和應用場景。以下將詳細介紹幾種嵌入式開發中常用的總線,包括UART、I2C、
    的頭像 發表于 09-10 11:34 ?598次閱讀

    一種常用嵌入式開發代碼庫

    使用開源協議:GPL-2.0varch簡介varch(we-architecture,意為我們的框架庫)是嵌入式C語言常用代碼模塊庫,包含了嵌入式中常用的算法庫,數據結構(容器)庫,解
    的頭像 發表于 09-04 08:06 ?456次閱讀
    一種<b class='flag-5'>常用</b><b class='flag-5'>嵌入式</b>開發代碼庫

    嵌入式常用數據結構有哪些

    嵌入式編程中,數據結構的選擇和使用對于程序的性能、內存管理以及開發效率都具有重要影響。嵌入式系統由于資源受限(如處理器速度、內存大小等),因此對數據結構的選擇和使用尤為關鍵。以下是嵌入式
    的頭像 發表于 09-02 15:25 ?464次閱讀

    嵌入式系統中常用的五種微處理器類型

    本文介紹了嵌入式系統中常用的五種微處理器類型:微處理器單元(MPU)、微控制器(MCU)、數字信號處理器(DSP)、現場可編程邏輯門陣列(FPGA)和單片機(SBC)。文章詳細闡述了每種處理器的功能、優點、缺點以及選擇建議,并列
    的頭像 發表于 07-25 09:29 ?1687次閱讀

    嵌入式系統怎么學?

    操作系統的基本概念和原理,掌握常見的RTOS,如FreeRTOS、uC/OS等,以實現對嵌入式系統的任務調度和資源管理。 6、通信協議:學習常用的通信協議,如UART、
    發表于 07-02 10:10

    如何提升嵌入式編程能力?

    :掌握嵌入式系統的基本原理,包括中斷、并發、實時操作、低功耗設計等。 3. 實踐編程:通過實際編寫和測試代碼來提高技能。從簡單的LED閃爍程序開始,逐步過渡到更復雜的項目,如定時器PWM應用、串口、IIC
    發表于 06-21 10:01

    分享幾個嵌入式中常用的GUI

    交互,完成各種操作,可提高工作效率以及用戶體驗。接下來看一下我們開發中常用的GUI框架有哪些吧~二、開源輕量級顯示框架LVGLLVGL(LightandVersat
    的頭像 發表于 04-06 08:09 ?1557次閱讀
    分享幾個<b class='flag-5'>嵌入式</b><b class='flag-5'>中常用</b>的GUI

    嵌入式fpga是什么意思

    嵌入式FPGA是指將FPGA技術集成到嵌入式系統中的一種解決方案。嵌入式系統是一種為特定應用而設計的計算機
    的頭像 發表于 03-15 14:29 ?1243次閱讀

    fpga是嵌入式

    FPGA(現場可編程門陣列)不是嵌入式系統,但FPGA在嵌入式系統中有著重要的應用。
    的頭像 發表于 03-14 17:19 ?2282次閱讀

    嵌入式系統發展前景?

    嵌入式系統發展前景? 嵌入式系統,從定義上來說,是一種專用的計算機系統,它被設計用來控制、監視或者幫助操作一些設備、裝置或機器。在過去的幾年
    發表于 02-22 14:09

    嵌入式系統的應用實例

    嵌入式系統的三個基本要素是嵌入性、專用性與計算機系統
    的頭像 發表于 01-22 09:57 ?1060次閱讀
    主站蜘蛛池模板: 在线欧美 精品 第1页| 99国产在线精品视频| 俄罗斯搜索引擎Yandex推广入口 | 极品少妇粉嫩小泬啪啪AV| 青青草原国产在线| 正能量不良WWW免费窗口| 国产人妻人伦精品久久久| 热思思| 18禁止看的免费污网站| 狠狠色噜噜狠狠狠狠米奇777| 日本另类z0zxhd| 99九九99九九九视频精品| 精品无人区一区二区三区| 午夜人妻理论片天堂影院| 成年人视频免费在线播放| 蜜柚视频网在线观看免费| 亚洲欧洲精品成人久久曰影片| 国产不卡视频在线| 青青草视频在线ac| BLACKED太粗太长| 美女激清床上戏大全| 一道本在线伊人蕉无码| 国产在线一区二区AV视频| 天天拍拍国产在线视频| 不卡一区二区高清观看视频| 嗯好舒服嗯好大好猛好爽| 2021精品高清卡1卡2卡3麻豆| 久久国产亚洲电影天堂| 亚洲精品久久7777777| 国产露脸无码A区久久蘑菇| 深爱激情站| 法国剧丝袜情版h级在线电影| 欧美性色xo影院69| 99视频精品免视3| 女教师跟黑人男朋友激情过后| 2019中文字幕乱码免费| 久久亚洲精品永久网站| 中文字幕在线不卡日本v二区| 久久成人亚洲| 亚洲中文字幕日产乱码2020| 亚洲精品无码久久久久A片空|