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

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

3天內不再提示

為什么I2C總線會難住這么多人?

哈哈hfgfdf ? 來源:嵌入式學習資料 ? 作者:嵌入式學習資料 ? 2024-03-28 17:29 ? 次閱讀

I2C總線在嵌入式系統中很常見,但最近在一個群(可能是初學者群)交流的信息,讓我比較吃驚,很多人連I2C總線基本的知識都不清楚。今天就來給大家講講I2C總線的時序。 很多電子工程師都應該從 EEPROM通信了解到的I2C總線,其實,I2C總線遠不止于EEPROM存儲器,它也有類似485、SPI等應用場景。

04636c38-cf89-11ee-b759-92fbcf53809c.png

EEPROM存儲器系統架構圖

位傳輸

I2C總線是由飛利浦(Philips)公司開發的一種雙向二線制同步串行總線,實現有效的IC間的控制,它只需要兩根線(SDA和SCL)即可在連接于總線上的器件之間傳送信息。 I2C總線在傳輸數據都是按照bit來傳送。SCL為時鐘線,SDA為數據線;在SCL時鐘線為高電平時,SDA數據線上的電平不允許被修改,SCL時鐘線為低電平時,SDA數據線上的電平可為高/低。

0478f65c-cf89-11ee-b759-92fbcf53809c.jpg

I2C總線的位傳輸 起始條件:SCL為高電平時,SDA由高電平向低電平切換;表示開始傳送數據。 停止條件:SCL為高電平時,SDA由低電平向高電平跳變;表示結束傳送數據。 空閑條件:I2C總線的SDA和SCL兩條信號線同時處于高電平時;表示空閑狀態。

0487f7d8-cf89-11ee-b759-92fbcf53809c.png

?起始和停止條件 ?

數據傳輸

字節傳輸

發送數據時,由主機先發送一個起始信號,再將SDA信號切換為輸出模式,然后將8位數據依次由高到低發送出去; 發送完成后,主機將SDA信號切換為輸入模式,等待叢機回應ACK或NAK;再發下一筆數據

0496d6b8-cf89-11ee-b759-92fbcf53809c.png

I2C總線數據傳輸 叢機地址在I2C總線系統中,每個設備都有它的固定地址,一般由芯片的A0,A1和A2決定。叢機地址字節由七位地址位(D7-D1位)和一位方向位(為D0位)組成。 器件地址的D7-D4一般都是被廠家固定了為1111,余下的D3,D2和D1連接到芯片的A2,A1和A0決定;D0為0x00表示寫,D0為0x01表示讀。大家看例程都是些0xA0和0xA1就是這個原因。

04a674f6-cf89-11ee-b759-92fbcf53809c.png

EEPROM的器件地址

讀寫過程

1.寫數據過程1.主機發送I2C總線停止信號,防止總線忙寫數據失敗 2.主機發送I2C總線復位信號,確保寫數據之前總線處于空閑狀態 3.主機發送I2C總線開始信號,啟動一次數據的寫入 4.主機發送I2C叢機地址和寫模式(W/R=0)信號,并且等待一個叢機的應答信號 5.主機接收到ACK的應答信號后,開始多個字節的寫入,每寫完一個字節需要等待一個叢機的應答信號 6.主機接收到ACK的應答信號后,發送2IC總線停止信號,確??偩€處于空閑狀態 2.讀數據過程1.主機發送I2C總線停止信號,防止總線忙寫數據失敗 2.主機發送I2C總線復位信號,確保讀數據之前總線處于空閑狀態 3.主機發送I2C總線開始信號,啟動一次數據讀取 4.主機發送I2C叢機地址和讀模式(W/R=1)信號,并且等待一個叢機的應答信號 5.主機接收到ACK的應答信號后,開始多個字節的讀取,每讀完一個字節需要給叢機發送一個ACK應答信號 6.主機接收到ACK的應答信號后,發送I2C總線停止信號,確??偩€處于空閑狀態

