91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內(nèi)不再提示

I2C和SPI總線協(xié)議知識(shí)要點(diǎn)整理

NJ90_gh_bee81f8 ? 2018-03-01 14:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

SPI

對(duì)于有經(jīng)驗(yàn)的數(shù)字電子工程師來(lái)說(shuō),用SPI互聯(lián)兩支數(shù)字設(shè)備是相當(dāng)直觀的。SPI是種四根信號(hào)線協(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是[單主設(shè)備( single-master )]通信協(xié)議,這意味著總線中的只有一支中心設(shè)備能發(fā)起通信。當(dāng)SPI主設(shè)備想讀/寫(xiě)[從設(shè)備]時(shí),它首先拉低[從設(shè)備]對(duì)應(yīng)的SS線(SS是低電平有效),接著開(kāi)始發(fā)送工作脈沖到時(shí)鐘線上,在相應(yīng)的脈沖時(shí)間上,[主設(shè)備]把信號(hào)發(fā)到MOSI實(shí)現(xiàn)“寫(xiě)”,同時(shí)可對(duì)MISO采樣而實(shí)現(xiàn)“讀”,如下圖:

IIC

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

第一,每一支IIC設(shè)備都有一個(gè)唯一的七位設(shè)備地址;

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

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

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

物理實(shí)現(xiàn)上,IIC 總線由兩根信號(hào)線和一根地線組成。兩根信號(hào)線都是雙向傳輸?shù)模瑓⒖枷聢D。IIC協(xié)議標(biāo)準(zhǔn)規(guī)定發(fā)起通信的設(shè)備稱(chēng)為主設(shè)備,主設(shè)備發(fā)起一次通信后,其它設(shè)備均為從設(shè)備。

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

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

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

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

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

10位設(shè)備地址

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

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

第一,地址幀為兩個(gè)字節(jié)長(zhǎng),原來(lái)的是一個(gè)字節(jié);第二,第一個(gè)字節(jié)前五位最高有效位用作10位地址標(biāo)識(shí),約定是“11110”。

時(shí)鐘拉伸

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

高速模式

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

IIC vs SPI: 哪位是贏家?

我們來(lái)對(duì)比一下IIC 和 SPI的一些關(guān)鍵點(diǎn):

第一,總線拓?fù)浣Y(jié)構(gòu)/信號(hào)路由/硬件資源耗費(fèi)

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

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

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

第三,優(yōu)雅性

IIC 常被稱(chēng)更優(yōu)雅于SPI。公正的說(shuō),我們更傾向于認(rèn)為兩者同等優(yōu)雅和健壯。IIC的優(yōu)雅在于它的特色——用很輕盈的架構(gòu)實(shí)現(xiàn)了多主設(shè)備仲裁和設(shè)備路由。但是對(duì)使用的工程師來(lái)講,理解總線結(jié)構(gòu)更費(fèi)勁,而且總線的性能不高。SPI的優(yōu)點(diǎn)在于它的結(jié)構(gòu)相當(dāng)?shù)闹庇^簡(jiǎn)單,容易實(shí)現(xiàn),并且有很好擴(kuò)展性。SPI的簡(jiǎn)單性不足稱(chēng)其優(yōu)雅,因?yàn)橐肧PI搭建一個(gè)有用的通信平臺(tái),還需要在SPI之上構(gòu)建特定的通信協(xié)議軟件。也就是說(shuō)要想獲得SPI特有而IIC沒(méi)有的特性——高速性能,工程師們需要付出更多的勞動(dòng)。另外,這種自定的工作是完全自由的,這也說(shuō)明為什么SPI沒(méi)有官方標(biāo)準(zhǔn)。IIC和SPI都對(duì)低速設(shè)備通信提供了很好的支持,不過(guò),SPI適合數(shù)據(jù)流應(yīng)用,而IIC更適合“字節(jié)設(shè)備”的多主設(shè)備應(yīng)用。

小結(jié)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:總結(jié)的很到位!一文講透I2C和SPI總線協(xié)議

