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

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

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

3天內不再提示

什么是IIC協議

汽車電子技術 ? 來源:嵌入式之入坑筆記 ? 作者:嵌入式之入坑筆記 ? 2023-02-10 10:53 ? 次閱讀

1、IIC協議的誕生

IIC協議最早1982年由飛利浦公司設計開發,是一種兩線制(SDA + SCL)的串行通行方式,提供了主從機之間通行的一種方案,在今天也是被廣泛的應用在很多的產品設備上。

    一個使用IIC協議進行通信的設備,它既可以作為主機又可以作為從機(支持多主多從),并且它是一種半雙工的通信方式。

IIC可以支持的通信速率范圍較大,可以很好的滿足多種設備的不同的通信速度的要求,它支持的速率有如下幾個:

1)普通模式(100kHz即100kbps)

2)快速模式(Fm)(400kHz)

3)快速模式+(Fs+)(1MHz)

4)高速模式(Hs)(3.4MHz)

5)超高速模式(UFm)(5MHz)

2、IIC總線的術語說明

圖片

3、SDL 線和 SCL線

IIC設備有兩條接口線:串行數據 SDA 線和串行時鐘 SCL 線。

    連接到IIC總線上的設備通過這兩根線互相傳遞信息,SDA 和 SCL 都是雙向線,可以互相之間進行信息的交互,但是是一種同步半雙工的通信方式,同一時刻只能有一個方向進行數據的操作,不能同時進行。

IIC設備上的兩根通信線一般示意如下:

圖片

4、IIC總線協議

圖片

4.1、IIC總線的起始信號

IIC總線發送啟動信號的時序如圖:

圖片

發送啟動信號時,時鐘線SCL需要穩定的保持在高電位,SDA由高電位變化為低電位。啟動信號發送完成之后就可以進行數據的發送了。

    如果在一次通信過程中,有兩臺以上的設備同時發出了起始信號,都希望獲得總線控制權的話,那么第一個發出起始信號的設備將獲得總線控制權,作為主設備開始傳輸數據。

注意:起始信號由主機負責產生。

4.2、停止信號

IIC總線發送停止信號的時序如圖:

圖片

停止信號是在時鐘線SCL為高電位的時候,數據線SDA由低電平變化為高電平。停止信號一般是在通信完成之后或者通信失敗退出之后發送的。

注意:停止信號由主機負責產生。

4.3、數據傳輸與有效性

IIC數據傳輸的協議如下:

圖片

數據的傳輸是在發送完成了啟動信號之后便可以進行數據的傳輸了。

    IIC協議要求在時鐘信號SCL為高電位的期間,數據線SDA上的數據要保持穩定,不能發生變化(上圖中1的位置)。只有在時鐘信號SCL電位變低的時候,數據線SDA上的電平狀態才能發生跳變。

    每一個數據的bit位傳輸需要一個時鐘脈沖,一次傳輸最多是8bit。

一個完整的傳輸過程的通信時序如圖:

圖片

通信開始時,最開始發送的都是地址幀。比如,一個7Bit的地址,首先發出的是最高位,即讀寫位(1-讀,0-寫),用于指示是讀操作還是寫操作。

     幀的第9位是 **應答位(ACK/NACK)** 。所有幀(數據或地址)都是一樣的。一旦發送幀的前8位,接收設備就可以控制數據線SDA。如果接收設備在第9個時鐘脈沖沒有將SDA線拉低進行應答,則可能是接收設備沒有接收到數據,或者出現錯誤。在這種情況下,主機需要決定該做什么樣的處理(一般考慮重發或者退出)。

    注意:SCL時鐘信號由主機負責產生。數據的發送是高位先發的!

4.4、總線的仲裁

IIC總線支持多個主機同時在總線上發送數據,但是同一時刻只能有一個主機傳送數據。因此必須要通過某些手段來決定哪個主機獲得總線的控制權,其它的沒有獲得主機控制權的設備就只能進行等待,直到獲得總線控制權才能進行數據的傳輸。

    IIC總線仲裁的方式有兩種:時鐘同步、仲裁。

4.4.1、時鐘同步

