在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

I2C總線學習筆記

CHANBAEK ? 來源:電老鼠的變身記錄 ? 作者:小P ? 2023-10-25 14:35 ? 次閱讀

I2C在小P以前接觸的設計中大多只用到400k的速率,EVB的設計中更經常發現實現不了就降速到100k。現在突然再看看I2C,發現原來還有更高的速率規范,最高都已經到5M了。

于是乎,小P又要把這兒挖一挖看一看,反正I2C以后也經常會用到,不也得懂個所以然。

一、整體介紹

I2C最早是由Philips公司,現NXP公司開發的一種雙向兩線總線協議。其由于僅需要兩個引腳即可實現雙向多設備具有巨大的優勢。截止至小P寫這篇推文時候,規范的最新版本已經是《UM10204 v7》了。

在不同的應用架構中,I2C可用于SMBus(System Management Bus)、PMBus(Power Management Bus)、IPMI(Intelligent Platform Management Interface)、DDC(Display Data Channel)和ATCA(Advanced Telecom Computing Architecture)。I2C往后的進一步演進MIPI I3C總線是可以向下兼容I2C(I3C全名叫Improved Inter-Integrated Circuit,強譯那就是改良型I2C),I3C可以提供更高的速率和更低的功耗。MIPI I3C總線在后續如果有涉及到的時候,再展開進一步學習了。

下圖是個典型的I2C總線應用場景。

圖片

I2C總線有且僅有兩個網絡走線,串行數據線SDA和串行時鐘線SCL。所有的I2C設備均是通過這兩根走線進行互連通信,每個設備均以唯一的地址被識別。大多數I2C設備可以既作為發送端也可作為接收端,個別I2C設備如LCD驅動器等不需要發送數據的設備,可以只用作接收端。

由于I2C總線需要“線與”邏輯用于判斷總線占用情況,因此SDA和SCL的接口必須使用外接上拉的OD驅動設計。

圖片

在只有單個I2C controller的應用場景中,如果SCL時鐘線上沒有會Stretch Clock的設備,那么controller的SCL輸出可以使用推挽(Push-pull)電路。

PS.在V7的規范里,I2C原來master/slave的描述更新為controller/target,和MIPI I3C規范保持一致。

二、總線速率

I2C總線按速率分為以下的模式:

模式速率方向
Standard-mode(Sm)100kbit/s雙向
Fast-mode(Fm)400kbit/s雙向
Fast-mode Plus(Fm+)1Mbit/s雙向
High-speed mode(Hs-mode)3.4Mbit/s雙向
Ultra Fast-mode(UFm)5Mbit/s單向

可以發現,3.4Mbps以下的速率,I2C總線的傳輸都是雙向的,但是在UFm模式下變成單向傳輸。這種情況可以應用在控制器發送數據給LCD屏幕驅動,不需要回傳數據的場景。

除了UFm模式以外,其他的模式均是和更低速率模式兼容的。

1、Fast-mode/ Standard-mode

(1)SDA和SCL的時序是適配的;

(2)SDA和SCL的INPUT為了消除毛刺,集成了施密特觸發器(Schmitt trigger);

(3)SDA和SCL的OUTPUT包含下降沿的斜率控制。(其實就是OD門只可通過配置調整下管的驅動能力)

2、Fast-mode Plus

(1)總線拓撲與F/S-mode保持一致,速率向下兼容;

(2)Fm+設備可提供比F/S-mode更大的驅動電流,從而實現更長/更重負載的鏈路。

(3)當總線上僅有Fm+設備時,更強的驅動能力和更大的上升/下降容忍度,使得可以通過降速實現更重負載電容鏈路應用。最小的LOW和HIGH電平時間需要滿足Fm+要求,上升時間不超過1us和下降時間不超過300ns。通過權衡總線速度和負載電容,可以提升最大負載電容的承受能力約10倍。

3、High-speed mode

(1)總線拓撲與F/S-mode、Fm+保持一致,速率向下兼容;

(2)為了實現3.4MBbps的通信速率,SCLH的OUTPUT使用了OD下拉+電流源上拉的組合電路,SDAH與其他保持一致;僅在Hs-mode模式下,僅有一個controller的電流源上拉會被使用;

(3)在Hs-mode的多控制器系統中,仲裁和時鐘同步不會使用,這能加速位處理的能力;

(4)Hs-mode controller發出的SCL波形高低電平時間比是1:2,進而減輕了建立/保持的要求;

