精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

關于I2C總線的讀寫操作流程詳解

電子設計 ? 來源:硬件助手 ? 作者:硬件助手 ? 2020-11-29 09:38 ? 次閱讀

本文主要介紹I2C總線的讀寫操作流程。

I2C總線的操作包括讀和寫,具體的操作流程如下:

1、主機發送數據(I2C寫)流程
I2C主機給從機寫數據的操作流程如下:
Master發起START;
Master發送I2C ADDR(7bit)和W操作0(1bit),等待ACK;
Slave發送ACK(ACK=0);
Master發送reg addr(8bit),等待ACK(該地址為雙方約定的需要寫入數據的首地址,實際使用中隨機寫入時可以沒有該地址數據);
Slave發送ACK;
Master收到Slave的ACK信號后開始發送第一個字節的數據(8bit),等待ACK;
Slave收到數據后發送ACK;
Master收到ACK后再發送下一個數據;
當Master發送完最后一個字節數據并收到Slave的ACK后,發起STOP。



★主機通過發送地址碼與對應的從機建立了通信關系,而掛接在總線上的其它從機雖然同時也收到了地址碼,但因為與其自身的地址不相符合,因此提前退出與主機的通信;
★主機的一次發送通信,其發送的數據數量不受限制。主機是通過STOP信號通知發送的結束,從機收到STOP信號后退出本次通信;
★主機的每一次發送后都是通過從機的ACK信號了解從機的接收狀況,如果應答錯誤則重發(一般重發次數可以設置,但次數太多會影響效率);
★實際測試時,ACK信號會有一個毛刺,是因為數據和ACK是不同的角色發出的(當主機發送數據時,從機返回ACK;當從機發送數據時,主機返回ACK),這樣ACK正好是方向切換的時候,毛刺的大小取決于主從之間的切換速度。

2、主機接收數據(I2C讀)流程
I2C主機讀取從機數據的操作流程如下:
Master發送START;
Master發送I2C ADDR(7bit)和R操作1(1bit),等待ACK;
Slave發送ACK;
Master發送reg addr(8bit),等待ACK;
Slave發送ACK;
Master發起START;
Master發送I2C addr(7bit)和r操作1(1bit),等待ACK;
Slave發送ACK;
Slave發送ACK后,緊接著向Master發送數據;
Master收到數據后發送ACK;
Slave接收到ACK后再向Master發送下一個數據;
當Master完成接收數據后,向Slave發送一個非應答信號(NAK=1),從機收到非應答信號后停止發送數據;
Master發送非應答信號后,再發送一個STOP信號。



★主機所接收數據的數量是由主機自身決定,當發送“非應答信號/A”時從機便結束傳送并釋放總線(非應答信號的兩個作用:前一個數據接收成功,從機不再發送數據)。當從機收到NAK信號后如果沒有停止信號,則從機會重發上一字節數據。

3、讀寫指定地址的方式
I2C讀寫指定地址有以下幾種方式:
在從器件地址后面直接跟需要讀寫的寄存器首地址,然后直接跟數據,最后通過停止信號結束此次讀寫。

主從器件約定讀寫指令,在從器件地址后面直接跟讀寫指令,然后再跟需要讀寫的寄存器首地址,然后直接跟數據。

在發送完從器件地址后直接跟需要讀寫的寄存器地址,然后再通過重復開始信號(后跟從機地址)進行讀寫操作(數據直接寫入或者讀取相應的寄存器)。





★所有讀寫操作,都不會限定數據的長度,讀寫數據的長度由主機決定。不需要讀寫數據了就發送STOP信號。

4、復合傳輸實現方式
在傳輸過程中改變方向,開始條件和從機地址都要重復,而讀寫bit要取反。如果主機發送一個重復的開始條件,那么它在這之前要發送一個NAK。

★復合模式可以在比如控制串行寄存器時用到。在第一個數據字節時一定要寫寄存器內部的地址。開始條件和從地址重復后,數據就開始傳輸了。
★自動增加或減少之前訪問的寄存器地址都由設備的設計者決定。
★兼容I2C總線的設備在接收到開始條件或重復開始條件時都一定要重啟它們的總線邏輯,即使開始條件都不是正確的格式,它們都期望發送從機地址。
★開始條件后馬上跟著一個終止條件是不合法的格式。

以上就是針對I2C總線的主機發送、主機接收、讀寫指定地址數據、符合傳輸方式的操作流程介紹。

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

    關注

    8

    文章

    389

    瀏覽量

    60844
