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

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

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

單片機(jī)I2C和SPI通信的不同

微云疏影 ? 來源:維庫 ? 作者:維庫 ? 2023-06-06 10:47 ? 次閱讀

I2C和SPI是兩種不同的通信協(xié)議。

聽到協(xié)議,似乎高不可攀,其實(shí)協(xié)議就是人們定義的一個(gè)標(biāo)準(zhǔn)而已,我們只要遵照這個(gè)標(biāo)準(zhǔn)去做事,就可以。比如公司規(guī)定早上9點(diǎn)上班,我們就9點(diǎn)上班,不然就會(huì)扣薪水,這就是個(gè)協(xié)議。

用I2C通信的芯片常用的就是EEPROM芯片,如Atmel的AT24CXX系列,此外,還有一些其它功能的芯片。用SPI通信的芯片有外置FLASH芯片,同樣,還有其他功能的一些芯片。

I2C通信需要用到兩個(gè)引腳:SDA SCL。SCL是時(shí)鐘引腳,SDA是數(shù)據(jù)引腳。

pYYBAGR-nfyAaYLqAAAxOP8z7C0444.png

(這是EEPROM芯片)

pYYBAGR-ngGAeQ_QAAA0gvnokx0676.png

(這是時(shí)鐘芯片)

SPI通信需要3個(gè)引腳或者4個(gè)引腳:CS SCK MOSI MISO。SPI通信芯片的引腳名稱不一定都是這幾個(gè)名稱,可能還有會(huì)別的名稱,但是意思是一樣的,例如MOSI引腳的意思是“主機(jī)輸出從機(jī)輸入”,某個(gè)SPI接口的芯片就有可能會(huì)寫成SDI,因?yàn)檫@個(gè)SPI器件是作為從機(jī)的,所以它的SDI的意思就是“從機(jī)數(shù)據(jù)輸入引腳”。

SPI通信過程為:把CS引腳拉低,然后SCK輸出時(shí)鐘,然后就可以在MOSI引腳上輸出數(shù)據(jù),同時(shí)可以在MISO上獲得數(shù)據(jù)了。

poYBAGR-ngiAK0-eAAAiSSsuvuU623.png

(這是一個(gè)SPI FLASH芯片,DO是MISO,DI是MOSI,CLK是SCK,功能一樣,叫法不一樣而已)

pYYBAGR-ng-ABRg0AAAtqk04pp4049.png

(這是一個(gè)SPI接口的ADC芯片,Dout是MISO,DCLOCK就是SCK,這個(gè)芯片有3個(gè)SPI引腳)

大部分單片機(jī)上面都會(huì)帶有I2C口和SPI口,有可能還會(huì)有好幾個(gè)I2C口和SPI口。不過,不帶I2C口和SPI口的單片機(jī),也可以通過普通引腳的模擬他們的時(shí)序來進(jìn)行通信。

而且,如果是初學(xué)者的話,一定要學(xué)習(xí)一下用普通引腳模擬,對(duì)他們的通信本質(zhì)理解更深刻。

通信全程,其實(shí)就是控制引腳高低電平和檢測(cè)引腳高低電平的過程,話說,控制單片機(jī)的引腳高低電平和檢測(cè)引腳的高低電平,天學(xué)單片機(jī)就會(huì)了,所以,I2C通信和SPI通信也沒什么難的地方。

給大家講一個(gè)簡(jiǎn)單的通信過程,例如我們稱下面的通信名稱為KJLWT,名字是不是看起來很吊,其實(shí)是“科技老頑童”的拼音首字母,因?yàn)榻酉聛淼膮f(xié)議是我剛剛發(fā)明的,所以以此命名^_^。主要是讓大家理解,名稱就是用來嚇唬人的。

我們用兩條線來通信,一條時(shí)鐘線,一條數(shù)據(jù)線。時(shí)鐘線,其實(shí)就是用來產(chǎn)生一個(gè)脈沖波形,再說的直接一點(diǎn),就是把引腳變高變低的信號(hào),如下圖:

pYYBAGR-nhWAXTyIAAADBO1Eq10680.png

(這就是個(gè)時(shí)鐘信號(hào))