(5)Hs-mode controller可以在內部集成一個bridge。在Hs-mode傳輸時將F/S-mode設備的SDA、SCL和Hs-mode設備的SDAH(high-speed serial data)、SCLH(high-speed serial clock)斷開。通過這種方式可以減小SDAH和SCLH總線上的負載電容,從而提高上升時間和下降時間;這個在下面的圖示可以非常直觀清晰的看到;

(6)SDAH和SCLH的INPUT集成了施密特觸發器;

(7)SDAH和SCLH的OUTPUT包含下降沿的斜率控制。

圖片

當總線電容>100pF時,Rp可以被替換為外部電流源上拉,從而提高上升時間滿足要求。

Rs電阻作為可選項,用于保護IO接口不被過高毛刺打壞,并且可以優化過沖震蕩。

4、Ultra Fast-mode

針對UFm,不過多展開學習了。需要注意的是,UFm模式下的I2C,USDA和USCL均是采用的Push-pull輸出,最高可達到5Mbps。

圖片

三、BIT/BYTE

接下來我們著重看下I2C的一些細節點,

首先就是I2C信號的采樣方式。I2C的數據有效性要求SDA數據線在SCL時鐘線高電平必須是穩定的(也就是在SCL高電平采樣,不是邊沿采樣),SDA數據線的電平翻轉僅允許在SCL時鐘線低電平時,如下圖。

圖片

然后就是I2C總線的數據傳輸的開始和結束特征,這個很簡單。就是在SCL時鐘線高電平時,SDA數據線下降表示開始,SDA數據線上升表示結束,如下圖。S condition和P condition僅由控制器(也就是原master)發出,當S condition發出后,總線則被占用。在P condition發出一定時間間隔后,總線會被認為釋放。

圖片

再接著是I2C的byte格式,這里有很有趣的幾個點,這個就是OD門“線與”邏輯的有趣應用了。詳細的圖示可以看底下的圖:

1、SDA數據線上的byte必須是8位長,并且開頭一定是一個MSB(Most Significant Bit,這可不是你們以為嗶嗶)。當transmitter發送完一個8位的byte后,會將SDA數據線釋放到高電平。然后receiver完整接收到這個8位byte后,將會在下一個(第9個)時鐘周期高電平來之前,將SDA數據線拉低到低電平(ACK信號)。通過這個方式告訴transmitter我接收到數據了。如果沒有成功接收到數據,或是數據不識別,那么在第9個時鐘周期高電平時,receiver需要釋放SDA數據線為高電平(NACK)。Controller若接收到NACK,則可以發出STOP condition結束數據傳輸或repeated START condition進行新的數據傳輸。

2、當target設備正在忙,沒空接收數據時,target可以將SCL時鐘線拉低,也就是我們說的hold住SCL。這種情況下,controller會進入等待模式。當target忙完了,就可以釋放SCL時鐘線,然后才會進行下一個byte的數據發送和接收。

圖片

I2C的數據傳輸是基于地址的,所以完整的一個I2C數據傳輸是包含7個地址位,1個讀寫位,再接著數據位和ACK位,如下圖。在S(START condition)后面緊接著的就是7位Addr和1位RW。

圖片

值得注意的是,由于Hs-mode下的SCLH的高低電平周期是1:2,所以Hs-mode的傳輸和F/S- mode有些許差異,下圖可以體現。

圖片

其實在學習I2C的時候,會有一個很容易迷惑的點,就是controller和target的關系,還有就是transmitter和receiver的關系。規范中對于這些的定義是如下

圖片

如果還是梳理不清楚,那么接下來的這段講解,應該可以進一步幫助理解

1、Controller-transmitter發送數據給targer-receiver。數據傳輸的方向不需要變化,target-receiver在接收到每個byte時需要反饋ACK。

圖片

2、Controller讀取target的數據,先由controller-tranmitter發送地址和讀位,當target-receiver反饋ACK后,隨即調整方向。controller-tranmitter變為controller-receiver,target-receiver變為target-tranmitter。第一個ACK信號由target在接收到地址后產生,后續的ACK均由controller產生。STOP condition(P)是在controller發出一個not-acknowledge(NACK)后,由controller發出STOP condition(P)。

圖片

3、還有一種混合格式(Combined format),在一次傳輸過程中,地址沒有變化,僅是傳輸方向有變化。那么只需要重發一次repeated START condition(Sr)和同樣的target地址,但是讀寫位翻轉。在controller-receiver發送repeated START condition前,會發送NACK。

