91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

I2C總線的基本通信總結(jié)

開(kāi)源嵌入式 ? 來(lái)源:開(kāi)源嵌入式 ? 作者:神棍 ? 2021-08-26 14:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在電子設(shè)計(jì)開(kāi)發(fā)中I2C大家已經(jīng)很熟悉了,每一種電子產(chǎn)品小到電子開(kāi)關(guān),大到衛(wèi)星通信都會(huì)利用的I2C總線。據(jù)統(tǒng)計(jì)I2C在電子產(chǎn)品中占據(jù)了93%的份額,幾乎任何一種電路都要使用。

I2C是由PHILIPS公司在1980年開(kāi)發(fā)的兩線式串行總線,至今已經(jīng)發(fā)展30多年的歷史了。古老的電子產(chǎn)品中就已經(jīng)在使用I2C總線了。I2C總線在所有總線中是最簡(jiǎn)單,最穩(wěn)定的一種,由于發(fā)展歷史久遠(yuǎn),所以I2C總線出現(xiàn)了多種版本。但是萬(wàn)變不離其中,有的廠商甚至在原有I2C總線的基礎(chǔ)上,自己改變了總線時(shí)序,成為獨(dú)有的I2C。但是基本原理不變。

我遇到過(guò)很多人在問(wèn)我,自己的I2C程序明明已經(jīng)調(diào)試好,可換了個(gè)芯片就通信失敗了,不能讀取數(shù)據(jù)了。都是I2C的元器件,只是芯片廠家不同。在這里我告訴大家,這總線歷史悠久,各種版本的要有幾十種甚至幾百種了,所有版本的通信格式,協(xié)議都一樣,只是時(shí)間不同了,因?yàn)橛械男酒瑥S家更改了時(shí)序中的時(shí)鐘周期。所以大家遇到這種問(wèn)題,只需調(diào)整延時(shí),其余不動(dòng)即可,不必不知所措,亂找問(wèn)題。

415246ba-eb9c-11eb-a97a-12bb97331649.jpg

I2C總線從機(jī)設(shè)備最多支持127個(gè),主要是通過(guò)串行數(shù)據(jù)(SDA)線和串行時(shí)鐘 (SCL)線在連接到總線的器件間傳遞信息。每個(gè)器件都有一個(gè)唯一的地址。

I2C總線有三種數(shù)據(jù)傳輸速度:標(biāo)準(zhǔn),快速模式和高速模式。標(biāo)準(zhǔn)的是100Kbps,快速模式為400Kbps,高速模式支持快至3.4Mbps的速度。所有的與次之傳輸速度的模式都是兼容的。I2C總線支持7位和10位地址空間設(shè)備和在不同電壓下運(yùn)行的設(shè)備。

TTL電平與COMS在I2C這里通用。是相互兼容的。

由于I2C的模式多種多樣,我就給大家講一種常用的7位尋址模式的通信,還有10位模式,大家可以自行找資料去了解,這種10位模式的較少。

總線通信流程大概分為四部分。1.啟動(dòng)—2.數(shù)據(jù)傳輸—3.應(yīng)答—4.結(jié)束。

啟動(dòng)與結(jié)束:

SCL 線是高電平時(shí),SDA 線從高電平向低電平切換,這個(gè)情況表示起始條件;

SCL 線是高電平時(shí),SDA 線由低電平向高電平切換,這個(gè)情況表示停止條件。

數(shù)據(jù)傳輸:

發(fā)送到SDA 線上的每個(gè)字節(jié)必須為8 位,每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制。每個(gè)字節(jié)后必須跟一個(gè)響應(yīng)位。首先傳輸?shù)氖菙?shù)據(jù)的最高位(MSB),如果從機(jī)要完成一些其他功能后(例如一個(gè)內(nèi)部中斷服務(wù)程序)才能接收或發(fā)送下一個(gè)完整的數(shù)據(jù)字節(jié),可以使時(shí)鐘線SCL 保持低電平,迫使主機(jī)進(jìn)入等待狀態(tài),當(dāng)從機(jī)準(zhǔn)備好接收下一個(gè)數(shù)據(jù)字節(jié)并釋放時(shí)鐘線SCL 后數(shù)據(jù)傳輸繼續(xù)。

