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

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

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

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

深入剖析I2C協(xié)議

FPGA設(shè)計論壇 ? 來源:CSDN技術(shù)社區(qū) ? 2025-08-21 15:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、什么是I2C協(xié)議

I2C是由Philips開發(fā)的簡單的雙向兩線總線,在深入淺出理解SPI協(xié)議中,我們區(qū)分了單工,半雙工,全雙工協(xié)議數(shù)據(jù)流向的區(qū)別,根據(jù)特征,I2C協(xié)議屬于半雙工協(xié)議(即同一時刻,數(shù)據(jù)單向流動)。此外,I2C也是一種可以多主設(shè)備,多從設(shè)備的總線協(xié)議,通過地址索引,I2C可以使能所需從設(shè)備,I2C的出現(xiàn)主要是用來實(shí)現(xiàn)不同集成電路組件之間的控制功能,比如通過I2C協(xié)議,連接MCU與LCD驅(qū)動器,遠(yuǎn)程I/O口,RAM,EEPROM或數(shù)據(jù)轉(zhuǎn)換器。

二、I2C,SPI,UART協(xié)議的區(qū)別

作者按照順序,依次完成了UART,SPI,I2C協(xié)議,因?yàn)檫@三種協(xié)議都屬于低速通用協(xié)議接口,因此作者將這三種協(xié)議放在一塊進(jìn)行比較,誠然,這些協(xié)議經(jīng)過數(shù)十年的發(fā)展,衍生出了很多新版本,擁有了很多新特性,但他們的基本通信方式?jīng)]變,因此我們僅比較他們的基本版本,得到如下表格,當(dāng)然特性太多,也未必絕對準(zhǔn)確,僅供初學(xué)者參考。

65b1425e-7d8d-11f0-a18e-92fbcf53809c.png

重點(diǎn)解釋一下UART,SPI,I2C這三個協(xié)議的選通方式,作者覺得很有意思。

對于UART來說,正常來說是沒有辦法滿足一個主設(shè)備,多個從設(shè)備的通信,它的通信方式最為簡單,最低只需要一根線即可完成通信,協(xié)議本身并不允許外接多個從設(shè)備,但是我們也可以通過比如485轉(zhuǎn)接、增加二極管的方式來進(jìn)行多從設(shè)備選擇(電路層面的設(shè)計內(nèi)容,不是數(shù)字IC需要考慮的內(nèi)容)。

其次是SPI協(xié)議,它有一個專門的NSS端口,默認(rèn)拉低來選擇所需的從設(shè)備。

最后是I2C協(xié)議,每個主設(shè)備和每個從設(shè)備都對應(yīng)一個地址,通信的時候先發(fā)送地址信號,若一致,則被選中。

三、I2C的信號線

I2C僅需要兩根信號線即可完成通信,如下圖所示。除此以外,I2C的信號線需要連接上拉電路,有關(guān)上拉電阻的大小,是電路設(shè)計工程師需要操心的事,不歸Digital IC Design Engineer管,就不在這里贅述了。

65c2bb9c-7d8d-11f0-a18e-92fbcf53809c.png

SDA(Serial Data) :串行數(shù)據(jù)線,用來傳輸數(shù)據(jù)信號。

SCL(Serial Clock):串行時鐘線,用來傳輸時鐘信號,一般是主設(shè)備向從設(shè)備提供。

四、I2C的連接方式

I2C的連接的連接形式非常靈活,可以是單主設(shè)備,單從設(shè)備,也可以是單主設(shè)備,多從設(shè)備,還可以是多主設(shè)備,多從設(shè)備。

4.1 單主設(shè)備,單從設(shè)備

65d280a4-7d8d-11f0-a18e-92fbcf53809c.png

4.2 單主設(shè)備,多從設(shè)備

65eb9652-7d8d-11f0-a18e-92fbcf53809c.png

4.3 多主設(shè)備,多從設(shè)備

65faa336-7d8d-11f0-a18e-92fbcf53809c.png

五、I2C的數(shù)據(jù)傳輸格式

5.1 空閑位

空閑時SDA與SCL默認(rèn)都是高電平,對應(yīng)于主設(shè)備狀態(tài)機(jī)IDLE(默認(rèn)態(tài))時的輸出為高

660e7dd4-7d8d-11f0-a18e-92fbcf53809c.png

5.2 起始位

SCL為高電平的時候 ,主設(shè)備控制SDA從1到0,為起始位,進(jìn)入起始位后,SCL按照始終的要求進(jìn)行翻轉(zhuǎn)

