99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

I2C通信的詳細(xì)講解

汽車玩家 ? 來(lái)源:csdn 陶通寧 ? 作者:csdn 陶通寧 ? 2021-06-25 17:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 物理接口: SCL + SDA

(1)SCL(serial clock):時(shí)鐘線,傳輸CLK信號(hào),一般是I2C主設(shè)備向從設(shè)備提供時(shí)鐘的通道。

(2)SDA(serial data):數(shù)據(jù)線,通信數(shù)據(jù)都通過(guò)SDA線傳輸

2. 通信特征:串行、同步、非差分、低速率

(1)I2C屬于串行通信,所有的數(shù)據(jù)以位為單位在SDA線上串行傳輸。

(2)同步通信就是通信雙方工作在同一個(gè)時(shí)鐘下,一般 通信的A方通過(guò)一根CLK信號(hào)線傳輸A自己的時(shí)鐘給B,B工作在A傳輸?shù)臅r(shí)鐘下。所以同步通信的顯著特征就是:通信線中有CLK。

(3)非差分。因?yàn)镮2C通信速率不高,而且通信雙方距離很近,對(duì)干擾不敏感,所以使用電平信號(hào)通信。

(4)低速率。I2C一般是用在同一個(gè)板子上的2個(gè)IC之間的通信,而且用來(lái)傳輸?shù)臄?shù)據(jù)量不大,所以本身通信速率很低(一般幾百KHz,不同的I2C芯片的通信速率可能不同,具體在編程的時(shí)候要看自己所使用的設(shè)備允許的I2C通信最高速率,不能超過(guò)這個(gè)速率)

3. 突出特征1:主設(shè)備+從設(shè)備

(1)I2C通信的時(shí)候,通信雙方地位是不對(duì)等的,而是分主設(shè)備和從設(shè)備。通信由主設(shè)備發(fā)起,由主設(shè)備主導(dǎo),從設(shè)備只是按照I2C協(xié)議被動(dòng)的接受主設(shè)備的通信,并及時(shí)響應(yīng)。

(2)誰(shuí)是主設(shè)備、誰(shuí)是從設(shè)備是由通信雙方來(lái)定的(I2C協(xié)議并無(wú)規(guī)定),一般來(lái)說(shuō)一個(gè)芯片可以只能做主設(shè)備、也可以只能做從設(shè)備、也可以既能當(dāng)主設(shè)備又能當(dāng)從設(shè)備。(像一些傳感器芯片設(shè)計(jì)的時(shí)候只能做從設(shè)備,有的芯片本身既可以當(dāng)主設(shè)備又可以當(dāng)從設(shè)備,通過(guò)軟件來(lái)配置是主設(shè)備還是從設(shè)備)

4. 突出特征2:

(1)I2C通信可以一對(duì)一(一個(gè)主設(shè)備對(duì)1個(gè)從設(shè)備),也可以一對(duì)多(一個(gè)主設(shè)備對(duì)多個(gè)從設(shè)備)

(2)主設(shè)備負(fù)責(zé)調(diào)度總線,決定某一時(shí)間和哪個(gè)從設(shè)備通信。注意:同一時(shí)間內(nèi),I2C的總線上只能傳輸一對(duì)設(shè)備的通信信息,所以同一時(shí)間只能有一個(gè)從設(shè)備和主設(shè)備通信,其他從設(shè)備處于“冬眠”。不能出來(lái)?yè)v亂,否則通信就亂套了。

(3)每一個(gè)I2C從設(shè)備在通信中都有一個(gè)I2C從設(shè)備地址,這個(gè)設(shè)備地址是從設(shè)備本身固有的屬性,然后通信時(shí)主設(shè)備需要知道自己將要通信的那個(gè)從設(shè)備的地址,然后在通信中通過(guò)地址來(lái)甄別是不是自己要找的那個(gè)從設(shè)備。

5. I2C的通信時(shí)序

(1)什么是時(shí)序?