圖片

為了支持更多的設備可以同時掛在I2C總線上,7-bit地址擴展到了10-bit地址。7-bit/10-bit設備可以同時掛在一個I2C總線上。他們的區別就是,10-bit地址需要占用兩個byte才能完成地址的傳輸。

第一個byte規定為1111 0XXR/W

第二個byte則定為XXXX XXXX

這10個X組成了10-bit地址,R/W決定了讀寫方向。

寫方向與7-bit地址的模式類似,在完成兩個地址byte發送后,發送8位數據。

圖片

讀方向則和7-bit地址的Combined format有點類似,在完成兩個地址byte發送后,通過repeated START condition(Sr),再發送一次一個byte地址后(讀寫位需要配置為1 Read),開始反向讀取數據。這個時候不需要發第二個byte的地址,因為匹配的target設備會記憶其被定位。若讀寫位配置為0 Write,則需要繼續發送第二個byte的地址去進行配對。

圖片

Hs-mode和F/S-mode的傳輸格式也有少許區別

圖片

四、電氣約束和時序約束(瘋狂的貼圖時間)

1、S-/F-/Fm+設備約束

設備需要滿足其最高速率,但是通過時鐘同步,stretch SCL的低電平的方式,可以實現降速。

圖片

圖片

圖片

圖片

2、Hs-mode設備約束

一般意義上的START condition(S)在HS-mode中不存在,而是以repeated START condition(Sr)開頭。地址位、讀寫位、ACK位及數據位的時序都是一樣的,但是第一個SCLH的上升時間很特殊地放寬了。由于ACK后的第一個SCLH,上升沿是靠外部上拉電阻提供的驅動能力(第一個SCLH的時候,內部上拉電流源未開通工作)。

通過內部依次產生的100ns高電平和200ns低電平,Hs-mode controller滿足外部3.4MHz的時序要求(包含上升/下降時間)。因此,Hs-mode controller可以采用10MHz基頻或倍頻來產生SCLH信號。

對于Hs-mode來說,時序要求也與總線上負載電容相關。當總線負載電容小于100pF時,總線可能可以運行在最高3.4Mbps速率下。當負載電容持續增大時,比特率會開始逐步降低。當總線負載電容等于400pF時,則能達到的最高速率應該是1.7Mbps。總線負載電容在100-400pF之間的,則時序參數需要線性的插值。

SDAH和SCLH的上升/下降時間與其在傳輸線上的最大傳播時間一致,以防止末端開路反射。

圖片

圖片

圖片

圖片

I2C的鏈路時序計算一般風險較低。按照3.4MHz計算,一個周期大概是300ns。假定PCB的板材是FR4,DK 4.5,這樣換算下來那么1ns大概是5.57inch走線的時延。且SDA的電平翻轉動作是在SCLH低電平期間,也就是200ns這段,可以等效約1000多inch,已經遠遠超出可能的應用場景了。

