<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通信介紹及軟測方法

硬件設計解析 ? 來源:愛搞研究的阿燦 ? 作者:愛搞研究的阿燦 ? 2023-04-17 16:35 ? 次閱讀

一、I2C總線的介紹

??I2C是一種非常常見的通信協議,是philips公司提出的,由數據線SDA和時鐘線SCL兩條雙向信號線組成,CPU利用串行時鐘線發出時鐘信號,利用串行數據線發送或者接受數據。SDA線傳輸數據是大端傳輸(字節高位先傳),每次傳輸8bit,即1字節。支持多主控,任何時間點只能有一個主控。每個連接到總線的設備都有一個獨立的地址addr,共7個bit,主機正是利用該地址對設備進行訪問(這是I2C和SPI最大的不同點之一,I2C對從設備進行操作需要知道從設備地址,然后進行尋址;而SPI則不需要通過設備地址尋址)。
??當總線空閑的時候,SDA和SCL都是高電平。在數據傳輸過程中,SCL為高電平的時候,SDA線必須保持穩定,SDA上傳輸1個bit數據;當SCL為低電平的時候,SDA線才可以改變電平。簡言之,只有當SCL為高電平時,SDA的數據才有意義。

5ad07028-da9f-11ed-a826-dac502259ad0.png


??開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數據。起始信號由主控制器產生。
??結束信號:SCL為高電平時,SDA由低電平向高電平跳變,結束傳送數據。結束信號也只能由主控制器產生。
??(記憶竅門:因為總線空閑時兩根線都是高電平,所以開始信號是由高電平變為低電平;而結束信號是要回到總線空閑的狀態,所以是從低電平變為高電平)

5add7f98-da9f-11ed-a826-dac502259ad0.png


??發送到SDA線上的每個字節必須是8位,每次傳輸可以發送的字節數量不受限制,每個字節后必須跟一個ACK應答位,數據從最高有效位(MSB)開始傳輸。
??主機每發送完8bit數據后等待從機ACK。即在第9個clock,若從機發回ACK,SDA會被拉低。若沒有ACK,SDA會被置高,這會引起主控發生RESTART或STOP流程。根據近期實際開發經驗,主機在第一次尋址失敗后,會再次尋址,如果兩次都失敗,那么SDA就會把電平拉高(同時SCL處于高電平狀態),結束通信。

5ae290fa-da9f-11ed-a826-dac502259ad0.png


??I2C總線上的所有數據都是以8位字節傳送的,發送器每發送一個字節,就在時鐘脈沖9期間釋放數據線,由接收器反饋一個應答信號。應答信號為低電平時,規定為有效應答位(ACK簡稱應答位),表示接收器已經成功地接收了該字節;應答信號為高電平時,規定為非應答位(NACK),一般表示接收器接收該字節沒有成功。(無論是發送地址還是數據,其后都緊跟著一個ACK/NACK。ACK和NACK由slave提供。)
??如果從機要在完成一些其他功能之后才能接收或發送下一個完整的數據字節,則可以使時鐘線SCL 保持低電平,從而迫使主機進入等待狀態。當從機準備好接收下一個數據字節,并且釋放時鐘線SCL 后,數據傳輸繼續。
??當主控器接收數據時,在最后一個數據字節,必須發送一個非應答信號(NACK),使受控器釋放數據線,以便主控器產生一個停止信號來終止總線的數據傳送。
??在起始信號結束后,發送一個7bit的從設備地址,然后緊跟著讀寫標志位(“0”表示寫,“1”表示讀)。如果從設備有回應,就可以繼續讀寫數據,具體讀寫哪個寄存器也要有所說明。

5ae83d7a-da9f-11ed-a826-dac502259ad0.png

二、邏輯分析儀抓取總線波形

??在實際工作中可以使用邏輯分析儀抓取I2C總線的波形進行排故。

5b0102a6-da9f-11ed-a826-dac502259ad0.png


??由于我手上只有杜邦線,缺少邏輯分析儀專用的數據線(一頭帶夾子,如下圖所示),沒有辦法在連接外設的同時抓取波形,所以此處只能簡單抓取主設尋址外設的波形。
??抓取波形使用的軟件是USBee Suite,如下圖所示:

5b29e13a-da9f-11ed-a826-dac502259ad0.png


5b3368fe-da9f-11ed-a826-dac502259ad0.png


??快速設置信號4,5為I2C總線,這種設置方法也決定了硬件上的連接。

5b47ec84-da9f-11ed-a826-dac502259ad0.png


??設置采樣率和樣本數如圖所示:

5b5ecec2-da9f-11ed-a826-dac502259ad0.png


