18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

深入剖析I2C協(xié)議

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

掃碼添加小助手

加入工程師交流群

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

I2C是由Philips開(kāi)發(fā)的簡(jiǎn)單的雙向兩線總線,在深入淺出理解SPI協(xié)議中,我們區(qū)分了單工,半雙工,全雙工協(xié)議數(shù)據(jù)流向的區(qū)別,根據(jù)特征,I2C協(xié)議屬于半雙工協(xié)議(即同一時(shí)刻,數(shù)據(jù)單向流動(dòng))。此外,I2C也是一種可以多主設(shè)備,多從設(shè)備的總線協(xié)議,通過(guò)地址索引,I2C可以使能所需從設(shè)備,I2C的出現(xiàn)主要是用來(lái)實(shí)現(xiàn)不同集成電路組件之間的控制功能,比如通過(guò)I2C協(xié)議,連接MCU與LCD驅(qū)動(dòng)器,遠(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)行比較,誠(chéng)然,這些協(xié)議經(jīng)過(guò)數(shù)十年的發(fā)展,衍生出了很多新版本,擁有了很多新特性,但他們的基本通信方式?jīng)]變,因此我們僅比較他們的基本版本,得到如下表格,當(dāng)然特性太多,也未必絕對(duì)準(zhǔn)確,僅供初學(xué)者參考。

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

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

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

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

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

三、I2C的信號(hào)線

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

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

SDA(Serial Data) :串行數(shù)據(jù)線,用來(lái)傳輸數(shù)據(jù)信號(hào)。

SCL(Serial Clock):串行時(shí)鐘線,用來(lái)傳輸時(shí)鐘信號(hào),一般是主設(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 空閑位

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

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

5.2 起始位

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

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

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

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

5.3 地址位與讀寫控制

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

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

同時(shí),為了確保采樣時(shí)信號(hào)穩(wěn)定,對(duì)于主設(shè)備,我們?cè)谙陆笛氐臅r(shí)候?qū)⑿盘?hào)放在SDA上,對(duì)于從設(shè)備,我們?cè)谏仙氐臅r(shí)候進(jìn)行采樣。

對(duì)于讀寫控制位來(lái)說(shuō)如果主設(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ī)釋放對(duì)SDA的控制權(quán),由于上拉電阻的作用這個(gè)時(shí)候SDA默認(rèn)為高電平,從機(jī)接管SDA的控制權(quán),假如從機(jī)正確的接收了數(shù)據(jù),會(huì)將SDA拉低,假如沒(méi)有正確的接收數(shù)據(jù),在從設(shè)備的控制下,SDA依舊為高電平。

讀者在這里會(huì)發(fā)現(xiàn),同一個(gè)SDA,怎么主設(shè)備也能控制,從設(shè)備也能控制呢?這里涉及到了inout雙向端口的相關(guān)問(wè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信號(hào)后,就可以正式傳輸數(shù)據(jù)位了,每一次默認(rèn)傳輸一個(gè)字節(jié)(即8bit),每個(gè)字節(jié)的傳輸都需要跟一個(gè)應(yīng)答位(ACK/NACK)

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

5.6 停止位

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

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

5.7 總結(jié)

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

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

所有的陰影部分,都是主設(shè)備在操作總線,而A對(duì)應(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的頻率,這沒(méi)有錯(cuò),但是絕不僅限于此,為了獲得更高的傳輸速率,除開(kāi)芯片設(shè)計(jì)工程師外,電路的設(shè)計(jì)人員需要認(rèn)真思考諸如“負(fù)載電容,上拉電阻的大小”等更偏向于電路設(shè)計(jì)或模擬設(shè)計(jì)的內(nèi)容。

6.2 地址位寬

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

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

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

6.3 設(shè)備地址

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

等等等等

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

7.1 SCL同步問(wèn)題

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

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

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

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

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

7.2 SDA仲裁問(wèn)題

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

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

我們可以采取仲裁機(jī)制,同樣應(yīng)用到總線的線與邏輯,在箭頭所指的位置,SCL上升沿到來(lái),對(duì)SDA上的數(shù)據(jù)進(jìn)行采樣,結(jié)果為0,與DATA2上的數(shù)據(jù)0相同,與DATA1上的數(shù)據(jù)1不同,通過(guò)這種比較 Master1退出了對(duì)總線的控制,而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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9296

    瀏覽量

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

    關(guān)注

    10

    文章

    3002

    瀏覽量

    90976
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1288

    瀏覽量

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

    關(guān)注

    0

    文章

    28

    瀏覽量

    9042

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(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 ?7184次閱讀

    什么是i2c總線

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

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

    I2C總線協(xié)議及其應(yīng)用 一、I2C總線介紹: ---- 由于大規(guī)模集成電路技術(shù)的發(fā)展,在單個(gè)芯片集成CPU以及組成一個(gè)單獨(dú)工作系統(tǒng)
    發(fā)表于 02-08 11:23 ?1717次閱讀
    <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信號(hào)要求,供大家參考,
    發(fā)表于 12-22 17:59 ?17次下載

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

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

    I2C系列的合集,可以系統(tǒng)學(xué)習(xí)I2C協(xié)議

    這篇文章給大家?guī)?lái)了I2C系列的合集,可以系統(tǒng)學(xué)習(xí)I2C協(xié)議。大家趕緊看看吧! 1、I2C總線:何時(shí)使用I2C緩沖器 本文討論了使用
    的頭像 發(fā)表于 09-23 15:28 ?3701次閱讀

    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é)前言開(kāi)始!開(kāi)始!單片機(jī)的I2C
    發(fā)表于 11-30 15:21 ?32次下載
    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是沒(méi)有寄存器這個(gè)概念的。 軟件I2C一般是使用GPIO管腳,用軟件控制SCL,SDA線輸出高低電平,模擬i2c協(xié)議的時(shí)序。例如下面這段
    發(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 總線在物理連接上非常簡(jiǎn)單,分別由SDA(串行數(shù)據(jù)線)和SCL(串行時(shí)鐘線)及上拉電阻組成。通信原理是通過(guò)對(duì)SCL和SDA線高低電平時(shí)序的控制,來(lái) 產(chǎn)生I2C總線協(xié)議所需要的信號(hào)進(jìn)行數(shù)據(jù)的傳遞。在總線空閑狀態(tài)時(shí),這兩根線一
    發(fā)表于 02-11 09:54 ?698次閱讀

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

    你好,我是愛(ài)吃魚(yú)香ROS的小魚(yú)。本節(jié)我們就嘗試直接使用I2C協(xié)議來(lái)點(diǎn)亮OLED,因?yàn)橹饕獪y(cè)試I2C協(xié)議,所以對(duì)于復(fù)雜的顯示處理部分小魚(yú)就略過(guò)了,畢竟有方便的開(kāi)源庫(kù)使用,我們也不用那么糾
    的頭像 發(fā)表于 07-15 16:47 ?2907次閱讀
    使用<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 ?2697次閱讀

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

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