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

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

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

關于I2C協(xié)議介紹

CHANBAEK ? 來源:魚香ROS ? 作者:小魚 ? 2023-07-13 15:04 ? 次閱讀

你好,我是愛吃魚香ROS的小魚。本節(jié)主要介紹I2C協(xié)議,并將其主要特點拎出來和大家說說。

教程所使用硬件平臺為MicroROS學習板V1.0.0,可點擊閱讀原文購買及查看詳情

圖片

網(wǎng)上關于I2C協(xié)議介紹的有很多,但大都非常細致,將高低電平數(shù)據(jù)協(xié)議等等都介紹了,但新手學習時不用關注那么多底層的東西,比起了解通信原理,了解它是什么,怎么用對我們更加重要。

一、I2C是一種總線通訊協(xié)議

和之前我們介紹的串口通信類似,I2C也是一種通信協(xié)議。但它是一種總線通訊協(xié)議,也就是說,一個I2C可以連接多個設備,物理連接上像這樣。

圖片

那它串的設備數(shù)量有沒有上限呢?有的,上限是127個。

那為什么我們都是用18和19來驅(qū)動OLED和MPU6050呢?原因很簡單,他們都是連在同一跟線上。

上原理圖

圖片

ESP32這種引腳資源匱乏的單片機,引腳的復用就顯得很重要了,這里我們就將OLED和MPU6050都接在同一個I2C上,減少引腳占用。

二、I2C是一種兩線協(xié)議

在上幾節(jié)我們驅(qū)動OLED和IMU的時候,都導入了"Wire.h",這個就是Arudino提供的好的頭文件。我們使用的Wire的定義如下

TwoWire Wire = TwoWire(0);

TwoWire也就是兩線的意思,兩線也就是一個是SCL,一個是SDA

SCL即時鐘線,以一個固定的周期進行電平變換,SDA即數(shù)據(jù)線,用于數(shù)據(jù)的傳輸,這樣說有些抽象,小魚用邏輯分析儀 截取了一段OLED初始化時的SCl(GPIO18)和SDA(GPIO19)上的電平變化 ,并分析出其對應的數(shù)據(jù)。

圖片

再放大一些看

圖片

可以直觀的看到SCL在數(shù)據(jù)傳輸開始前一直保持高電平,SDA變成了低電平,這意為著數(shù)據(jù)傳輸?shù)拈_始,也就是那個綠點的地方。

根據(jù)I2C協(xié)議規(guī)定:SCL處于高電平時,SDA由高到低變化,這種信號是起始信號。

繼續(xù)觀察,你會發(fā)現(xiàn),在 傳輸過程中SCL引腳電平在以一個固定的周期來回跳變 ,從機這邊 當檢測到SCL電平跳變后就開始讀取SDA上的的電平,高記為1,低記為0 。所以你可以看到邏輯分析儀檢測到 八個上升箭頭,一共傳輸了八位數(shù)據(jù),這八位數(shù)據(jù)用16進制表示就是0X3C 。

0X3C是什么,就是我們OLED的設備地址,所以這段信號的意思就是,我接下來要給0X3C的設備發(fā)數(shù)據(jù)了,請編號為0X3C的設備準備接收。

這個信號會被0X3C的設備接收和處理,而同一總線上ID非0X3C的接收到數(shù)據(jù)后就會將其扔掉,這就是I2C支持多個設備的核心原因。

在我們的開發(fā)板上,OLED的默認地址為:0X3C,IMU的默認地址為:0x68

附件:OLED初始化時I2C引腳數(shù)據(jù)圖

圖片

從該表可以看出,數(shù)據(jù)從905ms開始,到907ms完成了初始化數(shù)據(jù)的傳輸,下一節(jié)我們將按照這個數(shù)據(jù)傳輸內(nèi)容編寫代碼,初始化OLED。

三、I2C是一種半雙工協(xié)議

上面我們仔細分析了I2C協(xié)議,SCL用于周期的變換,SDA用于傳輸數(shù)據(jù),所以同一時間,SDA要么用于接收,要么用于發(fā)送。所以我們可以得到I2C是一種半雙工協(xié)議,同一時間只能進行接收或發(fā)送。

四、總結

本節(jié)小魚帶你從I2C協(xié)議信號入手,詳細介紹了I2C數(shù)據(jù)的特點,如果你手頭也有邏輯分析工具,也可以嘗試進行分析,開發(fā)板設計的也非常人性化,你可以這樣隨手拿幾個杜邦線就可以接入進行測量。

圖片

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

    關注

    10

    文章

    2848

    瀏覽量

    87839
  • 串口通信
    +關注

    關注

    34

    文章

    1604

    瀏覽量

    55325
  • 通訊協(xié)議

    關注

    10

    文章

    265

    瀏覽量

    20294
  • I2C協(xié)議
    +關注

    關注

    0

    文章

    26

    瀏覽量

    8442
  • ROS
    ROS
    +關注

    關注

    1

    文章

    276

    瀏覽量

    16919
