一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

淺談I2C兼容接口讀取多字節(jié)數(shù)據(jù)時(shí)數(shù)據(jù)傳輸方法

電子設(shè)計(jì) ? 來(lái)源:eeweb ? 作者:Maxim ? 2021-04-21 13:46 ? 次閱讀

本應(yīng)用筆記討論了通過(guò)I2C兼容接口讀取多字節(jié)數(shù)據(jù)時(shí)的注意事項(xiàng)。討論了一次讀取一個(gè)字節(jié)的陷阱,并給出了一些具體示例。本文還介紹了處理此類數(shù)據(jù)傳輸?shù)恼_方法。**

I2C嵌入式系統(tǒng)中使用的串行數(shù)據(jù)傳輸協(xié)議之一。它用于將低速外圍設(shè)備連接到嵌入式微處理器。它還用于中低數(shù)據(jù)速率通信。EPROM,實(shí)時(shí)時(shí)鐘系統(tǒng)存儲(chǔ)設(shè)備,遠(yuǎn)程溫度傳感器和I / O端口擴(kuò)展器是慢速外圍設(shè)備的一些示例。

兼容I2C的兩線式接口是一種強(qiáng)大的機(jī)制,可用于將微控制器或微處理器與低速外圍設(shè)備接口,例如具有集成模數(shù)轉(zhuǎn)換器ADC)的外圍設(shè)備。通過(guò)該總線進(jìn)行通信的最基本形式(即一次向/從從寄存器寫入/讀取單個(gè)字節(jié))非常簡(jiǎn)單。但是,為簡(jiǎn)單起見,將自己限制在這種方法上存在一些陷阱。

通過(guò)1字節(jié)通道傳輸2字節(jié)數(shù)據(jù)

與其他任何與外圍設(shè)備(尤其是傳感器)的數(shù)字接口一樣,我們需要從設(shè)備的內(nèi)部寄存器中讀取正確的數(shù)據(jù)。當(dāng)寄存器的數(shù)據(jù)在讀取過(guò)程中發(fā)生變化時(shí),這一點(diǎn)尤其重要。如果在數(shù)據(jù)傳輸時(shí)ADC運(yùn)行其轉(zhuǎn)換或更新寄存器,則數(shù)據(jù)可能會(huì)發(fā)生變化。許多設(shè)備具有內(nèi)部緩沖區(qū)(通常不能從外部訪問(wèn)),該緩沖區(qū)包含轉(zhuǎn)換的最新結(jié)果。當(dāng)沒有I2C活動(dòng)時(shí),設(shè)備使用新數(shù)據(jù)更新所謂的“客戶可訪問(wèn)”寄存器。

I2C協(xié)議一次傳輸1個(gè)字節(jié)的數(shù)據(jù)。因此,如果感興趣的總量數(shù)據(jù)長(zhǎng)于8位并且傳輸處理不正確,則可能會(huì)出現(xiàn)問(wèn)題。例如,MAX44000的環(huán)境光傳感器(ALS)數(shù)據(jù)寄存器最多可包含14位數(shù)據(jù)(加上1位表示溢出,這意味著應(yīng)增加計(jì)數(shù)/照度設(shè)置)。

我們無(wú)法直接通過(guò)I2C讀取所有ALSDATA [13:0],因此我們必須首先讀取寄存器0x04的內(nèi)容,然后讀取寄存器0x05的內(nèi)容,并將數(shù)據(jù)連接到至少一個(gè)16位寄存器中。但是,我們必須注意如何讀取此數(shù)據(jù)。可以簡(jiǎn)單地執(zhí)行兩個(gè)以STOP(P)條件終止的單次讀取,如圖1所示。

pIYBAGB_u9aAex7SAAAdMdS59uw910.png

這種方法有一個(gè)致命的缺陷。具體來(lái)說(shuō),發(fā)送STOP條件會(huì)向器件發(fā)出信號(hào),要求其返回以更新“客戶可見”寄存器。因此,從寄存器0x04獲取數(shù)據(jù)后,實(shí)際上14位數(shù)據(jù)可以在讀取寄存器0x05之前進(jìn)行更新。在某些情況下,此缺陷可能會(huì)造成災(zāi)難性的后果。