例如我們規(guī)定,在時(shí)鐘引腳為高電平的時(shí)候,讀取數(shù)據(jù)引腳的電平,連續(xù)8個(gè)時(shí)鐘,就可以讀到一個(gè)字節(jié)了。那給數(shù)據(jù)的那一端,要怎么給數(shù)據(jù)呢?也很簡(jiǎn)單,給數(shù)據(jù)的那一端,在檢測(cè)到低電平的時(shí)候,就把要發(fā)送的數(shù)據(jù)按照位體現(xiàn)在數(shù)據(jù)引腳上面。例如一個(gè)數(shù)據(jù):0x88,寫成二進(jìn)制以后就是1000 1000。我們來看一下傳輸這個(gè)數(shù)據(jù)的過程:從機(jī)檢測(cè)時(shí)鐘引腳,檢測(cè)到一個(gè)下降沿(就是從高電平落到了低電平),就把要發(fā)送的數(shù)據(jù)的bit7體現(xiàn)在數(shù)據(jù)引腳上,例如1000 1000的bit7是1,就把數(shù)據(jù)引腳變高電平,主機(jī)在時(shí)鐘引腳的高電平,檢測(cè)這個(gè)數(shù)據(jù)引腳,把這個(gè)位記錄下來,從機(jī)再次發(fā)現(xiàn)時(shí)鐘引腳的下降沿后,再把數(shù)據(jù)的bit6體現(xiàn)在數(shù)據(jù)引腳上,由于1000 1000 的bit6是0,所以從機(jī)把數(shù)據(jù)引腳拉低,然后當(dāng)時(shí)鐘引腳為高電平的時(shí)候,主機(jī)檢測(cè)數(shù)據(jù)引腳的高低電平,再把bit6記錄下來,……以此8次,就可以把一個(gè)字節(jié)由從機(jī)傳輸?shù)街鳈C(jī)了。是不是很簡(jiǎn)單呢?

時(shí)鐘的速率,就是傳輸數(shù)據(jù)的快慢,以上面講的為例,如果脈沖的周期為1秒鐘,也就是1Hz,那么傳輸一個(gè)字節(jié)就需要8秒鐘;如果脈沖的周期為1毫秒,也就是1KHz,那么輸出一個(gè)字節(jié)只需要8毫秒。這下你就理解通信的速率是什么意思了吧?