數(shù)據(jù)應(yīng)答:

數(shù)據(jù)傳輸必須帶響應(yīng),相關(guān)的響應(yīng)時(shí)鐘脈沖由主機(jī)產(chǎn)生。在響應(yīng)的時(shí)鐘脈沖期間發(fā)送器釋放SDA 線(高)。

在響應(yīng)的時(shí)鐘脈沖期間,接收器必須將SDA 線拉低,使它在這個(gè)時(shí)鐘脈沖的高電平期間保持穩(wěn)定的低電平。

以上是基本的通信流程,當(dāng)然這通信是離不開(kāi)時(shí)鐘線的SCL。

時(shí)鐘同步:

所有主機(jī)在SCL線上產(chǎn)生它們自己的時(shí)鐘來(lái)傳輸I2C總線上的報(bào)文。數(shù)據(jù)只在時(shí)鐘的高電平周期有效,因此需要一個(gè)確定的時(shí)鐘進(jìn)行逐位仲裁。

時(shí)鐘同步通過(guò)線與連接I2C 接口到SCL 線來(lái)執(zhí)行。這就是說(shuō)SCL 線的高到低切換會(huì)使器件開(kāi)始數(shù)它們的低電平周期,而且一旦器件的時(shí)鐘變低電平,它會(huì)使SCL 線保持這種狀態(tài)直到到達(dá)時(shí)鐘的高電平。但是如果另一個(gè)時(shí)鐘仍處于低電平周期,這個(gè)時(shí)鐘的低到高切換不會(huì)改變SCL 線的狀態(tài)。因此SCL 線被有最長(zhǎng)低電平周期的器件保持低電平。此時(shí)低電平周期短的器件會(huì)進(jìn)入高電平的等待狀態(tài)。當(dāng)所有有關(guān)的器件數(shù)完了它們的低電平周期后,時(shí)鐘線被釋放并變成高電平。之后,器件時(shí)鐘和SCL線的狀態(tài)沒(méi)有差別,而且所有器件會(huì)開(kāi)始數(shù)它們的高電平周期。首先完成高電平周期的器件會(huì)再次將SCL線拉低。

這樣產(chǎn)生的同步SCL 時(shí)鐘的低電平周期由低電平時(shí)鐘周期最長(zhǎng)的器件決定,而高電平周期由高電平時(shí)鐘周期最短的器件決定。

7位尋址方式:

第一個(gè)字節(jié)的頭7 位組成了從機(jī)地址,最低位(LSB)是第8 位,它決定了傳輸?shù)姆较?。第一個(gè)字節(jié)的最低位是“0”,表示主機(jī)會(huì)寫(xiě)信息到被選中的從機(jī);“1”表示主機(jī)會(huì)向從機(jī)讀信息,當(dāng)發(fā)送了一個(gè)地址后,系統(tǒng)中的每個(gè)器件都在起始條件后將頭7 位與它自己的地址比較,如果一樣,器件會(huì)判定它被主機(jī)尋址,至于是從機(jī)接收器還是從機(jī)發(fā)送器,都由R/W 位決定的。

下面是I2C的時(shí)序圖與對(duì)應(yīng)程序,程序已經(jīng)調(diào)試通過(guò),大家可以使用,但是大家記住一點(diǎn),不同廠家芯片時(shí)鐘周期會(huì)不同。本人以51單片機(jī),keil4開(kāi)發(fā)環(huán)境,12M晶振調(diào)試通過(guò)。從機(jī)芯片是AT24C08芯片。

起始與停止總線:

41b80270-eb9c-11eb-a97a-12bb97331649.jpg

I2C總線程序起始與停止:

41c5df76-eb9c-11eb-a97a-12bb97331649.png

I2C讀寫(xiě)時(shí)序:

420a2b04-eb9c-11eb-a97a-12bb97331649.jpg

I2C讀寫(xiě)單個(gè)字節(jié):

425027c6-eb9c-11eb-a97a-12bb97331649.png

42873054-eb9c-11eb-a97a-12bb97331649.png

