吴忠躺衫网络科技有限公司

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

關(guān)于I2C總線的讀寫操作流程詳解

電子設(shè)計(jì) ? 來源:硬件助手 ? 作者:硬件助手 ? 2020-11-29 09:38 ? 次閱讀

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

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

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



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

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



★主機(jī)所接收數(shù)據(jù)的數(shù)量是由主機(jī)自身決定,當(dāng)發(fā)送“非應(yīng)答信號(hào)/A”時(shí)從機(jī)便結(jié)束傳送并釋放總線(非應(yīng)答信號(hào)的兩個(gè)作用:前一個(gè)數(shù)據(jù)接收成功,從機(jī)不再發(fā)送數(shù)據(jù))。當(dāng)從機(jī)收到NAK信號(hào)后如果沒有停止信號(hào),則從機(jī)會(huì)重發(fā)上一字節(jié)數(shù)據(jù)。

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

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

在發(fā)送完從器件地址后直接跟需要讀寫的寄存器地址,然后再通過重復(fù)開始信號(hào)(后跟從機(jī)地址)進(jìn)行讀寫操作(數(shù)據(jù)直接寫入或者讀取相應(yīng)的寄存器)。





★所有讀寫操作,都不會(huì)限定數(shù)據(jù)的長度,讀寫數(shù)據(jù)的長度由主機(jī)決定。不需要讀寫數(shù)據(jù)了就發(fā)送STOP信號(hào)。

4、復(fù)合傳輸實(shí)現(xiàn)方式
在傳輸過程中改變方向,開始條件和從機(jī)地址都要重復(fù),而讀寫bit要取反。如果主機(jī)發(fā)送一個(gè)重復(fù)的開始條件,那么它在這之前要發(fā)送一個(gè)NAK。

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

