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

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

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

硬件TWI使用及案例說明

中穎電子 ? 來源:中穎電子 ? 2023-02-21 17:41 ? 次閱讀

I2C通訊協(xié)議具有運行可靠、成本低廉、占用IO資源少等優(yōu)點,廣泛應(yīng)用于多級通訊中;中穎芯片硬件TWI(兩線串行接口)接口完全兼容I2C總線協(xié)議。

中穎芯片硬件TWI支持功能:

開漏輸出,通訊電平不受VDD影響;

支持主機(jī)模式和從機(jī)模式;

各個模式均支持發(fā)送和接受;

支持多級通訊的仲裁功能;

具有SCL低電平/高電平超時判斷;

器件地址可編程,帶多個地址屏蔽位,支持廣播功能;

支持標(biāo)準(zhǔn)模式(100K)和快速模式(400K);

支持Clock Stretch功能

支持內(nèi)部上拉電阻功能

中穎芯片硬件TWI注意事項:

硬件TWI在傳輸ACK/NACK響應(yīng)信號時,在SCL由低跳高后產(chǎn)生TWI中斷標(biāo)志(TWINT),并在SCL由高跳低時拉低SCL,在TWI中斷標(biāo)志清除后釋放SCL;

TWI中斷標(biāo)志(TWINT)在被清除前,TWI通訊會暫停,應(yīng)用程序必須在TWI中斷標(biāo)志(TWINT)清除前決定后續(xù)的動作;

硬件TWI規(guī)定通訊過程中SCL總線維持高電平超過TFREE定義的時鐘個數(shù)時為“空閑”狀態(tài),釋放總線;此功能無法關(guān)閉。

硬件TWI規(guī)定參與傳輸?shù)乃衅骷瑢r鐘線SCL維持低電平超過CNT定義的時鐘個數(shù)時為“總線超時”,釋放總線;此功能無法關(guān)閉。

硬件TWI通訊注意事項:

TWI中斷標(biāo)志(TWINT)置起后,軟件配置TWI即將執(zhí)行的動作(如發(fā)送數(shù)據(jù)、回應(yīng)ACK/NACK、發(fā)送STO/清除STA信號等)后方可清除TWI中斷標(biāo)志(TWINT);

硬件TWI作為從機(jī)時,在每次通訊開始前,提前將應(yīng)答信號準(zhǔn)備好(AA=1);

為了增強(qiáng)通訊抗干擾能力,程序中建議增加SCL高電平超時判斷、總線超時判斷、特殊狀態(tài)機(jī)(00H)判斷;

硬件TWI操作流程示意圖:

9bb2ad56-b1cb-11ed-bfe3-dac502259ad0.png

硬件TWI出錯案例:

硬件TWI通信錯誤(從機(jī))

原因:外界存在干擾。

當(dāng)從機(jī)TWI狀態(tài)機(jī)為B8時,從機(jī)繼續(xù)向主機(jī)發(fā)送數(shù)據(jù),且準(zhǔn)備NACK信號,此時若外接干擾造成從機(jī)識別主機(jī)回傳的信號非正常信號,則從機(jī)狀態(tài)機(jī)會跳到非正常狀態(tài)機(jī)中,此時程序中未對應(yīng)答信號做處理,造成當(dāng)此輪通訊結(jié)束后,在開始下一輪通訊時,從機(jī)無ACK信號造成無法響應(yīng)主機(jī)通訊。

TWI默認(rèn)開啟SCK高電平超時功能,待發(fā)送完最后一個字節(jié),此時AA清零;此時若存在因主機(jī)通訊或干擾造成SCK高電平超時時,TWI模塊會自動釋放總線,此時AA仍然保持為之前的NACK狀態(tài),造成在下一輪通訊時無法響應(yīng)主機(jī)通訊,通訊異常;

改善方案: 在傳輸完成最后一個字節(jié)數(shù)據(jù)后AA置位,這樣即使發(fā)生異常情況,待下一組時序到來時,從機(jī)仍能夠正常響應(yīng)主機(jī);在程序其他異常狀態(tài)下置位AA,即使通信受到干擾,跳轉(zhuǎn)到異常狀態(tài),仍能進(jìn)行下一次的通訊響應(yīng)。下圖列出TWI中斷代碼改善前后的代碼。

9bcd35ae-b1cb-11ed-bfe3-dac502259ad0.png

圖1改善前

9be5d212-b1cb-11ed-bfe3-dac502259ad0.png

圖2改善后





審核編輯:劉清

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

    關(guān)注

    0

    文章

    7

    瀏覽量

    8035
  • SCL
    SCL
    +關(guān)注

    關(guān)注

    1

    文章

    239

    瀏覽量

    16991
  • I2C接口
    +關(guān)注

    關(guān)注

    1

    文章

    124

    瀏覽量

    25020
  • VDD
    VDD
    +關(guān)注

    關(guān)注

    1

    文章

    310

    瀏覽量

    32605

原文標(biāo)題:硬件TWI使用說明及案例

