精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

I2C通信的詳細講解

汽車玩家 ? 來源:csdn 陶通寧 ? 作者:csdn 陶通寧 ? 2021-06-25 17:19 ? 次閱讀
1. 物理接口: SCL + SDA

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

(2)SDA(serial data):數據線,通信數據都通過SDA線傳輸

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

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

(2)同步通信就是通信雙方工作在同一個時鐘下,一般 通信的A方通過一根CLK信號線傳輸A自己的時鐘給B,B工作在A傳輸的時鐘下。所以同步通信的顯著特征就是:通信線中有CLK。

(3)非差分。因為I2C通信速率不高,而且通信雙方距離很近,對干擾不敏感,所以使用電平信號通信。

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

3. 突出特征1:主設備+從設備

(1)I2C通信的時候,通信雙方地位是不對等的,而是分主設備和從設備。通信由主設備發起,由主設備主導,從設備只是按照I2C協議被動的接受主設備的通信,并及時響應。

(2)誰是主設備、誰是從設備是由通信雙方來定的(I2C協議并無規定),一般來說一個芯片可以只能做主設備、也可以只能做從設備、也可以既能當主設備又能當從設備。(像一些傳感器芯片設計的時候只能做從設備,有的芯片本身既可以當主設備又可以當從設備,通過軟件來配置是主設備還是從設備)

4. 突出特征2:

(1)I2C通信可以一對一(一個主設備對1個從設備),也可以一對多(一個主設備對多個從設備)

(2)主設備負責調度總線,決定某一時間和哪個從設備通信。注意:同一時間內,I2C的總線上只能傳輸一對設備的通信信息,所以同一時間只能有一個從設備和主設備通信,其他從設備處于“冬眠”。不能出來搗亂,否則通信就亂套了。

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

5. I2C的通信時序

(1)什么是時序?

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

(2)I2C的總線空心狀態、起始位、結束位

總線的意思就是SCL與SDA加起來就叫做總線。

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

怎么區分總線處于空閑態,SDA、SCL在通信的過程中也可能同時為高電平,但是,如果SDA、SCL如果連續多個周期同時處于高電平,則總線一定處于空閑態。

整個通信分為一個周期一個周期的,兩個相鄰的通信周期是空閑態。每一個通信周期由一個起始位開始,一個結束位結束,中間是本周期的通信數據。

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

停止位:與起始位相似,結束位也是一個時間段。在這段時間內總線狀態變化情況是:SCL先維持高電平,同時SDA線發生一個從低電平到高的上升沿。

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

CLK上升沿鎖存數據,CLK上升沿到來前SDA要提前準備好數據。

A是應答信號,從設備的應答是為了讓主設備知道自己已經接收到了主設備的信息。相應的主設備的應答也是如此。

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

(1)每一個通信周期的發起和結束都是由主設備來做的,從設備只有被動的響應主設備,沒法自己自發的去做任何事情。

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

(3)發送方發送一段數據后,接收方需要回應一個ACK。這個響應本身只有1個bit位,不能攜帶有效信息,只能表示2個意思(要么表示收到數據,即有效響應;要么表示未收到數據,無效響應),需要注意的是,到第九個周期的時候,主設備會釋放SDA,即讓其變為高電平,從設備會主動來拉低SDA,主設備會讀取此時的SDA,若讀取此時的SDA為則表示從設備已經收到剛剛發送的信息,若讀取此時的SDA為則表示從設備沒有收到剛剛發送的信息。

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

7. 數據在總線上的傳輸協議

(1)I2C通信時的基本數據單位也是以字節為單位的,每次傳輸的有效數據都是1個字節(8位)。

(2)起始位及其后的8個clk中都是主設備在發送(主設備掌控總線),此時從設備只能讀取總線,通過讀總線來得知主設備發給從設備的信息;然后到了第9個周期,按照協議規定從設備需要發送ACK給主設備,所以此時主設備必須釋放總線(主設備把總線置為高電平然后不要動,其實就類似于總線空閑狀態),同時從設備試圖拉低總線發出ACK。如果從設備拉低總線失敗,或者從設備根本就沒有拉低總線,則主設備看到的現象就是總線在第9周期仍然一直保持高,這對主設備來說,意味著我沒有收到ACK,主設備就認為剛才給從設備發送的8字節不對(接收失敗)。

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

8. I2C控制器

通信雙方本質上是通過時序在工作,但是時序會比較復雜不利于Soc軟件完成,于是乎解決方案是soc內部內置了硬件的控制器來產生通信時序。這樣我們寫軟件時只需要向控制器的寄存器中寫入配置值即可,控制器會產生適當的時序在通信線上和對方通信。

(1)時鐘部分,時鐘來源是PCLK_PSYS,經過內部分頻最終得到I2C控制器的CLK,通信中這個CLK會通過SCL線傳給從設備。