以上就是針對(duì)I2C總線的主機(jī)發(fā)送、主機(jī)接收、讀寫指定地址數(shù)據(jù)、符合傳輸方式的操作流程介紹。

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

    關(guān)注

    8

    文章

    406

    瀏覽量

    61167
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    I2C總線通信原理 如何設(shè)計(jì)I2C總線電路

    I2C總線通信原理 I2C(Inter-Integrated Circuit)總線是一種用于集成電路之間進(jìn)行通信的串行通信協(xié)議。它最早由飛利浦公司(現(xiàn)被恩智浦電子收購)于1982年推出
    的頭像 發(fā)表于 01-31 15:01 ?154次閱讀

    I2C總線的優(yōu)缺點(diǎn)分析

    I2C總線作為一種廣泛使用的串行通信協(xié)議,以其簡單性和高效性在嵌入式系統(tǒng)中占據(jù)著重要地位。 I2C總線的優(yōu)點(diǎn) 1. 簡單性和低成本 I2C
    的頭像 發(fā)表于 01-17 15:50 ?181次閱讀

    I2C總線數(shù)據(jù)包結(jié)構(gòu)詳解

    。以下是I2C總線數(shù)據(jù)包結(jié)構(gòu)的詳解: 一、I2C總線數(shù)據(jù)包的基本組成 I2C
    的頭像 發(fā)表于 01-17 15:46 ?180次閱讀

    I2C總線與Arduino的接口示例

    在現(xiàn)代電子設(shè)計(jì)中,I2C總線因其簡單性和靈活性而廣受歡迎。它允許多個(gè)設(shè)備共享同一通信線路,從而節(jié)省空間和成本。Arduino,作為一個(gè)多功能的微控制器平臺(tái),自然也支持I2C通信。 I2C
    的頭像 發(fā)表于 01-17 15:34 ?237次閱讀

    I2C總線的工作模式介紹

    在現(xiàn)代電子系統(tǒng)中,I2C總線作為一種多主機(jī)、多從機(jī)的串行通信協(xié)議,扮演著至關(guān)重要的角色。它允許多個(gè)設(shè)備共享同一總線,進(jìn)行數(shù)據(jù)傳輸,從而簡化了系統(tǒng)設(shè)計(jì)并降低了成本。 I2C
    的頭像 發(fā)表于 01-17 15:32 ?166次閱讀

    I2C總線協(xié)議詳細(xì)解析

    1. I2C總線簡介 I2C總線由Philips Semiconductor(現(xiàn)為NXP Semiconductors)在1980年代初期開發(fā)。它是一種多主機(jī)
    的頭像 發(fā)表于 01-17 15:22 ?208次閱讀

    I2C總線故障排除技巧

    I2C總線是一種廣泛使用的串行通信協(xié)議,它允許多個(gè)設(shè)備在兩條線上(數(shù)據(jù)線SDA和時(shí)鐘線SCL)進(jìn)行通信。由于其簡單性和靈活性,I2C總線在嵌入式系統(tǒng)中非常流行。然而,當(dāng)
    的頭像 發(fā)表于 01-17 15:20 ?259次閱讀

    I2C總線與單片機(jī)的連接

    在現(xiàn)代電子系統(tǒng)中,單片機(jī)(MCU)是核心控制單元,而I2C總線作為一種多主機(jī)、多從機(jī)的串行通信協(xié)議,因其簡單、高效和節(jié)省引腳的特性而被廣泛應(yīng)用于各種電子設(shè)備中。 I2C總線概述
    的頭像 發(fā)表于 01-17 15:18 ?184次閱讀

    I2C總線設(shè)備地址設(shè)置方法

    通常是一個(gè)7位或10位的數(shù)字,用于標(biāo)識(shí)總線上的每個(gè)設(shè)備。在7位尋址模式下,地址范圍是0x00到0x7F,而在10位尋址模式下,地址范圍是0x000到0x3FF。I2C地址的最低位(LSB)通常用于指示讀/寫操作。 硬件地址設(shè)置
    的頭像 發(fā)表于 01-17 15:17 ?296次閱讀

    I2C總線應(yīng)用實(shí)例分析

    在現(xiàn)代電子系統(tǒng)中,I2C總線因其簡單、靈活和高效的特點(diǎn)而被廣泛應(yīng)用于各種設(shè)備之間的通信。 I2C總線概述 I2C
    的頭像 發(fā)表于 01-17 15:09 ?195次閱讀

    I2C總線與SPI總線的比較

    在現(xiàn)代電子系統(tǒng)中,微控制器與各種外設(shè)之間的通信是必不可少的。I2C和SPI是兩種流行的串行通信協(xié)議,它們各自具有獨(dú)特的特點(diǎn)和應(yīng)用場(chǎng)景。 I2C總線 I2C是一種多主機(jī)、多從機(jī)的同步通信
    的頭像 發(fā)表于 01-17 15:08 ?193次閱讀

    I2C總線上拉電阻阻值如何確定?

    導(dǎo)讀I2C總線在產(chǎn)品設(shè)計(jì)中被廣泛應(yīng)用,盡管其結(jié)構(gòu)簡單,但經(jīng)常發(fā)生上拉電阻設(shè)計(jì)不合理的問題。本文將對(duì)I2C上拉電阻的選擇進(jìn)行簡要分析。一根信號(hào)線上,通過電阻連接一個(gè)固定的高電平VCC,信號(hào)線初始、空閑
    的頭像 發(fā)表于 12-27 11:34 ?1017次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>上拉電阻阻值如何確定?

    詳解I2C總線與SPI總線的區(qū)別

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

    了解I2C總線

    電子發(fā)燒友網(wǎng)站提供《了解I2C總線.pdf》資料免費(fèi)下載
    發(fā)表于 10-08 11:13 ?2次下載
    了解<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>

    物聯(lián)網(wǎng)嵌入式軟件中的I2C總線設(shè)計(jì)詳解

    I2C(Inter-Integrated Circuit)通信總線,作為嵌入式系統(tǒng)設(shè)計(jì)中的一個(gè)關(guān)鍵組成部分,其靈活性和高效率使其在高級(jí)應(yīng)用中備受青睞。本文旨在提供關(guān)于I2C通信
    的頭像 發(fā)表于 09-29 16:21 ?558次閱讀
    物聯(lián)網(wǎng)嵌入式軟件中的<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>設(shè)計(jì)<b class='flag-5'>詳解</b>
    沙龙百家乐官网破解| 金臂百家乐开户送彩金| 大发888备用网址大发娱乐城| 昆明百家乐官网装修装潢有限公司| 百家乐讲谈| 吉首市| 最好的百家乐娱乐场| 百家乐官网会骗人吗| 百家乐tt娱乐网| 固安县| 百家乐详情| 百家乐官网哪家赌安全| 全讯网hg9388.com| 百家乐官网赌注| 太阳城蓝山园| 线上百家乐官网信誉| 中华德州扑克论坛| 在线百家乐官方网| 百家乐官网太阳城小郭| 百家乐最新缆| 百家乐官网出老千视频| 云博娱乐城,| 百家乐连线游戏下载| CEO百家乐官网现金网| 威尼斯人娱乐城网址| 太阳百家乐官网网址| 伟德百家乐官网下载| 百家乐园首选| 百家乐官网投注| 中国足球竞猜| 百家乐生活馆拖鞋| 百家乐官网路单破| 必博备用网址| 深圳百家乐的玩法技巧和规则| 三公百家乐官网在线哪里可以玩| 娱乐城注册送体验金| 单机百家乐棋牌| 百家乐官网信息| 新世纪娱乐成| 星期八百家乐的玩法技巧和规则 | 百家乐官网投注翻倍方法|