字面意思,時(shí)序就是時(shí)間順序,實(shí)際上在通信中時(shí)序就是通信線上按照時(shí)間順序發(fā)生的電平變化,以及這些變化對(duì)通信的意義就叫時(shí)序。

(2)I2C的總線空心狀態(tài)、起始位、結(jié)束位

總線的意思就是SCL與SDA加起來(lái)就叫做總線。

I2C總線上有1個(gè)主設(shè)備,n(n>=1)個(gè)從設(shè)備。I2C總線上有2種狀態(tài):空閑態(tài)(所有從設(shè)備都未和主設(shè)備通信,此時(shí)總線空閑)和忙態(tài)(其中一個(gè)從設(shè)備在和主設(shè)備通信,此時(shí)總線被這一對(duì)占用,其他從設(shè)備必須歇著)。

怎么區(qū)分總線處于空閑態(tài),SDA、SCL在通信的過(guò)程中也可能同時(shí)為高電平,但是,如果SDA、SCL如果連續(xù)多個(gè)周期同時(shí)處于高電平,則總線一定處于空閑態(tài)。

整個(gè)通信分為一個(gè)周期一個(gè)周期的,兩個(gè)相鄰的通信周期是空閑態(tài)。每一個(gè)通信周期由一個(gè)起始位開始,一個(gè)結(jié)束位結(jié)束,中間是本周期的通信數(shù)據(jù)。

起始位:起始位說(shuō)的不是一個(gè)時(shí)間點(diǎn),而是一個(gè)時(shí)間段,如上圖的t1到t2這個(gè)時(shí)間段,在t1到t2的這個(gè)時(shí)間段內(nèi),SCL一直保持了高電平,SDA由高電平到低電平跳變(下降沿)。接收方在接收到這樣一個(gè)電平變化之后就知道發(fā)送方要開始發(fā)送數(shù)據(jù)了,緊接著下一個(gè)周期就是數(shù)據(jù),

停止位:與起始位相似,結(jié)束位也是一個(gè)時(shí)間段。在這段時(shí)間內(nèi)總線狀態(tài)變化情況是:SCL先維持高電平,同時(shí)SDA線發(fā)生一個(gè)從低電平到高的上升沿。

起始位和停止位中間的就是通信位。

CLK上升沿鎖存數(shù)據(jù),CLK上升沿到來(lái)前SDA要提前準(zhǔn)備好數(shù)據(jù)。

A是應(yīng)答信號(hào),從設(shè)備的應(yīng)答是為了讓主設(shè)備知道自己已經(jīng)接收到了主設(shè)備的信息。相應(yīng)的主設(shè)備的應(yīng)答也是如此。

6. I2C數(shù)據(jù)傳輸格式(數(shù)據(jù)位&ACK)

(1)每一個(gè)通信周期的發(fā)起和結(jié)束都是由主設(shè)備來(lái)做的,從設(shè)備只有被動(dòng)的響應(yīng)主設(shè)備,沒(méi)法自己自發(fā)的去做任何事情。

(2)主設(shè)備在通信周期會(huì)先發(fā)8位的從設(shè)備地址(其實(shí)8位中只有7位是從設(shè)備地址,還有1位表示主設(shè)備下面要寫入還是讀出)到總線(主設(shè)備是以廣播的形式發(fā)送的,只要是總線上的所有從設(shè)備其實(shí)都能收到這個(gè)信息)。然后總線上的每個(gè)從設(shè)備都能收到這個(gè)地址,并且收到地址后和自己的設(shè)備地址比較看是否相等。如果相等說(shuō)明主設(shè)備本次通信 就和給我說(shuō)話,如果不相等說(shuō)明這次通信與我無(wú)關(guān),不用聽了不管了。

