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

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

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

硬件TWI使用及案例說明

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

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

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

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

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

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

支持多級(jí)通訊的仲裁功能;

具有SCL低電平/高電平超時(shí)判斷;

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

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

支持Clock Stretch功能

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

中穎芯片硬件TWI注意事項(xiàng):

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

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

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

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

硬件TWI通訊注意事項(xiàng):

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

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

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

硬件TWI操作流程示意圖:

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

硬件TWI出錯(cuò)案例:

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

原因:外界存在干擾。

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

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

改善方案: 在傳輸完成最后一個(gè)字節(jié)數(shù)據(jù)后AA置位,這樣即使發(fā)生異常情況,待下一組時(shí)序到來時(shí),從機(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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • TWI
    TWI
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

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

    關(guān)注

    1

    文章

    239

    瀏覽量

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

    關(guān)注

    1

    文章

    125

    瀏覽量

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

    關(guān)注

    1

    文章

    312

    瀏覽量

    33230

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

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

收藏 人收藏

    評(píng)論

    相關(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試用體驗(yàn)】9.Lemuntu系統(tǒng)twi接口分析1

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

    TWI為什么會(huì)分出800KHz的工作頻率呢

    修改了uart的時(shí)鐘源為50M,twi也會(huì)被修改為50M。dts中給某一條twi總線設(shè)置的時(shí)鐘頻率為400k,但是實(shí)際測(cè)得該twi的時(shí)鐘頻率為833kHz。twi的工作頻率會(huì)根據(jù)時(shí)鐘源
    發(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é)議,請(qǐng)認(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總線的特點(diǎn),即接線簡單,外部硬件只需兩個(gè)上拉電阻,使用時(shí)鐘線SCL和數(shù)據(jù)線SDA就可以將128個(gè)不同的設(shè)
    發(fā)表于 07-29 10:40 ?2984次閱讀
    AVR單片機(jī)的<b class='flag-5'>TWI</b>總線的原理及應(yīng)用

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

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

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

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

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

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

    TWI模塊作為I2C主器件

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

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

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

    中穎芯片硬件TWI支持功能

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

    Linux TWI開發(fā)指南

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

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

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