文章出處:【微信號:SINO_25181447,微信公眾號:中穎電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    全志R128 SDK HAL 模塊開發(fā)指南——TWI

    /hal_twi.c /* hal層接口代碼 */ |??include/hal/sunxi_hal_twi.h /* 頭文件 */ 模塊接口說明 頭文件: #include <
    發(fā)表于 04-10 16:58

    【LeMaker Guitar試用體驗】9.Lemuntu系統(tǒng)twi接口分析1

    沒有類似下圖這樣明確的開始和停止條件說明。也沒有下面很明確的地址尋址說明.數(shù)據(jù)傳輸?shù)臅r序圖倒是有一個下面是3個twi接口的地址和每個twi內(nèi)部寄存器
    發(fā)表于 02-24 13:37

    TWI為什么會分出800KHz的工作頻率呢

    修改了uart的時鐘源為50M,twi也會被修改為50M。dts中給某一條twi總線設(shè)置的時鐘頻率為400k,但是實際測得該twi的時鐘頻率為833kHz。twi的工作頻率會根據(jù)時鐘源
    發(fā)表于 12-29 06:25

    Arduino/8266 I2C無法找到與twi.h一起使用的twi.cpp怎么解決?

    我正在嘗試深入了解 Arduino/8266 I2C 通信的核心,我發(fā)現(xiàn)了 8266 的特定版本: Wire.h Wire.ccp twi.h 但一直無法找到與 twi.h 一起使用的 twi.cpp。通常它與 .h 文件位
    發(fā)表于 05-04 06:29

    AVR TWI讀寫范例程序(AT24C02)

    本程序簡單的示范了如何使用ATMEGA16的TWI 讀寫AT24C02 IIC EEPROM    TWI協(xié)議      (即IIC協(xié)議,請認(rèn)真參考IIC協(xié)議的內(nèi)容,否則根本就不能掌握)&nb
    發(fā)表于 10-31 21:21 ?257次下載

    MN1872432TWI 微處理器

    MN1872432TWI 微處理器
    發(fā)表于 04-12 14:06 ?26次下載
    MN1872432<b class='flag-5'>TWI</b> 微處理器

    AVR單片機(jī)的TWI總線的原理及應(yīng)用

      AVR系列的單片機(jī)內(nèi)部集成了TWI(Two-wire SerialInterface)總線。該總線具有I2C總線的特點,即接線簡單,外部硬件只需兩個上拉電阻,使用時鐘線SCL和數(shù)據(jù)線SDA就可以將128個不同的設(shè)
    發(fā)表于 07-29 10:40 ?2877次閱讀
    AVR單片機(jī)的<b class='flag-5'>TWI</b>總線的原理及應(yīng)用

    基于AVR單片機(jī)的TWI總線原理分析(下)

    AVR單片機(jī)片內(nèi)TWI總線的原理和使用
    的頭像 發(fā)表于 07-04 10:51 ?3556次閱讀

    AVR單片機(jī):關(guān)于片內(nèi)TWI總線的原理和使用介紹(1)

    AVR單片機(jī)片內(nèi)TWI總線的原理和使用
    的頭像 發(fā)表于 07-11 00:27 ?3207次閱讀
    AVR單片機(jī):關(guān)于片內(nèi)<b class='flag-5'>TWI</b>總線的原理和使用介紹(1)

    AVR單片機(jī)的TWI總線的原理是怎樣的有什么樣的應(yīng)用

    在簡要對比TWI 總線與I2C 總線的基礎(chǔ)上,詳細(xì)介紹TWI 總線的內(nèi)部模塊、工作時序和工作模式,并給出一個編程實例加以說明,對TWI 總線和傳統(tǒng)的I2C 總線的正確區(qū)分及使用具有現(xiàn)實
    發(fā)表于 10-26 14:34 ?1次下載
    AVR單片機(jī)的<b class='flag-5'>TWI</b>總線的原理是怎樣的有什么樣的應(yīng)用

    TWI模塊作為I2C主器件

    在于它可以使用相同的總線和仲裁來尋址最多 128 個器件,并且總線上可以有多個主器件。? 大多數(shù)Microchip AVR器件中都包含一個硬件 TWI 模塊。? 今天推薦的應(yīng)用筆記以全功能驅(qū)動程序的形式
    的頭像 發(fā)表于 02-08 09:50 ?2208次閱讀

    AVR315:將TWI模塊作為I2C主器件

    雙線串行接口(Two-Wire Interface,TWI)兼容 Philips I2C 協(xié)議。該總線能夠在電子設(shè)備中的集成電路之間實現(xiàn)簡單、可靠且經(jīng)濟(jì)高效的通信。TWI 總線的優(yōu)勢在于它可以使用相同的總線和仲裁來尋址最多 128 個器件,并且總線上可以有多個主器件。
    發(fā)表于 03-31 10:38 ?4次下載
    AVR315:將<b class='flag-5'>TWI</b>模塊作為I2C主器件

    中穎芯片硬件TWI支持功能

    硬件TWI在傳輸ACK/NACK響應(yīng)信號時,在SCL由低跳高后產(chǎn)生TWI中斷標(biāo)志(TWINT),并在SCL由高跳低時拉低SCL,在TWI中斷標(biāo)志清除后釋放SCL;
    發(fā)表于 07-14 16:12 ?1472次閱讀

    Linux TWI開發(fā)指南

    介紹 Sunxi 平臺上 TWI 驅(qū)動接口與調(diào)試方法,為 TWI 模塊開發(fā)提供參考。
    的頭像 發(fā)表于 03-06 10:24 ?1376次閱讀
    Linux <b class='flag-5'>TWI</b>開發(fā)指南

    什么是TWI 如何為I2C通信配置TWI

    電子發(fā)燒友網(wǎng)站提供《什么是TWI 如何為I2C通信配置TWI.pdf》資料免費下載
    發(fā)表于 09-25 10:07 ?0次下載
    什么是<b class='flag-5'>TWI</b> 如何為I2C通信配置<b class='flag-5'>TWI</b>