從設(shè)備接收到起始位信息,狀態(tài)機(jī)發(fā)生跳變,等待地址信號的輸入

661c508a-7d8d-11f0-a18e-92fbcf53809c.png

從設(shè)備在這里需要使用到下降沿檢測電路,作為狀態(tài)機(jī)跳變的控制信號,詳情可參考作者之前的文章。【數(shù)字IC手撕代碼】Verilog邊沿檢測電路

5.3 地址位與讀寫控制

主設(shè)備按照從高到低的順序,依次發(fā)送地址位,從設(shè)備進(jìn)行接收,通常情況下,地址位為7bit,讀寫選擇為1bit。每個從設(shè)備有且只有一個唯一的地址編號,依靠著這個編號,確定主設(shè)備具體與哪一個從設(shè)備進(jìn)行通信。

6631fd68-7d8d-11f0-a18e-92fbcf53809c.png

同時,為了確保采樣時信號穩(wěn)定,對于主設(shè)備,我們在下降沿的時候?qū)⑿盘柗旁赟DA上,對于從設(shè)備,我們在上升沿的時候進(jìn)行采樣。

對于讀寫控制位來說如果主設(shè)備需要將數(shù)據(jù)發(fā)送到從設(shè)備,則該位設(shè)置為 0;如果主設(shè)備需要往從設(shè)備接收數(shù)據(jù),則將其設(shè)置為 1 。即寫為0,讀為1。

5.4 應(yīng)答位(ACK/NACK)

發(fā)送了標(biāo)題為5.3的8bit后,主機(jī)釋放對SDA的控制權(quán),由于上拉電阻的作用這個時候SDA默認(rèn)為高電平,從機(jī)接管SDA的控制權(quán),假如從機(jī)正確的接收了數(shù)據(jù),會將SDA拉低,假如沒有正確的接收數(shù)據(jù),在從設(shè)備的控制下,SDA依舊為高電平。

讀者在這里會發(fā)現(xiàn),同一個SDA,怎么主設(shè)備也能控制,從設(shè)備也能控制呢?這里涉及到了inout雙向端口的相關(guān)問題,可以參考作者的這篇文章進(jìn)行解讀和理解通俗易懂的帶你解讀inout雙向端口

5.4.1 正確接收數(shù)據(jù)(ACK)

正確接收,SDA由從設(shè)備拉低

663d3dfe-7d8d-11f0-a18e-92fbcf53809c.png

5.4.2 未正確接收數(shù)據(jù)(NACK)

未正確接收,SDA依舊為高電平

664cd80e-7d8d-11f0-a18e-92fbcf53809c.png

5.5 數(shù)據(jù)位

當(dāng)我們成功收到ACK信號后,就可以正式傳輸數(shù)據(jù)位了,每一次默認(rèn)傳輸一個字節(jié)(即8bit),每個字節(jié)的傳輸都需要跟一個應(yīng)答位(ACK/NACK)

665a5498-7d8d-11f0-a18e-92fbcf53809c.png

5.6 停止位

SCL先拉高,在SCL為高電平的時候,SDA從低到高,即為停止位,此后,I2C協(xié)議重新進(jìn)入到空閑狀態(tài)。這里使用了上升沿檢測電路,原理同起始位的下降沿檢測電路

666f5c4e-7d8d-11f0-a18e-92fbcf53809c.png

5.7 總結(jié)

667a3df8-7d8d-11f0-a18e-92fbcf53809c.png

首先為起始位S(start),接著傳輸?shù)刂?位SLAVE ADDRESS和1位讀寫控制信號R/W,再往后8位8位的傳輸數(shù)據(jù)位,每個字節(jié)緊跟ACK信號,最后為停止位

所有的陰影部分,都是主設(shè)備在操作總線,而A對應(yīng)的ACK,則為從設(shè)備在操作總線。

六、I2C可配置變量

6.1 傳輸模式

標(biāo)準(zhǔn)模式(Standard):100kbps

快速模式(Fast):400kbps

快速模式+(Fast-Plus):1Mbps

高速模式(High-speed):3.4Mbps

超快模式(Ultra-Fast):5Mbps(單向傳輸)

提起不同速度的傳輸模式,讀者首先想到的可能是指SCK的頻率,這沒有錯,但是絕不僅限于此,為了獲得更高的傳輸速率,除開芯片設(shè)計工程師外,電路的設(shè)計人員需要認(rèn)真思考諸如“負(fù)載電容,上拉電阻的大小”等更偏向于電路設(shè)計或模擬設(shè)計的內(nèi)容。