I2C通信,SPI通信,只不過是在我剛才講的例子上面,又多了一些協(xié)議內(nèi)容。具體的協(xié)議,你們隨便找一個(gè)I2C和SPI通信接口的芯片看一下時(shí)序圖就可以了。我們要做的,就是用單片機(jī)的引腳,把它的時(shí)序做出來。

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

    關(guān)注

    455

    文章

    50816

    瀏覽量

    423674
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6032

    瀏覽量

    135995
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1487

    瀏覽量

    123771
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    探索GPIO/ADC/LED/I2C/SPI/USB…的完整世界

    今天了解的是GPIO/ADC/LED/I2C/SPI/USB硬件接口設(shè)計(jì)及其注意事項(xiàng),希望對(duì)大家有所幫助。
    的頭像 發(fā)表于 11-17 09:59 ?349次閱讀
    探索GPIO/ADC/LED/<b class='flag-5'>I2C</b>/<b class='flag-5'>SPI</b>/USB…的完整世界

    51單片機(jī)STC8H8K64U通過RA8889/RA8876如何控制彩屏 I2C源碼下載

    用51單片機(jī)STC8H8K64U驅(qū)動(dòng)彩屏,控制器采用瑞佑RA8889. 使用軟件模擬I2C方式通信,驅(qū)動(dòng)大屏顯示。
    的頭像 發(fā)表于 11-01 11:02 ?440次閱讀
    51<b class='flag-5'>單片機(jī)</b>STC8H8K64U通過RA8889/RA8876如何控制彩屏 <b class='flag-5'>I2C</b>源碼下載

    詳解I2C總線與SPI總線的區(qū)別

    I2C(Inter-Integrated Circuit)表示集成電路互連,是一種用于線路板內(nèi)部芯片之間通信的總線。
    的頭像 發(fā)表于 10-16 15:16 ?4411次閱讀
    詳解<b class='flag-5'>I2C</b>總線與<b class='flag-5'>SPI</b>總線的區(qū)別

    通過I2C進(jìn)行TPS65987和TPS65988 SPI閃存固件更新

    電子發(fā)燒友網(wǎng)站提供《通過I2C進(jìn)行TPS65987和TPS65988 SPI閃存固件更新.pdf》資料免費(fèi)下載
    發(fā)表于 09-29 10:31 ?0次下載
    通過<b class='flag-5'>I2C</b>進(jìn)行TPS65987和TPS65988 <b class='flag-5'>SPI</b>閃存固件更新

    DHT11用的是SPI還是I2C

    DHT11并不使用SPII2C通信協(xié)議,而是采用單總線(1-Wire)協(xié)議進(jìn)行通信 。單總線協(xié)議是由美國(guó)DALLAS達(dá)爾斯公司推出的外圍串行擴(kuò)展總線,具有簡(jiǎn)潔的線路連接和較低的功耗特
    的頭像 發(fā)表于 09-04 09:11 ?1133次閱讀

    簡(jiǎn)單認(rèn)識(shí)I2C通信協(xié)議

    I2C(Inter-Integrated Circuit)通信協(xié)議是由飛利浦公司(現(xiàn)為恩智浦半導(dǎo)體)開發(fā)的一種簡(jiǎn)單、雙向二線制同步串行總線協(xié)議。自1982年發(fā)布以來,I2C協(xié)議因其高效、靈活和易于實(shí)現(xiàn)的特點(diǎn),在電子設(shè)備間的數(shù)據(jù)交
    的頭像 發(fā)表于 07-25 18:06 ?1467次閱讀

    I2C、SPI、UART的通信過程還可以這樣理解

    到目前為止,I2CSPI和UART等仍然是電子嵌入式設(shè)備中最常用的通信協(xié)議,本文,我們將剖析這三種協(xié)議,讓大家清楚、直觀的了解它們的功能、優(yōu)點(diǎn)和局限性,并輔以GIF動(dòng)圖展示。一、IIC協(xié)議I
    的頭像 發(fā)表于 05-23 08:10 ?7203次閱讀
    <b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>、UART的<b class='flag-5'>通信</b>過程還可以這樣理解

    STM8L001J3單片機(jī)SPI機(jī)通信數(shù)據(jù)異常怎么解決?

    最近在做一個(gè)項(xiàng)目,選擇STM8L001J3外掛做數(shù)據(jù)處理,由于通信速度和準(zhǔn)確性考慮,沒有用STM8L001J3的I2C和USART接口,采用SPI做叢機(jī)和主機(jī)進(jìn)行
    發(fā)表于 04-24 07:55

    SPII2C通信協(xié)議:應(yīng)用與區(qū)別

    本文深入解析了SPII2C這兩種通信協(xié)議的特點(diǎn)、工作原理和應(yīng)用場(chǎng)景。SPI適用于高速數(shù)據(jù)傳輸,常用于存儲(chǔ)器芯片和顯示器驅(qū)動(dòng)等領(lǐng)域;I2C
    的頭像 發(fā)表于 04-22 16:45 ?1835次閱讀

    逼真動(dòng)畫展示I2CSPI、UART的通信過程

    到目前為止,I2C、SPI和UART等仍然是電子嵌入式設(shè)備中最常用的通信協(xié)議,本文,我們將剖析這三種協(xié)議,讓大家清楚、直觀的了解它們的功能、優(yōu)點(diǎn)和局限性,并輔以GIF動(dòng)圖展示。I2C協(xié)
    的頭像 發(fā)表于 04-12 08:27 ?985次閱讀
    逼真動(dòng)畫展示<b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>、UART的<b class='flag-5'>通信</b>過程

    總結(jié)usart、uart、i2c、spi區(qū)別及相關(guān)知識(shí)

    USART、UART、I2CSPI是四種不同的串行通信協(xié)議,它們各自具有獨(dú)特的特點(diǎn)和應(yīng)用領(lǐng)域
    的頭像 發(fā)表于 04-10 09:47 ?1795次閱讀
    總結(jié)usart、uart、<b class='flag-5'>i2c</b>、<b class='flag-5'>spi</b>區(qū)別及相關(guān)知識(shí)

    請(qǐng)問STM32F103 I2C通信SPI通信哪種方式更穩(wěn)定?

    STM32F103這顆料I2C通信SPI通信哪種方式更穩(wěn)定?
    發(fā)表于 03-22 06:24

    藍(lán)牙串口通訊總線——I2C/SPI/UART

    嵌入式工程師在做串口通信調(diào)試工作的時(shí)候,會(huì)經(jīng)常用到I2C、SPI、UART這3條總線,I2C、SPI、UART這三種
    的頭像 發(fā)表于 01-22 09:41 ?1659次閱讀
    藍(lán)牙串口通訊總線——<b class='flag-5'>I2C</b>/<b class='flag-5'>SPI</b>/UART

    使用兩片ADU360進(jìn)行I2C通信,當(dāng)與從機(jī)進(jìn)行通信時(shí),從機(jī)無法進(jìn)入I2C中斷是為什么?

    問題說明:使用兩片ADU360進(jìn)行I2C通信,主機(jī)使用IO口模擬方式,從機(jī)使用內(nèi)部外設(shè) 主機(jī)IO口模擬方式,確認(rèn)是可行,當(dāng)與從機(jī)進(jìn)行通信時(shí),
    發(fā)表于 01-15 06:47

    XV4001BC車載用SPI/I2C輸出接口的數(shù)字輸出

    XV4001BC車載用SPI/I2C輸出接口的數(shù)字輸出,可實(shí)現(xiàn)角速度輸出和溫度傳感器輸出,滿足汽車導(dǎo)航和通訊系統(tǒng)的要求。SPI / I2C 輸出接口角速度輸出(16bit)、溫度傳感
    發(fā)表于 01-02 16:33 ?0次下載