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

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

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

3天內不再提示

深入剖析I2C協(xié)議

FPGA設計論壇 ? 來源:CSDN技術社區(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也是一種可以多主設備,多從設備的總線協(xié)議,通過地址索引,I2C可以使能所需從設備,I2C的出現(xiàn)主要是用來實現(xiàn)不同集成電路組件之間的控制功能,比如通過I2C協(xié)議,連接MCU與LCD驅動器,遠程I/O口,RAM,EEPROM或數(shù)據(jù)轉換器。

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

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

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

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

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

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

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

三、I2C的信號線

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

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

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

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

四、I2C的連接方式

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

4.1 單主設備,單從設備

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

4.2 單主設備,多從設備

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

4.3 多主設備,多從設備

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

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

5.1 空閑位

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

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

5.2 起始位

SCL為高電平的時候 ,主設備控制SDA從1到0,為起始位,進入起始位后,SCL按照始終的要求進行翻轉

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

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

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

5.3 地址位與讀寫控制

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

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

同時,為了確保采樣時信號穩(wěn)定,對于主設備,我們在下降沿的時候將信號放在SDA上,對于從設備,我們在上升沿的時候進行采樣。

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

5.4 應答位(ACK/NACK)

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

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

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

正確接收,SDA由從設備拉低

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

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

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

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

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

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

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

5.6 停止位

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

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

5.7 總結

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

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

所有的陰影部分,都是主設備在操作總線,而A對應的ACK,則為從設備在操作總線。

六、I2C可配置變量

6.1 傳輸模式

標準模式(Standard):100kbps

快速模式(Fast):400kbps

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

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

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

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

6.2 地址位寬

標準I2C:七位尋址

擴展I2C:十位尋址

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

6.3 設備地址

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

等等等等

七、I2C的仲裁機制

7.1 SCL同步問題

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

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

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

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

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

7.2 SDA仲裁問題

設想一種多主設備,多從設備的情況

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

我們可以采取仲裁機制,同樣應用到總線的線與邏輯,在箭頭所指的位置,SCL上升沿到來,對SDA上的數(shù)據(jù)進行采樣,結果為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

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

    關注

    33

    文章

    9307

    瀏覽量

    155713
  • 總線
    +關注

    關注

    10

    文章

    3005

    瀏覽量

    91056
  • uart
    +關注

    關注

    22

    文章

    1288

    瀏覽量

    105823
  • I2C協(xié)議
    +關注

    關注

    0

    文章

    28

    瀏覽量

    9061

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

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

    什么是i2c總線

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

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

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

    I2C最新協(xié)議標準

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

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

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

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

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

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

    關于STM32學習分享第七章 I2C協(xié)議(讀寫EEPROM)文章目錄關于STM32學習分享前言二、代碼1.i2c.c2.i2c.h3.main.c總結前言開始!開始!單片機的I2C
    發(fā)表于 11-30 15:21 ?32次下載
    STM32學習之<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實現(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é)議所需要的信號進行數(shù)據(jù)的傳遞。在總線空閑狀態(tài)時,這兩根線一
    發(fā)表于 02-11 09:54 ?699次閱讀

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

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

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

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

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

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