6.2 地址位寬

標(biāo)準(zhǔn)I2C:七位尋址

擴(kuò)展I2C:十位尋址

每個主設(shè)備或者從設(shè)備都能對應(yīng)一個唯一的地址,大多數(shù)情況下,7位的地址,已經(jīng)夠用了。但是也可以對其進(jìn)行擴(kuò)展,轉(zhuǎn)變?yōu)?0位地址,多出來的3位地址相當(dāng)于提供了8倍潛在設(shè)備數(shù)量,同時,按照NXP2021版的I2C協(xié)議規(guī)定,10位地址的從設(shè)備,和7位地址的從設(shè)備,都可以掛在一個總線上,彼此相互兼容,不過,客觀來講,10位尋址的I2C不常用,7位尋址的I2C協(xié)議就足夠大家日常使用了。

6.3 設(shè)備地址

每個主設(shè)備與從設(shè)備需要設(shè)置互不相同的七位地址或十位地址。

等等等等

七、I2C的仲裁機(jī)制

7.1 SCL同步問題

總線天生帶線與邏輯,即總線的幾個輸入端,任意有一個拉低,總線表現(xiàn)為低電平,全部位高電平時,總線才是高電平,真值表如下所示。

6691d8a0-7d8d-11f0-a18e-92fbcf53809c.png

假設(shè)有兩個主設(shè)備都想拉低SCL信號,Master1先拉低 ,Master2后拉低,那么SCL會按照CLK1的時間來拉低自身(線與邏輯的應(yīng)用),而假如Master1先拉高,Master2后拉高,SCL又會按照CLK2的時間來拉高自身。

因此:當(dāng)多個節(jié)點(diǎn)同時發(fā)送時鐘信號時,在總線上表現(xiàn)的是統(tǒng)一的時鐘信號。這就是SCL的同步原理

669b1154-7d8d-11f0-a18e-92fbcf53809c.png

7.2 SDA仲裁問題

設(shè)想一種多主設(shè)備,多從設(shè)備的情況

假如在空閑狀態(tài)時,兩個主設(shè)備先后想要操控I2C總線(相隔時間很短),I2C豈不是會發(fā)生錯誤(數(shù)據(jù)紊亂等),如何解決這個問題呢?

我們可以采取仲裁機(jī)制,同樣應(yīng)用到總線的線與邏輯,在箭頭所指的位置,SCL上升沿到來,對SDA上的數(shù)據(jù)進(jìn)行采樣,結(jié)果為0,與DATA2上的數(shù)據(jù)0相同,與DATA1上的數(shù)據(jù)1不同,通過這種比較 Master1退出了對總線的控制,而Master2所發(fā)送的數(shù)據(jù)都是正確的,完成仲裁。

66b50758-7d8d-11f0-a18e-92fbcf53809c.png

原文鏈接:

https://blog.csdn.net/weixin_43698385/article/details/125094436

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

    關(guān)注

    33

    文章

    9487

    瀏覽量

    156563
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    3029

    瀏覽量

    91465
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1308

    瀏覽量

    106377
  • I2C協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    9138