(3)發(fā)送方發(fā)送一段數(shù)據(jù)后,接收方需要回應(yīng)一個(gè)ACK。這個(gè)響應(yīng)本身只有1個(gè)bit位,不能攜帶有效信息,只能表示2個(gè)意思(要么表示收到數(shù)據(jù),即有效響應(yīng);要么表示未收到數(shù)據(jù),無(wú)效響應(yīng)),需要注意的是,到第九個(gè)周期的時(shí)候,主設(shè)備會(huì)釋放SDA,即讓其變?yōu)楦唠娖?,從設(shè)備會(huì)主動(dòng)來(lái)拉低SDA,主設(shè)備會(huì)讀取此時(shí)的SDA,若讀取此時(shí)的SDA為則表示從設(shè)備已經(jīng)收到剛剛發(fā)送的信息,若讀取此時(shí)的SDA為則表示從設(shè)備沒(méi)有收到剛剛發(fā)送的信息。

(4)在某一個(gè)通信時(shí)刻,主設(shè)備和從設(shè)備只能有一個(gè)在發(fā)(占用總線,也就是向總線寫),另一個(gè)在收(從總線讀)。如果在某個(gè)時(shí)間主設(shè)備和從設(shè)備都試圖向總線寫那就完蛋了,通信就亂套了。

7. 數(shù)據(jù)在總線上的傳輸協(xié)議

(1)I2C通信時(shí)的基本數(shù)據(jù)單位也是以字節(jié)為單位的,每次傳輸?shù)挠行?shù)據(jù)都是1個(gè)字節(jié)(8位)。

(2)起始位及其后的8個(gè)clk中都是主設(shè)備在發(fā)送(主設(shè)備掌控總線),此時(shí)從設(shè)備只能讀取總線,通過(guò)讀總線來(lái)得知主設(shè)備發(fā)給從設(shè)備的信息;然后到了第9個(gè)周期,按照協(xié)議規(guī)定從設(shè)備需要發(fā)送ACK給主設(shè)備,所以此時(shí)主設(shè)備必須釋放總線(主設(shè)備把總線置為高電平然后不要?jiǎng)樱鋵?shí)就類似于總線空閑狀態(tài)),同時(shí)從設(shè)備試圖拉低總線發(fā)出ACK。如果從設(shè)備拉低總線失敗,或者從設(shè)備根本就沒(méi)有拉低總線,則主設(shè)備看到的現(xiàn)象就是總線在第9周期仍然一直保持高,這對(duì)主設(shè)備來(lái)說(shuō),意味著我沒(méi)有收到ACK,主設(shè)備就認(rèn)為剛才給從設(shè)備發(fā)送的8字節(jié)不對(duì)(接收失?。?/p>

(3)由于I2C的速率很低,完全可以通gpio來(lái)模擬。

8. I2C控制器

通信雙方本質(zhì)上是通過(guò)時(shí)序在工作,但是時(shí)序會(huì)比較復(fù)雜不利于Soc軟件完成,于是乎解決方案是soc內(nèi)部?jī)?nèi)置了硬件的控制器來(lái)產(chǎn)生通信時(shí)序。這樣我們寫軟件時(shí)只需要向控制器的寄存器中寫入配置值即可,控制器會(huì)產(chǎn)生適當(dāng)?shù)臅r(shí)序在通信線上和對(duì)方通信。

(1)時(shí)鐘部分,時(shí)鐘來(lái)源是PCLK_PSYS,經(jīng)過(guò)內(nèi)部分頻最終得到I2C控制器的CLK,通信中這個(gè)CLK會(huì)通過(guò)SCL線傳給從設(shè)備。

(2)I2C總線控制邏輯(前臺(tái)代表是I2CCON、I2CSTAT這兩個(gè)寄存器),主要負(fù)責(zé)產(chǎn)生I2C通信時(shí)序。實(shí)際編程中要發(fā)送起始位、停止位、接收ACK等都是通過(guò)這兩個(gè)寄存器(背后所代表的電路模塊)實(shí)現(xiàn)的。