收藏 人收藏

    評論

    相關推薦

    I2C總線為什么要接上拉電阻

    I2C為什么要接上拉電阻?因為它是開漏輸出。 為什么是開漏輸出? I2C協議支持多個主設備與多個從設備在一條總線上,如果不用開漏輸出,而用推挽輸出,會出現主設備之間短路的情況。所以總線
    的頭像 發表于 11-20 10:07 ?277次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>為什么要接上拉電阻

    RISC V的I2C操作

    ?雙向IO,需設置為弱上拉。I2C對應的三態門的OE信號:需要賦值為I2C SDA/SCL的write信號;rtl中的表述如下:主要原因在于:i2c的通信過程中,當總線空閑時,兩根線均
    的頭像 發表于 11-01 11:06 ?135次閱讀

    詳解I2C總線與SPI總線的區別

    I2C(Inter-Integrated Circuit)表示集成電路互連,是一種用于線路板內部芯片之間通信的總線
    的頭像 發表于 10-16 15:16 ?2551次閱讀
    <b class='flag-5'>詳解</b><b class='flag-5'>I2C</b><b class='flag-5'>總線</b>與SPI<b class='flag-5'>總線</b>的區別

    了解I2C總線

    電子發燒友網站提供《了解I2C總線.pdf》資料免費下載
    發表于 10-08 11:13 ?1次下載
    了解<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>

    I2C總線上拉電阻計算

    電子發燒友網站提供《I2C總線上拉電阻計算.pdf》資料免費下載
    發表于 10-08 09:54 ?1次下載
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>上拉電阻計算

    物聯網嵌入式軟件中的I2C總線設計詳解

    I2C(Inter-Integrated Circuit)通信總線,作為嵌入式系統設計中的一個關鍵組成部分,其靈活性和高效率使其在高級應用中備受青睞。本文旨在提供關于I2C通信
    的頭像 發表于 09-29 16:21 ?278次閱讀
    物聯網嵌入式軟件中的<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>設計<b class='flag-5'>詳解</b>

    優秀實踐:I3C共享總線上的I2C器件

    電子發燒友網站提供《優秀實踐:I3C共享總線上的I2C器件.pdf》資料免費下載
    發表于 09-06 09:49 ?0次下載
    優秀實踐:<b class='flag-5'>I3C</b>共享<b class='flag-5'>總線</b>上的<b class='flag-5'>I2C</b>器件

    I2C總線協議的工作原理和尋址格式

    I2C(Inter-Integrated Circuit)總線協議,即集成電路總線協議,是一種用于連接微控制器及其外圍設備的串行總線協議。I2C
    的頭像 發表于 05-27 15:47 ?1597次閱讀

    如何通過cyusb3014的i2c操作界面操作ads1119的i2c接口?

    我使用 cyusb3014 作為 i2c 設備的主機,并使用 ads1119 采集電壓。 我需要使用 i2c 操作相關指令。 例子中提供的示例只顯示了讀寫步驟,即 dev_ Addr+
    發表于 05-23 07:30

    什么是I2C協議 I2C總線的控制邏輯

    在實際使用過程中,I2C比較容易出現的一個問題就是死鎖 ,死鎖在I2C中主要表現為:I2C死鎖時表現為SCL為高,SDA一直為低。
    發表于 03-12 09:17 ?976次閱讀
    什么是<b class='flag-5'>I2C</b>協議 <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的控制邏輯

    詳解I2C接口協議

    I2C總線是由荷蘭皇家飛利浦Philips公司(現恩智浦NXP半導體)開發的一種簡單的雙向兩線制總線協議標準。
    發表于 03-07 10:22 ?2000次閱讀
    <b class='flag-5'>詳解</b><b class='flag-5'>I2C</b>接口協議

    藍牙串口通訊總線——I2C/SPI/UART

    嵌入式工程師在做串口通信調試工作的時候,會經常用到I2C、SPI、UART這3條總線I2C、SPI、UART這三種通信總線在嵌入式領域很常見,目前主流的SOC芯片都內置了這三種
    的頭像 發表于 01-22 09:41 ?1495次閱讀
    藍牙串口通訊<b class='flag-5'>總線</b>——<b class='flag-5'>I2C</b>/SPI/UART

    關于I2C總線的6個問題分析

    I2C總線上的上拉電阻范圍是多少? 回答: 總線電容是走線部分、連接部分、管腳部分的電容的總和。總線電容限制了上拉電阻(Rp) 的最大值,因為
    發表于 12-25 09:19 ?1507次閱讀