(2)I2C總線控制邏輯(前臺代表是I2CCON、I2CSTAT這兩個寄存器),主要負責產生I2C通信時序。實際編程中要發送起始位、停止位、接收ACK等都是通過這兩個寄存器(背后所代表的電路模塊)實現的。

(3)移位寄存器(shift register),將代碼中要發送的字節數據,通過移位寄存器變成1個位一個位的丟給SDA線上去發送/接收。

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

文章來源:

編輯:ymf

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

    關注

    2548

    文章

    50664

    瀏覽量

    751942
  • 傳感器芯片
    +關注

    關注

    6

    文章

    205

    瀏覽量

    23779
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1481

    瀏覽量

    123279
  • SDA
    SDA
    +關注

    關注

    0

    文章

    124

    瀏覽量

    28115
  • CLK
    CLK
    +關注

    關注

    0

    文章

    127

    瀏覽量

    17125
收藏 人收藏

    評論

    相關推薦

    I2C通信開發障礙以及總結

    本文主要講解的是I2C開發過程中會遇到的坑以及I2C的個人總結經驗,很實用,可以i幫助開發人員更好的理解I2C調試。
    的頭像 發表于 04-17 16:35 ?1357次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>通信</b>開發障礙以及總結

    I2C通信介紹及軟測方法

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

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

    I2C總線是由Philips公司開發的一種簡單、雙向二線制同步串行總線。它只需要兩根線即可在連接于總線上的器件之間傳送信息。
    發表于 07-27 14:23 ?1413次閱讀
    <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'>詳細</b><b class='flag-5'>講解</b>

    labview與i2c通信的編程問題

    labview與i2c通信的編程問題,適合新手看看
    發表于 12-09 15:49 ?205次下載

    STM32F2通信接口I2C

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

    詳細說明了I2C庫文件的使用,對于理解I2C有幫助

    詳細說明了I2C庫文件的使用,對于理解I2C有幫助
    發表于 10-13 10:02 ?28次下載

    詳細講解RT-Thread I2C設備驅動框架及相關函數

    本應用筆記以驅動I2C接口的6軸傳感器MPU6050為例,說明了如何使用I2C設備驅動接口開發應用程序,并詳細講解了RT-Thread I2C
    的頭像 發表于 03-29 10:52 ?2w次閱讀
    <b class='flag-5'>詳細</b><b class='flag-5'>講解</b>RT-Thread <b class='flag-5'>I2C</b>設備驅動框架及相關函數

    TILM27965雙顯示I2C的白光LED驅動器兼容的亮度控制詳細講解

    TI的產品 LM27965雙顯示I2C的白光LED驅動器兼容的亮度控制詳細講解資料全文請下載查看
    發表于 04-09 11:08 ?0次下載
    TILM27965雙顯示<b class='flag-5'>I2C</b>的白光LED驅動器兼容的亮度控制<b class='flag-5'>詳細</b><b class='flag-5'>講解</b>

    i2c通信詳細講解

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

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

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

    I2C總線的基本通信總結

    在電子設計開發中I2C大家已經很熟悉了,每一種電子產品小到電子開關,大到衛星通信都會利用的I2C總線。據統計I2C在電子產品中占據了93%的份額,幾乎任何一種電路都要使用。
    的頭像 發表于 08-26 14:08 ?1.8w次閱讀
    <b class='flag-5'>I2C</b>總線的基本<b class='flag-5'>通信</b>總結

    硬件I2C與模擬I2C

    硬件I2C對應芯片上的I2C外設,有相應I2C驅動電路,其所使用的I2C管腳也是專用的,因而效率要遠高于軟件模擬的I2C;一般也較為穩定,但
    發表于 12-28 19:14 ?81次下載
    硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    基于單片機的I2C總線與AT24C01實驗 I2C總線通信原理講解

    PROM 存儲器件 AT24C01 以及 AD/DA 器件 PCF8951,這章內容主要講解 I2C 總線通信工作原理并結合 AT24C01
    的頭像 發表于 07-27 16:51 ?3382次閱讀
    基于單片機的<b class='flag-5'>I2C</b>總線與AT24<b class='flag-5'>C</b>01實驗 <b class='flag-5'>I2C</b>總線<b class='flag-5'>通信</b>原理<b class='flag-5'>講解</b>

    i2c采樣是上升沿嗎?

    數據。在本文中,我們將詳細討論I2C采樣的工作原理,采樣時機以及如何進行I2C采樣。 I2C采樣的原理 I2C采樣是基于
    的頭像 發表于 09-19 17:16 ?2546次閱讀

    簡單認識I2C通信協議

    I2C(Inter-Integrated Circuit)通信協議是由飛利浦公司(現為恩智浦半導體)開發的一種簡單、雙向二線制同步串行總線協議。自1982年發布以來,I2C協議因其高效、靈活和易于實現的特點,在電子設備間的數據交
    的頭像 發表于 07-25 18:06 ?1300次閱讀