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

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

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

別被IIC總線給坑了

lilihe92 ? 來(lái)源:最后一個(gè)bug ? 2023-10-11 16:03 ? 次閱讀

1

I2C通信理解

很多朋友在進(jìn)行IIC通信協(xié)議開(kāi)發(fā)的時(shí)候比較迷茫,一方面是可能長(zhǎng)時(shí)間沒(méi)怎么用了,相關(guān)的知識(shí)有所忘卻,也算正常,不過(guò)如果重新圍著通信時(shí)序圖看來(lái)看去,那還是比較麻煩的,比如IIC的起始電平條件、停止電平條件、以及數(shù)據(jù)保持即更新條件等等:

56c76720-680c-11ee-939d-92fbcf53809c.png

雖然每個(gè)器件對(duì)IIC通信的波形要求不是太相同,但I(xiàn)IC的通信時(shí)序容忍度非常高,基本上常規(guī)范圍的通信參數(shù)和驅(qū)動(dòng)都是通用的。

IIC數(shù)據(jù)的傳輸過(guò)程,在SCL通信同步時(shí)鐘節(jié)拍的控制下,主機(jī)發(fā)送數(shù)據(jù)主動(dòng)使得總線電平發(fā)生變化,供從機(jī)檢測(cè)接收,而當(dāng)從機(jī)接收到數(shù)據(jù)以后接著主動(dòng)的拉低SDA來(lái)作為應(yīng)答信號(hào)通知主機(jī),如果沒(méi)有拉低則表示非應(yīng)答。

之前很多朋友都不太理解IIC的主機(jī)是怎么檢測(cè)到從機(jī)應(yīng)答的,似乎從SDA線上的波形看都好像是主機(jī)發(fā)送出來(lái)的,所以在進(jìn)行通信波形解析的時(shí)候一定要注意區(qū)分信號(hào)到底是主機(jī)還是從機(jī)在處理。

2

IIC數(shù)據(jù)幀

對(duì)于通信的應(yīng)用,重要的并不是所謂的電平變化,當(dāng)然也不是說(shuō)不重要,畢竟有時(shí)候通信不穩(wěn)定還得從原始波形進(jìn)行分析,但是大部分應(yīng)用開(kāi)發(fā)人員更多的是要了解如何傳遞數(shù)據(jù)幀,掌握好數(shù)據(jù)幀的傳遞過(guò)程和方式。

不同廠商的數(shù)據(jù)幀稍微有所差異,比如7位地址、8位地址和10位地址,但總體上都是大同小異,大家可以參考對(duì)應(yīng)的芯片手冊(cè)進(jìn)行學(xué)習(xí),這里以最常用的7地址位跟大家介紹一下:

IIC是一種主從通信方式,通信發(fā)起者為主機(jī),主要熟悉三種數(shù)據(jù)幀傳遞過(guò)程:

1、單次或連續(xù)向從機(jī)寫數(shù)據(jù)

56d689c6-680c-11ee-939d-92fbcf53809c.png

注意如上僅僅只是數(shù)據(jù)幀傳遞,類似于我們平時(shí)的串口通信,而至于通信數(shù)據(jù)域內(nèi)的數(shù)據(jù)含義,是由通信雙方共同約定即可,也就是所謂的應(yīng)用層協(xié)議的制定了。

2、單次或連續(xù)向從機(jī)讀數(shù)據(jù)

56e4649c-680c-11ee-939d-92fbcf53809c.png

讀數(shù)據(jù)的過(guò)程主機(jī)發(fā)送的讀寫標(biāo)志位發(fā)生變化,在數(shù)據(jù)部分從機(jī)主動(dòng)控制總線發(fā)送數(shù)據(jù)給主機(jī),然后主機(jī)來(lái)進(jìn)行應(yīng)答,剛好與IIC寫數(shù)據(jù)相反。

3、通訊過(guò)程讀寫切換

56ed0c5a-680c-11ee-939d-92fbcf53809c.png

在通信過(guò)程中需要進(jìn)行讀寫切換時(shí)不需要發(fā)送停止,而是應(yīng)答以后重新發(fā)一次起始和從機(jī)地址及讀寫狀態(tài),接著進(jìn)行下面的數(shù)據(jù)處理即可。

3

IIC通信別忘了上拉

對(duì)于IIC總線不要忘記通信IO上拉,上拉主要是保證信號(hào)線在空閑的狀態(tài)保持高電平,也就是邏輯1,。

同時(shí)IIC總線采用的是一種開(kāi)漏輸出的架構(gòu),通信線上的器件可以將線路的電平拉低,即邏輯0;但是無(wú)法主動(dòng)將線路拉高到邏輯1,所以上拉必不可少。

所以為了確保通信線上能夠提供足夠的驅(qū)動(dòng)能力,同時(shí)也不能導(dǎo)致信號(hào)失真,上拉電阻阻值的選擇尤為重要。

4

上拉電阻怎么選?

上拉電阻該怎么選呢?那影響因素可就多了~

1、通信的總線長(zhǎng)度

通常通信線路越長(zhǎng),電阻要稍微大一點(diǎn)。

2、通信的總線材質(zhì)

如果總線提供的容性負(fù)載較高,要適當(dāng)減小電阻,以加快信號(hào)的變化時(shí)間。

3、通信的速率

適當(dāng)降低上拉電阻,提高驅(qū)動(dòng)電流,加快電平反應(yīng)速度。

具體情況就具體分析和折中去選擇上拉電阻了,最后就是注意電平上的匹配,避免損壞芯片~






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)注

    5

    文章

    357

    瀏覽量

    30543
  • IIC總線
    +關(guān)注

    關(guān)注

    1

    文章

    66

    瀏覽量

    20274
  • SDA
    SDA
    +關(guān)注

    關(guān)注

    0

    文章

    124

    瀏覽量

    28087
  • IIC通信
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    3001