這般梳理下來,小P覺得I2C的基本應用,配合做SI分析已經是足夠了。如果說后面遇到需要進一步學習的時候,再補充了。

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

    關注

    33

    文章

    8949

    瀏覽量

    153209
  • I2C總線
    +關注

    關注

    8

    文章

    408

    瀏覽量

    61927
  • 總線協議
    +關注

    關注

    0

    文章

    128

    瀏覽量

    15175
  • SDA
    SDA
    +關注

    關注

    0

    文章

    125

    瀏覽量

    28705
  • SCL
    SCL
    +關注

    關注

    1

    文章

    243

    瀏覽量

    17464
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    STM32學習筆記_I2C詳解(可下載)

    I2C 是一種簡單的雙向二線制同步串行總線。它只需要兩根線即可在連接于總線 上的器件之間傳送信息I2C 總線能夠支持多個設備間的通訊。它包含
    發表于 03-14 17:33 ?3次下載

    I2C總線復用

    帝晶智慧屏I2C總線復用
    的頭像 發表于 03-11 17:20 ?1309次閱讀

    I2C總線通信原理 如何設計I2C總線電路

    I2C總線通信原理 I2C(Inter-Integrated Circuit)總線是一種用于集成電路之間進行通信的串行通信協議。它最早由飛利浦公司(現被恩智浦電子收購)于1982年推出
    的頭像 發表于 01-31 15:01 ?919次閱讀

    I2C總線的優缺點分析

    I2C總線作為一種廣泛使用的串行通信協議,以其簡單性和高效性在嵌入式系統中占據著重要地位。 I2C總線的優點 1. 簡單性和低成本 I2C
    的頭像 發表于 01-17 15:50 ?941次閱讀

    I2C總線與Arduino的接口示例

    在現代電子設計中,I2C總線因其簡單性和靈活性而廣受歡迎。它允許多個設備共享同一通信線路,從而節省空間和成本。Arduino,作為一個多功能的微控制器平臺,自然也支持I2C通信。 I2C
    的頭像 發表于 01-17 15:34 ?1367次閱讀

    I2C總線的工作模式介紹

    在現代電子系統中,I2C總線作為一種多主機、多從機的串行通信協議,扮演著至關重要的角色。它允許多個設備共享同一總線,進行數據傳輸,從而簡化了系統設計并降低了成本。 I2C
    的頭像 發表于 01-17 15:32 ?802次閱讀

    I2C總線協議詳細解析

    1. I2C總線簡介 I2C總線由Philips Semiconductor(現為NXP Semiconductors)在1980年代初期開發。它是一種多主機
    的頭像 發表于 01-17 15:22 ?746次閱讀

    I2C總線故障排除技巧

    I2C總線是一種廣泛使用的串行通信協議,它允許多個設備在兩條線上(數據線SDA和時鐘線SCL)進行通信。由于其簡單性和靈活性,I2C總線在嵌入式系統中非常流行。然而,當
    的頭像 發表于 01-17 15:20 ?1948次閱讀

    I2C總線與單片機的連接

    在現代電子系統中,單片機(MCU)是核心控制單元,而I2C總線作為一種多主機、多從機的串行通信協議,因其簡單、高效和節省引腳的特性而被廣泛應用于各種電子設備中。 I2C總線概述
    的頭像 發表于 01-17 15:18 ?1011次閱讀

    I2C總線應用實例分析

    在現代電子系統中,I2C總線因其簡單、靈活和高效的特點而被廣泛應用于各種設備之間的通信。 I2C總線概述 I2C
    的頭像 發表于 01-17 15:09 ?627次閱讀

    I2C總線與SPI總線的比較

    在現代電子系統中,微控制器與各種外設之間的通信是必不可少的。I2C和SPI是兩種流行的串行通信協議,它們各自具有獨特的特點和應用場景。 I2C總線 I2C是一種多主機、多從機的同步通信
    的頭像 發表于 01-17 15:08 ?801次閱讀

    I2C總線上拉電阻阻值如何確定?

    導讀I2C總線在產品設計中被廣泛應用,盡管其結構簡單,但經常發生上拉電阻設計不合理的問題。本文將對I2C上拉電阻的選擇進行簡要分析。一根信號線上,通過電阻連接一個固定的高電平VCC,信號線初始、空閑
    的頭像 發表于 12-27 11:34 ?1660次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>上拉電阻阻值如何確定?

    了解I2C總線

    電子發燒友網站提供《了解I2C總線.pdf》資料免費下載
    發表于 10-08 11:13 ?2次下載
    了解<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>
    主站蜘蛛池模板: 在线播放国产一区 | 天堂免费观看 | 夜夜摸夜夜操 | 欧美性爽xxxⅹbbbb | 天天夜干 | ts视频在线观看 | 男人的天堂在线视频 | 99久热成人精品视频 | 欧美日韩一区不卡 | 天天爽夜夜爽天天做夜夜做 | 国产操女人 | 色色色色色色色色色色色色色色 | 亚洲午夜精品在线 | youjizz国产| 色啦啦影院 | 老湿影院免费体验区 | 人人艹在线观看 | 夜夜爱夜夜爽 | 欧美在线91| 久久免 | 国产香蕉在线精彩视频 | 亚洲 欧美 另类 综合 日韩 | 激情五月俺来也 | 日本黄网站高清色大全 | 欧美成人性色区 | 国产亚洲精品激情都市 | 亚洲啪啪免费视频 | 日韩毛片大全 | 久久精品免费视频观看 | 最新天堂网 | 国产综合在线观看 | 一级一级一片免费高清 | 中韩日欧美电影免费看 | 狠狠做深爱婷婷久久一区 | 婷婷天堂 | 男人操女人免费 | 在线欧美色图 | 噜噜色噜噜 | 狠狠色网站 | 欧美黄色免费看 | 欧美成人免费网站 |