文章出處:【微信號(hào):gh_bee81f890fc1,微信公眾號(hào):面包板社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    I2C 為什么只要兩根線就能搞定通信?

    到目前為止,我們已經(jīng)討論了SPI通信和UART通信的基礎(chǔ)知識(shí),現(xiàn)在讓我們討論本系列的最后一個(gè)協(xié)議,即集成電路間協(xié)議I2C)。如果您曾經(jīng)構(gòu)建
    的頭像 發(fā)表于 01-04 09:14 ?1623次閱讀
    <b class='flag-5'>I2C</b> 為什么只要兩根線就能搞定通信?

    P82B715:I2C總線擴(kuò)展的得力助手

    P82B715:I2C總線擴(kuò)展的得力助手 在電子設(shè)計(jì)領(lǐng)域,I2C總線是一種常用的通信協(xié)議,但它的總線
    的頭像 發(fā)表于 12-26 10:20 ?693次閱讀

    TCA39306雙向I2C總線和SMBus電壓電平轉(zhuǎn)換器技術(shù)解析

    電平轉(zhuǎn)換器,為I2C、SMBus和I3C總線通信提供了有效的電壓轉(zhuǎn)換解決方案。本文將深入探討TCA39306的特性、應(yīng)用、詳細(xì)說(shuō)明以及相關(guān)設(shè)計(jì)要點(diǎn)。 文件下載: tca39306.p
    的頭像 發(fā)表于 12-17 10:00 ?374次閱讀

    TCAL9539:低電壓轉(zhuǎn)換、16 位 I2C 總線、SMBus I/O 擴(kuò)展器的設(shè)計(jì)指南

    的 TCAL9539 具有中斷輸出、復(fù)位和配置寄存器等功能,能為兩線雙向 I2C 總線(或 SMBus)協(xié)議提供通用并行輸入/輸出擴(kuò)展,本文將深入探討其特性、應(yīng)用、設(shè)計(jì)要點(diǎn)等內(nèi)容。
    的頭像 發(fā)表于 12-16 09:50 ?385次閱讀

    I2C總線協(xié)議

    I2C 總線使用兩根信號(hào)線(數(shù)據(jù)線 SDA 和時(shí)鐘線 SCL)在設(shè)備間傳輸數(shù)據(jù)。SCL 為單向時(shí)鐘線,固定由主機(jī)驅(qū)動(dòng)。SDA 為雙向數(shù)據(jù)線,在數(shù)據(jù)傳輸過(guò)程中由收發(fā)兩端分時(shí)驅(qū)動(dòng)。 I2C 總線
    發(fā)表于 12-15 08:07

    I2C的缺點(diǎn)介紹

    上升時(shí)間變慢和潛在的信號(hào)衰減。對(duì)于長(zhǎng)距離通信,其他協(xié)議,如 UART(通用異步接收器/發(fā)送器)或 SPI(串行外設(shè)接口)可能更合適。 速度限制: 雖然 I2C 支持不同的速度模式,但其高速模式(高達(dá)
    發(fā)表于 11-27 06:10

    SPII2C、UART三種串行總線的區(qū)別與對(duì)比

    1)概念定義 SPI(Serial Peripheral Interface:串行外設(shè)接口); I2C(INTER IC BUS:意為IC之間總線) UART(Universal
    發(fā)表于 11-20 07:19

    SPI、I2CI2S、UART:通信協(xié)議解釋

    ? ? ? ? 在嵌入式開(kāi)發(fā)中,最常用的幾種通信接口無(wú)非就是SPI、I2CI2S、UART。名字看起來(lái)差不多,但應(yīng)用場(chǎng)景和特性卻大不相同。為什么都叫串行通信,結(jié)構(gòu)卻不一樣?為什么有的能傳音頻,有的
    的頭像 發(fā)表于 11-18 10:53 ?534次閱讀

    SPI、I2C、I2S、UART:通信協(xié)議對(duì)比表

    在嵌入式開(kāi)發(fā)中,最常用的幾種通信接口無(wú)非就是SPI、I2C、I2S、UART。名字看起來(lái)差不多,但應(yīng)用場(chǎng)景和特性卻大不相同。很多初學(xué)者容易混淆:為什么都叫串行通信,結(jié)構(gòu)卻不一樣?為什么有的能傳音頻
    的頭像 發(fā)表于 11-17 10:53 ?1729次閱讀
    <b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>、<b class='flag-5'>I2</b>S、UART:通信<b class='flag-5'>協(xié)議</b>對(duì)比表

    深入剖析I2C協(xié)議

    I2C是由Philips開(kāi)發(fā)的簡(jiǎn)單的雙向兩線總線,在深入淺出理解SPI協(xié)議中,我們區(qū)分了單工,半雙工,全雙工協(xié)議數(shù)據(jù)流向的區(qū)別,根據(jù)特征,
    的頭像 發(fā)表于 08-21 15:10 ?3663次閱讀
    深入剖析<b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>

    I2C總線通信,為什么要進(jìn)行電氣隔離?

    I2C總線采用雙向二線制,支持多主機(jī)多從機(jī)通信,具備高可靠性、抗干擾能力強(qiáng),廣泛應(yīng)用于嵌入式系統(tǒng)中。
    的頭像 發(fā)表于 08-11 11:04 ?2501次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>通信,為什么要進(jìn)行電氣隔離?

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動(dòng)之Linux下的I2C驅(qū)動(dòng)簡(jiǎn)介

    在Linux下,I2C(Inter-Integrated Circuit)驅(qū)動(dòng)是用于支持I2C總線協(xié)議的驅(qū)動(dòng)程序。I2C是一種串行通信
    發(fā)表于 04-15 10:39

    飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動(dòng)之Linux下的I2C驅(qū)動(dòng)簡(jiǎn)介

    在Linux下,I2C(Inter-Integrated Circuit)驅(qū)動(dòng)是用于支持I2C總線協(xié)議的驅(qū)動(dòng)程序。I2C是一種串行通信
    發(fā)表于 04-15 10:19

    是德DSOX4034A示波器I2C總線信號(hào)分析

    在現(xiàn)代電子設(shè)計(jì)與調(diào)試中,I2C(Inter-Integrated Circuit)總線作為一種廣泛應(yīng)用的串行通信協(xié)議,因其簡(jiǎn)單性、靈活性和低功耗特性,成為許多嵌入式系統(tǒng)和電子設(shè)備中不可或缺的通信方式
    的頭像 發(fā)表于 03-19 13:47 ?1217次閱讀
    是德DSOX4034A示波器<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>信號(hào)分析

    I2C總線復(fù)用

    帝晶智慧屏I2C總線復(fù)用
    的頭像 發(fā)表于 03-11 17:20 ?2078次閱讀