時鐘同步是通過時鐘線SCL來實現的。在時鐘信號SCL由高到低的切換過程中,IIC器件會開始數自身的低電平周期。當主器件的時鐘信號變為低電平的時候,它會使SCL線保持這個電平狀態直到達到高電平。假如這個時候有另外一個器件的時鐘依然是處于低電平的周期,這個時鐘的低到高的變化不會改變SCL線的狀態。

    因此,SCL線被有著最長的低電平周期的器件占有總線的控制權,而這個時候低電平周期短的器件會進入高電平的等待狀態,直到當前的主器件釋放總線控制權,自身能夠獲得總線控制權才會改變這些狀態。

時鐘同步的時序示意圖如下:

圖片

4.4.2、仲裁

仲裁和同步一樣,都是為了解決多主機情況下的總線控制沖突。仲裁的過程與從機無關。

    只有在總線空閑的時候主機才可以啟動傳輸。兩個主機可能在比較短的時間內在總線上同時產生一個有效的起始信號,這種情況下需要仲裁來決定由哪個主機占有總線控制權來完成數據傳輸。

    仲裁是逐位進行,在每一位數據的仲裁期間,當時鐘線SCL為高電平時,每個主機都檢查數據總線SDA上的電平是否和自己要發送的相同。

    這個過程需要持續很多位。理論上講,如果兩個主機所傳輸的內容完全相同,那么他們能夠成功傳輸而不出現錯誤。但是,如果一個主機發送高電平但檢測到SDA總線上的電平為低時,則認為自己仲裁失敗并關閉自己的SDA數據線上的數據傳輸,而另一個主機則繼續完成自己的傳輸。

IIC總線仲裁的時序示意圖如下:

圖片

5、IIC通信的流程

每個I2C設備都通過唯一的器件地址進行識別,根據設備功能,他們既可以是發送器也可作為接收器。通信的流程如下:

    1)IIC從機檢測到IIC總線上的起始信號之后,就開始從總線上接收地址,之后會把從總線接收到的地址和自身的器件地址(通過軟件編程)進行比較,一旦兩個地址相同,IIC從機將發送一個確認應答(ACK),并響應總線的后續命令;

    2)發送或接收數據;

    3)發送或接收完成之后,在收到應答信號ACK之后結束數據的傳輸。

此外,如果軟件開啟了廣播呼叫,則IIC從機始終對一個廣播地址 (0x00)發送確認應答。I2C模塊始終支持7位和10位的地址。

5.1、有關地址幀的發送

7 位地址的 IIC 通訊流程

圖片

7Bit地址的通信中,開始信號之后的第一幀是地址幀+讀寫位,剛好是8Bit的數據,直接發送,等待從設備應答之后便可以進行數據的通信。

10 位地址的 IIC 通訊流程(主機發送)

圖片

對于10-bit地的址設備,需要使用兩個幀來傳輸10Bit的slave地址。

    第一個幀的前5bit固定為b11110xx,后接slave地址的高2位,第8位仍然是讀寫(R/W)位,接著是一個ACK位,由于總線上可能有多個10 Bit 從設備地址的高2bit相同,因此這個ACK可能由多有slave設備返回。

    第二個幀緊接著第一幀發送,包含slave地址的低8位(7:0),接著該地址的slave回復一個ACK(或NACK)。

    注意:10-bit地址的設備和7-bit地址的設備在總線中是可以并存的,因為7-bit地址的高5位不可能是b11110。

10 位地址的 I2C 通訊流程(主機接收)