04b1d3d2-cf89-11ee-b759-92fbcf53809c.jpg

主機讀/寫數據過程

結語

I2C總線在嵌入式應用中非常廣泛,基本上所有的電力電子設備都會用到這個總線;

審核編輯 黃宇

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

    關注

    38

    文章

    7212

    瀏覽量

    162393
  • 存儲
    +關注

    關注

    12

    文章

    3905

    瀏覽量

    84832
  • EEPROM
    +關注

    關注

    9

    文章

    930

    瀏覽量

    80623
  • SCL
    SCL
    +關注

    關注

    1

    文章

    239

    瀏覽量

    16897
  • I2C總線
    +關注

    關注

    0

    文章

    14

    瀏覽量

    2108
收藏 人收藏

    評論

    相關推薦

    最簡單的總線通訊!I2C通訊總線的原理原來這么好懂

    通訊I2C
    安泰儀器維修
    發布于 :2024年01月02日 11:16:31

    I2C規范,I2C總線原理

    I2C規范,I2C總線原理1 序言
    發表于 04-09 18:34

    看了這么多論壇 還是這個論壇好啊...

    其他的論壇沒有這么多人,沒有這么快的更新.... 你們覺得呢?
    發表于 04-17 10:52

    看到這個論壇這么多人,非常想和大家交流,多多關照

    看到這個論壇這么多人,非常想和大家交流,多多關照
    發表于 11-26 15:25

    FPGA中I2C 總線解析 I2C 總線是什么

    在現代電子系統中,有為數眾多的 IC 需要進行相互之間以及與外界的通信。為了簡化電路的設計,Philips 公司開發了一種用于內部 IC 控制的簡單的雙向兩線串行總線 I2C
    發表于 09-29 09:37

    請問差分線拐這么多次對信號影響大嗎?

    差分線拐這么多次對信號影響大嗎????
    發表于 06-12 21:19

    為什么roll一上電就飄了這么多?

    放在水平位置上校準之后pitch還是挺準的,roll一上電就飄了這么多,為什么??
    發表于 07-04 04:35

    什么是VBA?為什么這么多軟件支持VBA?

    什么是VBA?什么是VBS?二者有什么不同?為什么這么多軟件支持VBA?
    發表于 07-02 06:35

    怎么記住這么多代碼格式?

    我記得剛開始接觸編程的時候,覺得太難了。也很好奇,寫代碼的那些人也太厲害了吧?全是英文的,他們的英文水平一定很好吧?他們是怎么記住這么多代碼格式的?而且錯了一個標點符號,整個程序都會有影響。一個程序
    發表于 07-15 08:56

    I2C總線是什么

    I2C總線I2C總線(讀做“IC”或“I2C
    發表于 07-21 09:03

    為什么要搞這么多架構

    問題:為什么要搞這么多架構?webrtc雖然是一項主要使用p2p的實時通訊技術,本應該是無中心化節點的,但是在一些大型多人通訊場景,如果都使用端對端直連,端上會遇到很帶寬和性能的問題,所以就有了下圖
    發表于 10-29 06:05

    為什么有這么多編程語言呢

    關注+星標公眾號,不錯過精彩內容編排|strongerHuang微信公眾號 |嵌入式專欄有很多初學者都會問:我到底是該學C語言,還是學C++,或者JAVA呢?為什么有這么多編程語言呢...
    發表于 01-12 06:34

    I2C總線的原理是什么

    采用串行總線技術可以大大簡化硬件的設計,體積減少,可靠性高。常見的總線,I2C(inter IC bus),單總線,SPI總線。
    發表于 01-18 07:36

    安卓8.0最新消息:安卓8.0初體驗,竟然這么流暢還有這么多黑科技功能

    安卓8.0初體驗,竟然這么流暢還有這么多黑科技功能
    發表于 04-13 09:00 ?3581次閱讀

    小墊圈,里面還有這么多名堂……

    小墊圈,里面還有這么多名堂……
    的頭像 發表于 07-02 11:40 ?2435次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>