原文標(biāo)題:別被IIC總線給坑了~

文章出處:【微信號(hào):最后一個(gè)bug,微信公眾號(hào):最后一個(gè)bug】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    IIC總線的FPGA實(shí)現(xiàn)原理及過(guò)程

    IIC總線的FPGA實(shí)現(xiàn)原理及過(guò)程 IIC總線概述 IIC開(kāi)發(fā)于1982年,當(dāng)時(shí)是為了電視機(jī)內(nèi)
    的頭像 發(fā)表于 05-15 02:35 ?2173次閱讀
    <b class='flag-5'>IIC</b><b class='flag-5'>總線</b>的FPGA實(shí)現(xiàn)原理及過(guò)程

    一文詳解IIC總線

    IIC(Inter-Integrated Circuit)集成電路總線,它是一種兩線式串行通信總線,又叫I2C,使用多主從架構(gòu),由飛利浦公司在1980年推出的。多用于主控制器和從器件間的主從通信,在
    發(fā)表于 06-07 15:38 ?9531次閱讀
    一文詳解<b class='flag-5'>IIC</b><b class='flag-5'>總線</b>

    介紹IIC總線仲裁

    IIC總線
    電子電器
    發(fā)布于 :2023年02月07日 11:24:43

    IIC總線概述

    )實(shí)現(xiàn)雙向數(shù)據(jù)傳輸(IIC通信屬于同步、半雙工串行通信)。IIC總線遵從主/從結(jié)構(gòu),可以實(shí)現(xiàn)一個(gè)主器件和多個(gè)從器件之間的通信,并且從器件永遠(yuǎn)不會(huì)主動(dòng)主器件發(fā)送數(shù)據(jù)。器件發(fā)送數(shù)據(jù)到
    發(fā)表于 08-10 07:11

    什么是IIC總線

    - 什么是IIC總線IIC總線是同步通信的一種特殊形式,具有接線口少、控制簡(jiǎn)單、器件封裝形式小、通信速率高等特點(diǎn)。在主從通信中,可以有多個(gè)IIC
    發(fā)表于 01-24 08:27

    IIC總線接口學(xué)習(xí)

    在多主設(shè)備IIC 總線模式下,多個(gè)S3C2440A 微處理器可以從從屬設(shè)備接收或發(fā)送串行數(shù)據(jù)。主設(shè)備S3C2440A 可以初始化和終止一個(gè)基于IIC 總線的數(shù)據(jù)傳輸。在S3C2440A
    發(fā)表于 04-27 15:31 ?61次下載
    <b class='flag-5'>IIC</b><b class='flag-5'>總線</b>接口學(xué)習(xí)

    LESSON8_IIC總線工作原理

    LESSON8_IIC總線協(xié)議 LESSON8_IIC總線協(xié)議
    發(fā)表于 02-18 18:23 ?0次下載

    iic總線通信程序

    iic總線通信,要的人速度下載看看哦。
    發(fā)表于 03-21 13:50 ?30次下載

    一文解讀IIC總線的FPGA實(shí)現(xiàn)原理及過(guò)程

    本文首先介紹IIC總線概念和IIC總線硬件結(jié)構(gòu),其次介紹
    發(fā)表于 05-31 10:56 ?6676次閱讀
    一文解讀<b class='flag-5'>IIC</b><b class='flag-5'>總線</b>的FPGA實(shí)現(xiàn)原理及過(guò)程

    MCU_IIC總線

    MCU_IIC總線
    發(fā)表于 11-16 09:36 ?20次下載
    MCU_<b class='flag-5'>IIC</b><b class='flag-5'>總線</b>

    【51單片機(jī)】IIC總線

    什么是IIC 總線?IIC是Inter IC Bus的縮寫,是由PHLIPS提出的一種串行總線,具備多主機(jī)系統(tǒng)所需要的包括總線裁決和高低速器
    發(fā)表于 11-23 16:20 ?14次下載
    【51單片機(jī)】<b class='flag-5'>IIC</b><b class='flag-5'>總線</b>

    IIC通信總線尋址

    IIC的使用IIC總線簡(jiǎn)介IIC通信時(shí)序IIC總線尋址IIC
    發(fā)表于 12-04 16:06 ?14次下載
    <b class='flag-5'>IIC</b>通信<b class='flag-5'>總線</b>尋址

    IIC總線學(xué)習(xí)筆記

    IIC總線學(xué)習(xí)筆記(2020.11.8)文章目錄*IIC總線學(xué)習(xí)筆記(2020.11.8)*一、I^2^C總線背景二、I^2^C
    發(fā)表于 01-17 13:33 ?6次下載
    <b class='flag-5'>IIC</b><b class='flag-5'>總線</b>學(xué)習(xí)筆記

    IIC總線規(guī)范(中文版)免費(fèi)下載

    IIC總線規(guī)范,詳細(xì)介紹IIC總線傳輸、仲裁、尋址、高低速模式等。
    發(fā)表于 02-22 14:35 ?0次下載

    GD32 MCU碰到IIC總線卡死怎么辦?

    大家在使用MCU IIC通信時(shí),若碰到設(shè)備復(fù)位或者總線干擾等情況,可能會(huì)導(dǎo)致IIC總線卡死,表現(xiàn)上總線上SDA或者SCL其中一根線為低電平,
    的頭像 發(fā)表于 02-24 09:46 ?3620次閱讀
    GD32 MCU碰到<b class='flag-5'>IIC</b><b class='flag-5'>總線</b>卡死怎么辦?