圖片

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

    關注

    0

    文章

    124

    瀏覽量

    28137
  • SCL
    SCL
    +關注

    關注

    1

    文章

    239

    瀏覽量

    17083
  • IIC協議
    +關注

    關注

    0

    文章

    16

    瀏覽量

    3931
  • 串行通行
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1113
收藏 人收藏

    評論

    相關推薦

    FPGA實現IIC協議的設計

    今天給大家帶來的是IIC通信,IIC協議應用非常廣泛,例如與MPU6050進行通信,配置OV5640攝像頭、驅動OLED屏幕等等,都需要使用到IIC
    的頭像 發表于 03-04 10:49 ?1268次閱讀
    FPGA實現<b class='flag-5'>IIC</b><b class='flag-5'>協議</b>的設計

    IIC協議顯示屏

    我現有國外產品,他的顯示是通過IIC協議發送到128*64的顯示評上的,我怎么才能把傳送來的數據提取出來呢如果有大牛可以解決,愿意有償合作。電話:***
    發表于 03-15 10:45

    STM32的IIC協議

    今天在使用STM32讀取6050數據時發現了一個問題,為什么戰艦,野火的視頻中都使用模擬的IIC協議,而不使用自動的IIC協議???經過多方查詢了解到STM32為了規避飛利浦專利的問題
    發表于 11-20 22:09

    關于IIC協議

    IIC協議在開始信號產生后,發送了一個數據也產生了應答,如果沒有結束信號又直接開始信號這樣可以嗎?
    發表于 04-07 13:34

    IIC協議分析

    IIC協議分析
    發表于 04-30 15:49

    STM32的IIC協議簡介

    文章目錄(一)IIC協議簡介(二)物理層和協議層簡介(三)IIC物理層:3.1、物理層的特點(四)IIC
    發表于 01-05 06:13

    IIC協議的相關資料推薦

    STM32 IIC實驗講解,從入門到放棄。文章目錄STM32 IIC實驗講解,從入門到放棄。前言一、IICIIC是什么?IIC協議二、代碼部分IIC
    發表于 01-17 08:12

    FPGA IIC協議的相關資料分享

    FPGA IIC協議
    發表于 01-18 07:51

    起始信號和停止信號在IIC協議中是如何規定的

    什么是IIC協議?起始信號和停止信號在IIC協議中是如何規定的?
    發表于 01-24 06:54

    IIC協議軟件模擬方法

    關于iic協議和對AT24C16進行讀寫數據的代碼解讀認識IIC協議IIC協議軟件模擬方法功能快
    發表于 02-09 07:00

    IIC協議的相關資料下載

    關于MPU6050學習的一些總結之二IIC協議前言一、IIC總線前言在查閱并了解了MPU6050的芯片手冊后,已經對MPU6050有了大致的了解。那么接下來如何使MPU6050工作并且讀取內部寄存器
    發表于 02-10 06:02

    IIC協議是如何進行通信的呢

    IIC協議是什么?IIC協議用來干什么?IIC協議是如何進行通信的呢?
    發表于 02-10 07:07

    如何使用代碼實現的IIC協議

    1. 綜述  由上篇博客可知道IIC協議如何用代碼實現,本篇博客就不涉及協議內容,只講解如何使用。  本次的實驗傳感為:DS3231(時鐘模塊),對于時鐘模塊的具體信息我也就不多介紹,大家可以自行度
    發表于 02-21 06:36

    IIC協議超詳細解釋(適合小白入門)

    以下內容,將解釋以下幾個問題1.IIC協議是什么?2.IIC協議用來干什么?3.IIC協議的通信
    發表于 12-07 14:21 ?5次下載
    <b class='flag-5'>IIC</b><b class='flag-5'>協議</b>超詳細解釋(適合小白入門)

    MSP430F5529軟件模擬IIC協議

    MSP430F5529軟件模擬IIC協議
    發表于 11-24 16:35 ?0次下載
    主站蜘蛛池模板: 天天色天天摸| 日韩怡红院| 免费黄色毛片| 男女午夜特黄毛片免费| 亚洲成网站| 亚洲欧美高清在线| 四虎最新影院| 成人一二| 奇米影视四色7777| 欧美另类亚洲一区二区| 免费在线观看你懂的| 天天干天天爽| 男人的午夜影院| 久久综合97色综合网| tv天堂| 免费一级毛片在线播放 | 国产精品1区2区3区| 黄色在线看网站| 色婷婷综合和线在线| 闲人综合| 插白浆| 九九热在线免费视频| 色狠狠网| www.狠狠操.com| 97se狠狠狠狠狼亚洲综合网| 永久免费看mv网站入口| 欧美色视频网| 亚色在线| 日本不卡一| 狠狠色丁香久久综合网| 手机在线看片福利| 在线观看日本一区| 我想看三级特黄| 国产亚洲3p无码一区二区| 在线网站黄| 亚洲第一成人影院| 亚洲夜夜爱| 中文字幕一二三四区2021| 免看乌克兰a一级| 大喷水吹潮magnet| 日本免费黄色网|