新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 為什么I2C總線會難住這么多人?

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

        作者: 時間:2025-05-06 來源:硬件筆記本 收藏

        中很常見,但最近在一個群(可能是初學者群)交流的信息,讓我比較吃驚,很多人連基本的知識都不清楚。今天就來給大家講講的時序。

        本文引用地址:http://www.104case.com/article/202505/470076.htm


        很多電子工程師都應該從 EEPROM 通信了解到的I2C總線,其實,I2C總線遠不止于 EEPROM 存儲器,它也有類似485、SPI等應用場景。


        EEPROM存儲器系統架構圖


        位傳輸

        I2C總線是由飛利浦(Philips)公司開發的一種雙向二線制同步串行總線,實現有效的IC間的控制,它只需要兩根線(SDA和SCL)即可在連接于總線上的器件之間傳送信息。


        I2C總線在傳輸數據都是按照bit來傳送。SCL為時鐘線,SDA為數據線;在SCL時鐘線為高電平時,SDA數據線上的電平不允許被修改,SCL時鐘線為低電平時,SDA數據線上的電平可為高/低。


        I2C總線的位傳輸


        起始條件:SCL為高電平時,SDA由高電平向低電平切換;表示開始傳送數據。


        停止條件:SCL為高電平時,SDA由低電平向高電平跳變;表示結束傳送數據。


        空閑條件:I2C總線的SDA和SCL兩條信號線同時處于高電平時;表示空閑狀態。


        起始和停止條件

        數據傳輸


        字節傳輸

        發送數據時,由主機先發送一個起始信號,再將SDA信號切換為輸出模式,然后將8位數據依次由高到低發送出去;


        發送完成后,主機將SDA信號切換為輸入模式,等待叢機回應ACK或NAK;再發下一筆數據


        I2C總線數據傳輸


        叢機地址

        在I2C總線系統中,每個設備都有它的固定地址,一般由芯片的A0,A1和A2決定。叢機地址字節由七位地址位(D7-D1位)和一位方向位(為D0位)組成。


        器件地址的D7-D4一般都是被廠家固定了為1111,余下的D3,D2和D1連接到芯片的A2,A1和A0決定;D0為0x00表示寫,D0為0x01表示讀。大家看例程都是些0xA0和0xA1就是這個原因。


        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總線停止信號,確保總線處于空閑狀態


        主機讀/寫數據過程


        結語

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


        筆者根據自身多年的工作經驗,記錄下了我對它的理解,如果有寫的不對,希望大家能多多指出,今天的I2C總線就先寫到這里,希望對大家有幫助。




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 梓潼县| 盐边县| 建水县| 南通市| 抚松县| 栾城县| 邻水| 盐池县| 龙泉市| 阳新县| 玉屏| 宝坻区| 西吉县| 昌吉市| 常山县| 汤原县| 厦门市| 敖汉旗| 屏东县| 潮州市| 云安县| 嘉荫县| 聂拉木县| 宝丰县| 阿克| 平顶山市| 卢氏县| 崇礼县| 聊城市| 嘉黎县| 武义县| 普定县| 五台县| 扶沟县| 克拉玛依市| 钟山县| 得荣县| 旬阳县| 阜康市| 民和| 外汇|