原文標(biāo)題:理解I2C協(xié)議

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    I2C協(xié)議以及I2C讀寫EEPROM

    2-3 數(shù)據(jù)有效性2-4 地址及數(shù)據(jù)方向2-5 響應(yīng)三、STM32 的 I2C 架構(gòu)剖析3-1 通訊引腳3-
    發(fā)表于 08-23 08:25

    I2C總線協(xié)議及其應(yīng)用(圖)

    I2C總線協(xié)議及其應(yīng)用
    發(fā)表于 06-01 20:22 ?7240次閱讀

    什么是i2c總線

    什么是i2c總線  下載請點(diǎn)擊: i2c總線協(xié)議中文版 
    發(fā)表于 11-05 09:26 ?3202次閱讀

    I2C總線協(xié)議及其應(yīng)用

    I2C總線協(xié)議及其應(yīng)用 一、I2C總線介紹: ---- 由于大規(guī)模集成電路技術(shù)的發(fā)展,在單個芯片集成CPU以及組成一個單獨(dú)工作系統(tǒng)
    發(fā)表于 02-08 11:23 ?1762次閱讀
    <b class='flag-5'>I2C</b>總線<b class='flag-5'>協(xié)議</b>及其應(yīng)用

    I2C最新協(xié)議標(biāo)準(zhǔn)

    I2C最新協(xié)議標(biāo)準(zhǔn),詳細(xì)介紹了IIC信號要求,供大家參考,
    發(fā)表于 12-22 17:59 ?17次下載

    如何更加深入理解I2C總線、協(xié)議及應(yīng)用

    更加深入理解I2C總線、協(xié)議及應(yīng)用
    的頭像 發(fā)表于 03-20 09:29 ?3999次閱讀
    如何更加<b class='flag-5'>深入</b>理解<b class='flag-5'>I2C</b>總線、<b class='flag-5'>協(xié)議</b>及應(yīng)用

    STM32學(xué)習(xí)之I2C協(xié)議(讀寫EEPROM)

    關(guān)于STM32學(xué)習(xí)分享第七章 I2C協(xié)議(讀寫EEPROM)文章目錄關(guān)于STM32學(xué)習(xí)分享前言二、代碼1.i2c.c2.i2c.h3.main.c總結(jié)前言開始!開始!單片機(jī)的I2C
    發(fā)表于 11-30 15:21 ?34次下載
    STM32學(xué)習(xí)之<b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>(讀寫EEPROM)

    MPU6050的I2C通信協(xié)議

    不同硬件有不同的I2C協(xié)議
    發(fā)表于 12-06 12:21 ?3次下載
    MPU6050的<b class='flag-5'>I2C</b>通信<b class='flag-5'>協(xié)議</b>

    硬件I2C與模擬I2C

    配置;而軟件I2C是沒有寄存器這個概念的。 軟件I2C一般是使用GPIO管腳,用軟件控制SCL,SDA線輸出高低電平,模擬i2c協(xié)議的時序。例如下面這段
    發(fā)表于 12-28 19:14 ?81次下載
    硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    一文看懂I2C協(xié)議

    電子行業(yè)最常用的3種串行通訊協(xié)議:UART、SPI和I2C。前面介紹了串口通訊協(xié)議及其FPGA實(shí)現(xiàn),SPI協(xié)議。本篇文章介紹I2C通訊
    發(fā)表于 01-25 18:32 ?40次下載
    一文看懂<b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>

    深度剖析I2C總線協(xié)議

    I2C 總線在物理連接上非常簡單,分別由SDA(串行數(shù)據(jù)線)和SCL(串行時鐘線)及上拉電阻組成。通信原理是通過對SCL和SDA線高低電平時序的控制,來 產(chǎn)生I2C總線協(xié)議所需要的信號進(jìn)行數(shù)據(jù)的傳遞。在總線空閑狀態(tài)時,這兩根線一
    發(fā)表于 02-11 09:54 ?785次閱讀

    使用I2C協(xié)議點(diǎn)亮OLED

    你好,我是愛吃魚香ROS的小魚。本節(jié)我們就嘗試直接使用I2C協(xié)議來點(diǎn)亮OLED,因?yàn)橹饕獪y試I2C協(xié)議,所以對于復(fù)雜的顯示處理部分小魚就略過了,畢竟有方便的開源庫使用,我們也不用那么糾
    的頭像 發(fā)表于 07-15 16:47 ?3162次閱讀
    使用<b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>點(diǎn)亮OLED

    I2C串行總線協(xié)議是什么?I2C總線有哪些優(yōu)點(diǎn)?

    I2C串行總線協(xié)議是什么?I2C總線有哪些優(yōu)點(diǎn)? I2C(Inter-Integrated Circuit)是一種串行總線協(xié)議,由Phili
    的頭像 發(fā)表于 09-12 11:18 ?2943次閱讀

    I2C總線協(xié)議的工作原理和尋址格式

    等特點(diǎn),在嵌入式系統(tǒng)設(shè)計中得到了廣泛應(yīng)用。本文將詳細(xì)介紹I2C總線協(xié)議的工作原理和尋址格式,幫助讀者深入理解該協(xié)議。
    的頭像 發(fā)表于 05-27 15:47 ?3608次閱讀

    I2C協(xié)議的基礎(chǔ)知識

    本文從I2C協(xié)議的概述開始,描述協(xié)議的歷史、不同速度模式、物理層和數(shù)據(jù)幀結(jié)構(gòu),最后介紹I2C混合電壓系統(tǒng)中電平兼容性以及上拉電阻大小計算。
    的頭像 發(fā)表于 10-22 15:51 ?4416次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>的基礎(chǔ)知識