一個(gè)例子是,如果光照水平在一定水平,MAX44000環(huán)境光傳感器處于10位,12位或14位模式。假設(shè)電平徘徊在某個(gè)區(qū)域內(nèi),則寄存器0x04和0x05中的14位計(jì)數(shù)總計(jì)為255或256,這可能是由于光線緩慢增加或少量噪聲引起的??紤]圖2所示表中的三種情況。

o4YBAGB_u-KAberfAABWLVjuLOg334.png

單字節(jié)讀取。

在最后兩種情況下,我們讀取0或511,而不是讀取255或256。這是一個(gè)很大的問(wèn)題。發(fā)生這種情況的原因是在發(fā)送STOP條件之后,在第一次讀取和第二次讀取之間更新了寄存器0x04和0x05中的數(shù)據(jù)。在第一種有問(wèn)題的情況下,正確讀取了第一個(gè)字節(jié)。但是到讀取第二個(gè)字節(jié)時(shí),數(shù)據(jù)讀取的總數(shù)為256,其中最低字節(jié)為零。因此,我們從該設(shè)備獲得零讀數(shù)。在第二個(gè)有問(wèn)題的情況下,數(shù)據(jù)也總計(jì)為256個(gè)計(jì)數(shù)。由于在發(fā)送STOP條件之后但在讀取第二個(gè)字節(jié)之前數(shù)據(jù)減少了一個(gè)計(jì)數(shù),因此該計(jì)數(shù)似乎變?yōu)?11個(gè)計(jì)數(shù)。有關(guān)在多次讀取中發(fā)生這種情況的次數(shù)的示例,請(qǐng)參見圖3。

pIYBAGB_u_GAfbomAAAe7_MfcV4018.png

單字節(jié)的實(shí)際讀數(shù)可讀取許多樣本。

如圖4所示,通過(guò)一次讀取2個(gè)字節(jié)可以輕松避免此問(wèn)題,這是通過(guò)在讀取第一個(gè)數(shù)據(jù)字節(jié)之后發(fā)送REPEATED START而不是STOP條件來(lái)完成的,并且非常容易實(shí)現(xiàn)。通過(guò)讀取2個(gè)字節(jié),即使我們?cè)趦蓚€(gè)器件之間總體上發(fā)送了相同數(shù)量的位,也阻止了該部分執(zhí)行更多的I2C寄存器更新。

o4YBAGB_u_6AbDSJAAAUjZ-GVh8882.png

2字節(jié)讀取的插圖。

上面的例子適用于MAX44000和MAX44009,它們?cè)谶M(jìn)行多次讀取時(shí)不會(huì)自動(dòng)遞增寄存器指針。您的設(shè)備的行為可能有所不同,但是原理始終相同。這很容易擴(kuò)展為讀取N個(gè)字節(jié)。

編輯:hfy

聲明:本文內(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)注

    48

    文章

    7846

    瀏覽量

    153416
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5402

    瀏覽量

    122869
  • 模數(shù)轉(zhuǎn)換器

    關(guān)注

    26

    文章

    3276

    瀏覽量

    127787
  • 時(shí)鐘系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    104

    瀏覽量

    12045