??設置下降沿觸發(倒數第3個信號通道,軟件上標注的SDA和SCL并不是實際上的SDA和SCL,這是一個軟件BUG,根據波形來判斷,有規律的進行跳變的就是SCL, 另外一個是SDA.):

5b74d7d0-da9f-11ed-a826-dac502259ad0.png


??使用單次觸發方式捕獲波形:

5b991de8-da9f-11ed-a826-dac502259ad0.png


??實際捕獲到的波形如下圖所示:

5bb2197e-da9f-11ed-a826-dac502259ad0.png


5bc2a190-da9f-11ed-a826-dac502259ad0.png


??根據波形可以看出,GM5主設兩次尋址地址為0X22的從設備,但是沒有收到從設備的回應(NACK),最終主設停止了本次通信。


原文標題:二、邏輯分析儀抓取總線波形

文章出處:【微信公眾號:愛搞研究的阿燦】歡迎添加關注!文章轉載請注明出處。

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

    關注

    4

    文章

    728

    瀏覽量

    29548
  • I2C總線
    +關注

    關注

    8

    文章

    357

    瀏覽量

    60407
  • 邏輯分析儀
    +關注

    關注

    3

    文章

    200

    瀏覽量

    22913
  • I2C通信
    +關注

    關注

    0

    文章

    22

    瀏覽量

    8756
收藏 人收藏

    評論

    相關推薦

    3分鐘理解通信協議之I2C總線 #通信協議

    通信協議I2CI2C總線總線/接口技術
    硬聲課堂
    發布于 :2021年10月18日 10:39:12

    I2C串行通信特點簡介

    I2C串行通信特點簡介Philips公司推出的I2C、硬件協議十分巧妙,在單主方式的I2C總線系統中,總線上只有一個單片機,其余都是帶
    發表于 07-15 14:48

    I2C通信

    I2C通信怎么利用串口來檢測呢。(比如向串口發送一些漢字等數據)
    發表于 04-22 15:18

    I2C通信問題

    //定義從機讀控制字節typedef unsigned char uint8;uint8 date;***it SDA=P2^0;//定義I2C通信的數據線***it SCL=P2^1
    發表于 10-05 17:35

    I2C通信協議介紹

    的串行通信協議主要有EIA-232、EIA-232、EIA-485、USB、IEEE 1394幾種: 以下著重介紹I2C總線:一、I2C總線概述:I
    發表于 07-19 02:36

    i2c通信協議

    1.1 i2c通信協議通信協議:用來實現數據傳輸。i2c物理總線:SCL(時鐘線) SDA(數據線)i2c
    發表于 03-06 16:15

    I2C不迷茫--系列文章講透I2C

    2 C是我個人最喜歡的。盡管I2 C的吞吐率可能與其他串行通信方法不一樣,但它能夠通過兩條線控
    發表于 09-22 09:31

    什么是軟件I2C和硬件I2C

    學習I2C總線通信協議,完成基于I2C硬件協議的AHT20溫濕度傳感器的數據采集,并將采集的溫度-濕度值通過串口輸出。具體任務:1)解釋什么是“軟件I2C”和“硬件
    發表于 08-23 06:19

    AT32 I2C 2.0版新庫使用分享(一)

    的demo,很容易上手,因為我要用到I2C,所以仔細的研究了一下,特此給大家分享一下庫函數使用方法void i2c_reset(i2c_type *
    發表于 11-20 11:11

    STM32硬件I2C重新編制I2C通信流程

    怎么用軟件模擬I2C?怎樣去編制I2C通信流程?
    發表于 12-14 07:09

    I2C總線簡單介紹

    1.I2C簡單介紹I2C(Inter-Integrated Circuit)總線是一種由PHILIPS公司開發的兩線式串行總線,用于連接微控制器及其外圍設備。I2C總線產生于在80年代
    發表于 01-14 07:10

    I2C協議介紹

    多個寄存器I2C 連續讀多個寄存器I2C數據仲裁介紹I2C 調查標準I2C協議介紹
    發表于 01-20 08:04

    I2C通信協議的原理是什么

    I2C通信協議I2C通信原理I2C通信原理:I2C
    發表于 02-17 07:16

    I2C通信詳解

    關于藍橋杯嵌入式板子的I2C,如果你以前沒有接觸過I2C通信。重點:懂得通過電路圖判斷出I2C設備的地址會看I2C讀寫時序圖。底層驅動,考試
    發表于 02-28 11:24

    I2C非阻塞式通信相關資料分享

    一種I2C非阻塞式通信方法
    發表于 12-09 06:07
    亚洲欧美日韩精品久久_久久精品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>