(3)移位寄存器(shift register),將代碼中要發(fā)送的字節(jié)數(shù)據(jù),通過(guò)移位寄存器變成1個(gè)位一個(gè)位的丟給SDA線上去發(fā)送/接收。

(4)地址寄存器+比較器 本I2C控制器做從設(shè)備的時(shí)候用。

文章來(lái)源:

編輯:ymf

聲明:本文內(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)注

    2565

    文章

    52971

    瀏覽量

    767173
  • 傳感器芯片
    +關(guān)注

    關(guān)注

    6

    文章

    216

    瀏覽量

    24138
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1541

    瀏覽量

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

    關(guān)注

    0

    文章

    125

    瀏覽量

    28818
  • CLK
    CLK
    +關(guān)注

    關(guān)注

    0

    文章

    127

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    I2C通信開發(fā)障礙以及總結(jié)

    本文主要講解的是I2C開發(fā)過(guò)程中會(huì)遇到的坑以及I2C的個(gè)人總結(jié)經(jīng)驗(yàn),很實(shí)用,可以i幫助開發(fā)人員更好的理解I2C調(diào)試。
    的頭像 發(fā)表于 04-17 16:35 ?1764次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>通信</b>開發(fā)障礙以及總結(jié)

    I2C通信介紹及軟測(cè)方法

    本文主要講解I2C通信介紹以及如何使用軟件工具抓取通信波形,幫助開發(fā)人員更好的去理解I2C通信
    的頭像 發(fā)表于 04-17 16:35 ?3458次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>通信</b>介紹及軟測(cè)方法

    i2c總線是什么意思 i2c通信咋樣 i2c通信詳細(xì)講解

    I2C總線是由Philips公司開發(fā)的一種簡(jiǎn)單、雙向二線制同步串行總線。它只需要兩根線即可在連接于總線上的器件之間傳送信息。
    發(fā)表于 07-27 14:23 ?1887次閱讀
    <b class='flag-5'>i2c</b>總線是什么意思 <b class='flag-5'>i2c</b><b class='flag-5'>通信</b>咋樣 <b class='flag-5'>i2c</b><b class='flag-5'>通信</b>的<b class='flag-5'>詳細(xì)</b><b class='flag-5'>講解</b>

    第十八章 I2C通信測(cè)試

    本章介紹了I2C協(xié)議,其物理層用SDA和SCL雙線,支持多設(shè)備:協(xié)議層含起始/停止信號(hào)、應(yīng)答機(jī)制等。還講解W55MH32的I2C外設(shè)及初始化,并進(jìn)行了通信測(cè)試代碼的分析。
    的頭像 發(fā)表于 06-19 17:07 ?538次閱讀
    第十八章 <b class='flag-5'>I2C</b><b class='flag-5'>通信</b>測(cè)試

    labview與i2c通信的編程問(wèn)題

    labview與i2c通信的編程問(wèn)題,適合新手看看
    發(fā)表于 12-09 15:49 ?206次下載

    STM32F2通信接口I2C

    STM32F2通信接口I2C
    發(fā)表于 09-03 11:24 ?31次下載
    STM32F<b class='flag-5'>2</b>—<b class='flag-5'>通信</b>接口<b class='flag-5'>I2C</b>

    詳細(xì)說(shuō)明了I2C庫(kù)文件的使用,對(duì)于理解I2C有幫助

    詳細(xì)說(shuō)明了I2C庫(kù)文件的使用,對(duì)于理解I2C有幫助
    發(fā)表于 10-13 10:02 ?28次下載

    詳細(xì)講解RT-Thread I2C設(shè)備驅(qū)動(dòng)框架及相關(guān)函數(shù)

    本應(yīng)用筆記以驅(qū)動(dòng)I2C接口的6軸傳感器MPU6050為例,說(shuō)明了如何使用I2C設(shè)備驅(qū)動(dòng)接口開發(fā)應(yīng)用程序,并詳細(xì)講解了RT-Thread I2C
    的頭像 發(fā)表于 03-29 10:52 ?2.1w次閱讀
    <b class='flag-5'>詳細(xì)</b><b class='flag-5'>講解</b>RT-Thread <b class='flag-5'>I2C</b>設(shè)備驅(qū)動(dòng)框架及相關(guān)函數(shù)

    TILM27965雙顯示I2C的白光LED驅(qū)動(dòng)器兼容的亮度控制詳細(xì)講解

    TI的產(chǎn)品 LM27965雙顯示I2C的白光LED驅(qū)動(dòng)器兼容的亮度控制詳細(xì)講解資料全文請(qǐng)下載查看
    發(fā)表于 04-09 11:08 ?0次下載
    TILM27965雙顯示<b class='flag-5'>I2C</b>的白光LED驅(qū)動(dòng)器兼容的亮度控制<b class='flag-5'>詳細(xì)</b><b class='flag-5'>講解</b>

    i2c通信詳細(xì)講解

    I2C屬于串行通信,所有的數(shù)據(jù)以位為單位在SDA上串行傳輸
    發(fā)表于 11-24 14:09 ?2w次閱讀
    <b class='flag-5'>i2c</b><b class='flag-5'>通信</b>的<b class='flag-5'>詳細(xì)</b><b class='flag-5'>講解</b>

    干貨:I2C總線最全教程講解

    ? 裸機(jī)操作篇 本文以三星exynos4412為例講解I2C時(shí)序,并掛載在I2C控制器mpu6050陀螺儀的數(shù)據(jù)讀取實(shí)例。通過(guò)本篇文章,讀者可以理解I2C時(shí)序,以及如何基于三星
    的頭像 發(fā)表于 02-20 15:04 ?1.4w次閱讀
    干貨:<b class='flag-5'>I2C</b>總線最全教程<b class='flag-5'>講解</b>

    I2C總線的基本通信總結(jié)

    在電子設(shè)計(jì)開發(fā)中I2C大家已經(jīng)很熟悉了,每一種電子產(chǎn)品小到電子開關(guān),大到衛(wèi)星通信都會(huì)利用的I2C總線。據(jù)統(tǒng)計(jì)I2C在電子產(chǎn)品中占據(jù)了93%的份額,幾乎任何一種電路都要使用。
    的頭像 發(fā)表于 08-26 14:08 ?1.9w次閱讀
    <b class='flag-5'>I2C</b>總線的基本<b class='flag-5'>通信</b>總結(jié)

    硬件I2C與模擬I2C

    硬件I2C對(duì)應(yīng)芯片上的I2C外設(shè),有相應(yīng)I2C驅(qū)動(dòng)電路,其所使用的I2C管腳也是專用的,因而效率要遠(yuǎn)高于軟件模擬的I2C;一般也較為穩(wěn)定,但
    發(fā)表于 12-28 19:14 ?81次下載
    硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    基于單片機(jī)的I2C總線與AT24C01實(shí)驗(yàn) I2C總線通信原理講解

    PROM 存儲(chǔ)器件 AT24C01 以及 AD/DA 器件 PCF8951,這章內(nèi)容主要講解 I2C 總線通信工作原理并結(jié)合 AT24C01
    的頭像 發(fā)表于 07-27 16:51 ?4572次閱讀
    基于單片機(jī)的<b class='flag-5'>I2C</b>總線與AT24<b class='flag-5'>C</b>01實(shí)驗(yàn) <b class='flag-5'>I2C</b>總線<b class='flag-5'>通信</b>原理<b class='flag-5'>講解</b>

    i2c采樣是上升沿嗎?

    數(shù)據(jù)。在本文中,我們將詳細(xì)討論I2C采樣的工作原理,采樣時(shí)機(jī)以及如何進(jìn)行I2C采樣。 I2C采樣的原理 I2C采樣是基于
    的頭像 發(fā)表于 09-19 17:16 ?3681次閱讀