I2C應(yīng)答與非應(yīng)答時(shí)序:

429ddf5c-eb9c-11eb-a97a-12bb97331649.jpg

I2C多字節(jié)連續(xù)讀寫(xiě)時(shí)序:

42e6f12e-eb9c-11eb-a97a-12bb97331649.jpg

以上程序調(diào)試通過(guò),直接使用即可。但根據(jù)不同廠家的芯片可能時(shí)序會(huì)有不同,如遇通信不正常,可改變延時(shí)?;窘o大家把I2C的基本通信總結(jié)了一下。由于I2C種類版本繁多,但基本原理相同,這里不一一舉例。

責(zé)任編輯:haq

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

    關(guān)注

    173

    文章

    6079

    瀏覽量

    178455
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1556

    瀏覽量

    131272
  • 電子設(shè)計(jì)
    +關(guān)注

    關(guān)注

    42

    文章

    1763

    瀏覽量

    49858

原文標(biāo)題:看懂了這篇文章你將會(huì)操作所有的IIC器件?。。?/p>

文章出處:【微信號(hào):KY_QRS,微信公眾號(hào):開(kāi)源嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    I2C總線-通信線纜長(zhǎng)度的影響及改進(jìn)措施

    I2C總線確實(shí)不適合遠(yuǎn)距離通信,尤其是需要使用線纜與I2C接口器件進(jìn)行通信,這里的“不適合”并不是說(shuō)不可以,這也是本文的重點(diǎn)。一般使用
    發(fā)表于 01-21 06:03

    I2C 為什么只要兩根線就能搞定通信

    到目前為止,我們已經(jīng)討論了SPI通信和UART通信的基礎(chǔ)知識(shí),現(xiàn)在讓我們討論本系列的最后一個(gè)協(xié)議,即集成電路間協(xié)議(I2C)。如果您曾經(jīng)構(gòu)建過(guò)使用OLED顯示器、氣壓傳感器或陀螺儀/加速度計(jì)模塊
    的頭像 發(fā)表于 01-04 09:14 ?1701次閱讀
    <b class='flag-5'>I2C</b> 為什么只要兩根線就能搞定<b class='flag-5'>通信</b>?

    P82B715:I2C總線擴(kuò)展的得力助手

    P82B715:I2C總線擴(kuò)展的得力助手 在電子設(shè)計(jì)領(lǐng)域,I2C總線是一種常用的通信協(xié)議,但它的總線
    的頭像 發(fā)表于 12-26 10:20 ?748次閱讀

    基于FPGA的I2C控制模塊設(shè)計(jì)

    I2C_WRITE_WDATA.v模塊實(shí)現(xiàn)I2C寫(xiě)時(shí)序,I2C_Controller (I2C控制器)例化了I2C_WRITE_WDATA.
    的頭像 發(fā)表于 12-26 09:48 ?5069次閱讀
    基于FPGA的<b class='flag-5'>I2C</b>控制模塊設(shè)計(jì)

    TCA39306雙向I2C總線和SMBus電壓電平轉(zhuǎn)換器技術(shù)解析

    TCA39306雙向I2C總線和SMBus電壓電平轉(zhuǎn)換器技術(shù)解析 在電子設(shè)計(jì)領(lǐng)域,電壓電平轉(zhuǎn)換是一個(gè)常見(jiàn)且關(guān)鍵的問(wèn)題,特別是在涉及不同電壓標(biāo)準(zhǔn)的總線通信時(shí)。TCA39306作為一款雙路
    的頭像 發(fā)表于 12-17 10:00 ?396次閱讀

    I2C總線協(xié)議

    I2C 總線使用兩根信號(hào)線(數(shù)據(jù)線 SDA 和時(shí)鐘線 SCL)在設(shè)備間傳輸數(shù)據(jù)。SCL 為單向時(shí)鐘線,固定由主機(jī)驅(qū)動(dòng)。SDA 為雙向數(shù)據(jù)線,在數(shù)據(jù)傳輸過(guò)程中由收發(fā)兩端分時(shí)驅(qū)動(dòng)。 I2C 總線
    發(fā)表于 12-15 08:07

    如何在CW32 MCU上優(yōu)化I2C通信

    高頻率下也能穩(wěn)定傳輸數(shù)據(jù),避免數(shù)據(jù)丟失或錯(cuò)誤。 解決I2C通信中的常見(jiàn)問(wèn)題: 介紹在I2C通信過(guò)程中常見(jiàn)的問(wèn)題,如總線沖突、數(shù)據(jù)競(jìng)爭(zhēng)和AC
    發(fā)表于 11-27 06:25

    深入剖析I2C協(xié)議

    I2C是由Philips開(kāi)發(fā)的簡(jiǎn)單的雙向兩線總線,在深入淺出理解SPI協(xié)議中,我們區(qū)分了單工,半雙工,全雙工協(xié)議數(shù)據(jù)流向的區(qū)別,根據(jù)特征,I2C協(xié)議屬于半雙工協(xié)議(即同一時(shí)刻,數(shù)據(jù)單向流動(dòng))。此外
    的頭像 發(fā)表于 08-21 15:10 ?3691次閱讀
    深入剖析<b class='flag-5'>I2C</b>協(xié)議

    I2C總線通信,為什么要進(jìn)行電氣隔離?

    I2C總線采用雙向二線制,支持多主機(jī)多從機(jī)通信,具備高可靠性、抗干擾能力強(qiáng),廣泛應(yīng)用于嵌入式系統(tǒng)中。
    的頭像 發(fā)表于 08-11 11:04 ?2525次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b><b class='flag-5'>通信</b>,為什么要進(jìn)行電氣隔離?

    第十八章 I2C通信測(cè)試

    本章介紹了I2C協(xié)議,其物理層用SDA和SCL雙線,支持多設(shè)備:協(xié)議層含起始/停止信號(hào)、應(yīng)答機(jī)制等。還講解W55MH32的I2C外設(shè)及初始化,并進(jìn)行了通信測(cè)試代碼的分析。
    的頭像 發(fā)表于 06-19 17:07 ?1323次閱讀
    第十八章 <b class='flag-5'>I2C</b><b class='flag-5'>通信</b>測(cè)試

    【技術(shù)說(shuō)明】數(shù)字輸出壓力傳感器的I2C通信

    介紹I2C總線是一個(gè)簡(jiǎn)單的,串行8位面向計(jì)算機(jī)總線有效的I2C(集成電路間)控制。It提供了良好的支持不同電路板距離之間的通信,例如與各種低
    的頭像 發(fā)表于 06-19 11:02 ?1797次閱讀
    【技術(shù)說(shuō)明】數(shù)字輸出壓力傳感器的<b class='flag-5'>I2C</b><b class='flag-5'>通信</b>

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動(dòng)之Linux下的I2C驅(qū)動(dòng)簡(jiǎn)介

    在Linux下,I2C(Inter-Integrated Circuit)驅(qū)動(dòng)是用于支持I2C總線協(xié)議的驅(qū)動(dòng)程序。I2C是一種串行通信協(xié)議,
    發(fā)表于 04-15 10:39

    飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動(dòng)之Linux下的I2C驅(qū)動(dòng)簡(jiǎn)介

    在Linux下,I2C(Inter-Integrated Circuit)驅(qū)動(dòng)是用于支持I2C總線協(xié)議的驅(qū)動(dòng)程序。I2C是一種串行通信協(xié)議,
    發(fā)表于 04-15 10:19

    是德DSOX4034A示波器I2C總線信號(hào)分析

    在現(xiàn)代電子設(shè)計(jì)與調(diào)試中,I2C(Inter-Integrated Circuit)總線作為一種廣泛應(yīng)用的串行通信協(xié)議,因其簡(jiǎn)單性、靈活性和低功耗特性,成為許多嵌入式系統(tǒng)和電子設(shè)備中不可或缺的
    的頭像 發(fā)表于 03-19 13:47 ?1254次閱讀
    是德DSOX4034A示波器<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>信號(hào)分析

    I2C總線復(fù)用

    帝晶智慧屏I2C總線復(fù)用
    的頭像 發(fā)表于 03-11 17:20 ?2113次閱讀