女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

I2C總線學習筆記

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

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

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

一、整體介紹

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

在不同的應用架構(gòu)中,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總線在后續(xù)如果有涉及到的時候,再展開進一步學習了。

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

圖片

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

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

圖片

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

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

二、總線速率

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單向

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

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

1、Fast-mode/ Standard-mode

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

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

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

2、Fast-mode Plus

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

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

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

3、High-speed mode

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

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

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

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

(5)Hs-mode controller可以在內(nèi)部集成一個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集成了施密特觸發(fā)器;

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

圖片

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

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

4、Ultra Fast-mode

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

圖片

三、BIT/BYTE

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

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

圖片

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

圖片

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

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

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

圖片

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

圖片

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

圖片

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

圖片

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

1、Controller-transmitter發(fā)送數(shù)據(jù)給targer-receiver。數(shù)據(jù)傳輸?shù)姆较虿恍枰兓瑃arget-receiver在接收到每個byte時需要反饋ACK。

圖片

2、Controller讀取target的數(shù)據(jù),先由controller-tranmitter發(fā)送地址和讀位,當target-receiver反饋ACK后,隨即調(diào)整方向。controller-tranmitter變?yōu)閏ontroller-receiver,target-receiver變?yōu)閠arget-tranmitter。第一個ACK信號由target在接收到地址后產(chǎn)生,后續(xù)的ACK均由controller產(chǎn)生。STOP condition(P)是在controller發(fā)出一個not-acknowledge(NACK)后,由controller發(fā)出STOP condition(P)。

圖片

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

圖片

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

第一個byte規(guī)定為1111 0XXR/W

第二個byte則定為XXXX XXXX

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

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

圖片

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

圖片

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

圖片

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

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

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

圖片

圖片

圖片

圖片

2、Hs-mode設備約束

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

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

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

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

圖片

圖片

圖片

圖片

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

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

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

    關(guān)注

    33

    文章

    8924

    瀏覽量

    153153
  • I2C總線
    +關(guān)注

    關(guān)注

    8

    文章

    408

    瀏覽量

    61884
  • 總線協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    128

    瀏覽量

    15163
  • SDA
    SDA
    +關(guān)注

    關(guān)注

    0

    文章

    125

    瀏覽量

    28683
  • SCL
    SCL
    +關(guān)注

    關(guān)注

    1

    文章

    242

    瀏覽量

    17450
收藏 人收藏

    評論

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

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

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

    I2C總線復用

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

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

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

    I2C總線的優(yōu)缺點分析

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

    I2C總線與Arduino的接口示例

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

    I2C總線的工作模式介紹

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

    I2C總線協(xié)議詳細解析

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

    I2C總線故障排除技巧

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

    I2C總線與單片機的連接

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

    I2C總線應用實例分析

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

    I2C總線與SPI總線的比較

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

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

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

    了解I2C總線

    電子發(fā)燒友網(wǎng)站提供《了解I2C總線.pdf》資料免費下載
    發(fā)表于 10-08 11:13 ?2次下載
    了解<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>