收藏 人收藏

    評(píng)論

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

    iic協(xié)議的數(shù)據(jù)傳輸速率標(biāo)準(zhǔn)

    I2C協(xié)議定義了多種數(shù)據(jù)傳輸速率標(biāo)準(zhǔn),以適應(yīng)不同的應(yīng)用需求。以下是I2C協(xié)議的主要數(shù)據(jù)傳輸速率標(biāo)準(zhǔn): 標(biāo)準(zhǔn)模式(Standard-mode) :速率為100 kbps(每秒100,00
    的頭像 發(fā)表于 02-05 13:40 ?1465次閱讀

    I2C總線數(shù)據(jù)傳輸速度要求

    Semiconductors)在1980年代初期開發(fā)。I2C總線因其簡(jiǎn)單性和靈活性而被廣泛應(yīng)用于各種電子設(shè)備中,如傳感器、顯示器、存儲(chǔ)器等。 I2C總線數(shù)據(jù)傳輸速度 I2C總線的
    的頭像 發(fā)表于 01-17 15:15 ?1448次閱讀

    ADS1293在中斷采用Stream mode讀取數(shù)據(jù)數(shù)據(jù)字節(jié)數(shù)不對(duì)是哪里出了問(wèn)題?

    mode讀取數(shù)據(jù)(按照datasheet33頁(yè)的介紹做的),發(fā)現(xiàn)數(shù)據(jù)字節(jié)數(shù)不對(duì),后用示波器測(cè)量此時(shí)DRDYB管腳變成200Hz方波了; 3、使用的配置DRDYB_SRC_REG(地址0x27)的值是0x08, CH_CNFG_
    發(fā)表于 01-13 08:32

    MPU數(shù)據(jù)傳輸協(xié)議詳解

    在現(xiàn)代電子系統(tǒng)中,微控制器(MPU)扮演著核心角色,負(fù)責(zé)處理各種任務(wù)和數(shù)據(jù)。為了實(shí)現(xiàn)這些功能,MPU需要與其他設(shè)備進(jìn)行數(shù)據(jù)交換。數(shù)據(jù)傳輸協(xié)議就是規(guī)定這些數(shù)據(jù)交換如何進(jìn)行的一套規(guī)則。 M
    的頭像 發(fā)表于 01-08 09:37 ?638次閱讀

    ptp對(duì)實(shí)時(shí)數(shù)據(jù)傳輸的影響

    在現(xiàn)代通信技術(shù)中,點(diǎn)對(duì)點(diǎn)(P2P)網(wǎng)絡(luò)已經(jīng)成為數(shù)據(jù)傳輸的一種重要方式。P2P網(wǎng)絡(luò)允許網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)既可以作為客戶端也可以作為服務(wù)器,直接進(jìn)行數(shù)據(jù)交換。這種去中心化的網(wǎng)絡(luò)結(jié)構(gòu)對(duì)于實(shí)時(shí)數(shù)據(jù)傳輸有著深遠(yuǎn)
    的頭像 發(fā)表于 12-29 09:53 ?476次閱讀

    RS232接口數(shù)據(jù)傳輸穩(wěn)定性

    RS232接口數(shù)據(jù)傳輸的穩(wěn)定性是多個(gè)因素綜合作用的結(jié)果。以下是對(duì)RS232接口數(shù)據(jù)傳輸穩(wěn)定性的分析: 一、RS232接口的基本特性 RS23
    的頭像 發(fā)表于 12-18 17:56 ?1088次閱讀

    Micro USB接口數(shù)據(jù)傳輸速率分析

    Micro USB接口數(shù)據(jù)傳輸速率分析,可以從以下幾個(gè)方面進(jìn)行: 一、Micro USB版本與傳輸速率 Micro USB接口存在不同的版本,主要包括Micro USB 2.0和Mi
    的頭像 發(fā)表于 11-27 10:05 ?1610次閱讀

    波特率對(duì)實(shí)時(shí)數(shù)據(jù)傳輸的影響

    在現(xiàn)代通信系統(tǒng)中,實(shí)時(shí)數(shù)據(jù)傳輸是至關(guān)重要的。無(wú)論是工業(yè)自動(dòng)化、遠(yuǎn)程醫(yī)療、在線游戲還是物聯(lián)網(wǎng)(IoT)應(yīng)用,都需要快速、可靠的數(shù)據(jù)傳輸來(lái)保證系統(tǒng)的正常運(yùn)行和用戶體驗(yàn)。 波特率的定義 波特率,也稱為符號(hào)
    的頭像 發(fā)表于 11-22 10:03 ?924次閱讀

    LORA模塊的數(shù)據(jù)傳輸速率

    LoRa(Long Range)是一種用于物聯(lián)網(wǎng)(IoT)應(yīng)用的低功耗廣域網(wǎng)(LPWAN)技術(shù)。它以其長(zhǎng)距離通信能力和低功耗特性而聞名。LoRa模塊的數(shù)據(jù)傳輸速率可以根據(jù)不同的配置和地區(qū)的規(guī)定
    的頭像 發(fā)表于 10-31 17:03 ?2157次閱讀

    是德萬(wàn)用表USB 接口數(shù)據(jù)傳輸

    在現(xiàn)代電子測(cè)量領(lǐng)域,數(shù)據(jù)傳輸界面技術(shù)的發(fā)展日新月異,已成為電子測(cè)量設(shè)備中不可或缺的一部分。是德公司作為電子測(cè)量領(lǐng)域的領(lǐng)導(dǎo)者,其萬(wàn)用表產(chǎn)品也配備了多種數(shù)據(jù)傳輸接口,包括USB接口。USB
    的頭像 發(fā)表于 10-22 16:56 ?591次閱讀
    是德萬(wàn)用表USB <b class='flag-5'>接口</b><b class='flag-5'>數(shù)據(jù)傳輸</b>

    網(wǎng)絡(luò)數(shù)據(jù)傳輸速率的單位是什么

    網(wǎng)絡(luò)數(shù)據(jù)傳輸速率的單位是 bps(bit per second) ,即比特每秒,也可以表示為b/s或bit/s。它表示的是每秒鐘傳輸的二進(jìn)制數(shù)的位數(shù)。比特(bit)是計(jì)算機(jī)中數(shù)據(jù)量的單位,也是信息論
    的頭像 發(fā)表于 10-12 10:20 ?3504次閱讀

    以太網(wǎng)接口數(shù)據(jù)傳輸原理詳解

    以太網(wǎng)接口作為計(jì)算機(jī)網(wǎng)絡(luò)中的關(guān)鍵組成部分,承擔(dān)著數(shù)據(jù)傳輸的重要職責(zé)。在了解以太網(wǎng)接口數(shù)據(jù)傳輸原理之前,我們首先需要明確以太網(wǎng)的基本概念和工作機(jī)制。以太網(wǎng)是一種廣泛應(yīng)用的局域網(wǎng)技術(shù),它
    的頭像 發(fā)表于 05-29 16:47 ?2498次閱讀

    Android14在BLE中,當(dāng)MTU超過(guò)517字節(jié)時(shí)應(yīng)如何處理數(shù)據(jù)傳輸?

    /behavior-changes-all#mtu-set-to-517 我們?cè)趹?yīng)用更改后進(jìn)行了測(cè)試,但遇到了無(wú)法傳輸超過(guò) 512 字節(jié)數(shù)據(jù)的問(wèn)題。 由于客戶的工作數(shù)據(jù)通常超過(guò) 512 字節(jié)
    發(fā)表于 05-28 06:41

    如何在AURIX TC375控制器中向DFLASH存儲(chǔ)器寫入單字節(jié)數(shù)據(jù)

    我可以使用頁(yè)面地址在 DFLASH 存儲(chǔ)器中寫入 8 字節(jié)數(shù)據(jù)。 我需要在任意內(nèi)存地址寫入一個(gè)字節(jié)數(shù)據(jù)。 是否可以在任何內(nèi)存地址位置寫入單字節(jié)數(shù)據(jù)?
    發(fā)表于 05-27 07:03

    3針M5公頭接口速度和數(shù)據(jù)傳輸效率怎樣

      德索工程師說(shuō)道在電子設(shè)備和系統(tǒng)的連接與通信中,接口的速度和數(shù)據(jù)傳輸效率是衡量其性能的重要指標(biāo)。3針M5公頭接口作為一種常見的連接標(biāo)準(zhǔn),其速度與數(shù)據(jù)傳輸效率直接影響到設(shè)備的性能和使用
    的頭像 發(fā)表于 05-13 17:46 ?580次閱讀
    3針M5公頭<b class='flag-5'>接口</b>速度和<b class='flag-5'>數(shù)據(jù)傳輸</b>效率怎樣