收藏 人收藏

    評論

    相關推薦

    I2C協(xié)議介紹

    文章目錄I2C 調(diào)查標準I2C協(xié)議介紹I2C時序介紹起始信號停止信號重啟信號總線閑信號總線忙信號
    發(fā)表于 01-20 08:04

    I2C總線協(xié)議及其應用(圖)

    I2C總線協(xié)議及其應用
    發(fā)表于 06-01 20:22 ?7012次閱讀

    什么是i2c總線

    什么是i2c總線  下載請點擊: i2c總線協(xié)議中文版 
    發(fā)表于 11-05 09:26 ?2897次閱讀

    I2C總線協(xié)議及其應用

    I2C總線協(xié)議及其應用 一、I2C總線介紹: ---- 由于大規(guī)模集成電路技術的發(fā)展,在單個芯片集成CPU以及組成一個單獨工作系統(tǒng)
    發(fā)表于 02-08 11:23 ?1533次閱讀
    <b class='flag-5'>I2C</b>總線<b class='flag-5'>協(xié)議</b>及其應用

    I2C最新協(xié)議標準

    I2C最新協(xié)議標準,詳細介紹了IIC信號要求,供大家參考,
    發(fā)表于 12-22 17:59 ?13次下載

    I2C通信協(xié)議應該如何學習

    我最近剛做完I2C通信協(xié)議的編寫與調(diào)試,下面介紹一下我從一開始理解夏老師的程序,修改程序,直到下板調(diào)試整個的學習過程,希望對大家學習 I2C 有一定的幫助。一、 分析源代碼學習
    發(fā)表于 04-28 08:00 ?21次下載
    <b class='flag-5'>I2C</b>通信<b class='flag-5'>協(xié)議</b>應該如何學習

    STM32學習之I2C協(xié)議(讀寫EEPROM)

    關于STM32學習分享第七章 I2C協(xié)議(讀寫EEPROM)文章目錄關于STM32學習分享前言二、代碼1.i2c.c2.i2c.h3.main.c
    發(fā)表于 11-30 15:21 ?32次下載
    STM32學習之<b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>(讀寫EEPROM)

    MPU6050的I2C通信協(xié)議

    不同硬件有不同的I2C協(xié)議
    發(fā)表于 12-06 12:21 ?3次下載
    MPU6050的<b class='flag-5'>I2C</b>通信<b class='flag-5'>協(xié)議</b>

    嵌入式內(nèi)核及驅(qū)動開發(fā)-09IIC子系統(tǒng)框架使用(I2C協(xié)議和時序,I2C驅(qū)動框架,I2C從設備驅(qū)動開發(fā),MPU6050硬件連接

    文章目錄I2c協(xié)議和時序I2c介紹I2c硬件連接I2c總線的信號
    發(fā)表于 12-06 14:06 ?17次下載
    嵌入式內(nèi)核及驅(qū)動開發(fā)-09IIC子系統(tǒng)框架使用(<b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>和時序,<b class='flag-5'>I2C</b>驅(qū)動框架,<b class='flag-5'>I2C</b>從設備驅(qū)動開發(fā),MPU6050硬件連接

    硬件I2C與模擬I2C

    配置;而軟件I2C是沒有寄存器這個概念的。 軟件I2C一般是使用GPIO管腳,用軟件控制SCL,SDA線輸出高低電平,模擬i2c協(xié)議的時序。例如下面這段
    發(fā)表于 12-28 19:14 ?81次下載
    硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    一文看懂I2C協(xié)議

    電子行業(yè)最常用的3種串行通訊協(xié)議:UART、SPI和I2C。前面介紹了串口通訊協(xié)議及其FPGA實現(xiàn),SPI協(xié)議。本篇文章
    發(fā)表于 01-25 18:32 ?40次下載
    一文看懂<b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>

    I2C通信協(xié)議:了解I2C Primer、 PMBus和SMBus

    I2C,即Inter-Integrated Circuit,是一種常用的串行通信協(xié)議,用于在器件之間——特別是兩個或兩個以上不同電路之間建立通信。I2C Primer是最常用的I2C。
    的頭像 發(fā)表于 06-15 15:29 ?5070次閱讀
    <b class='flag-5'>I2C</b>通信<b class='flag-5'>協(xié)議</b>:了解<b class='flag-5'>I2C</b> Primer、 PMBus和SMBus

    使用I2C協(xié)議點亮OLED

    你好,我是愛吃魚香ROS的小魚。本節(jié)我們就嘗試直接使用I2C協(xié)議來點亮OLED,因為主要測試I2C協(xié)議,所以對于復雜的顯示處理部分小魚就略過了,畢竟有方便的開源庫使用,我們也不用那么糾
    的頭像 發(fā)表于 07-15 16:47 ?1743次閱讀
    使用<b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>點亮OLED

    I2C串行總線協(xié)議是什么?I2C總線有哪些優(yōu)點?

    I2C串行總線協(xié)議是什么?I2C總線有哪些優(yōu)點? I2C(Inter-Integrated Circuit)是一種串行總線協(xié)議,由Phili
    的頭像 發(fā)表于 09-12 11:18 ?1434次閱讀

    I2C協(xié)議的基礎知識

    本文從I2C協(xié)議的概述開始,描述協(xié)議的歷史、不同速度模式、物理層和數(shù)據(jù)幀結構,最后介紹I2C混合電壓系統(tǒng)中電平兼容性以及上拉電阻大小計算。
    的頭像 發(fā)表于 10-22 15:51 ?63次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>的基礎知識