I2C通訊協議具有運行可靠、成本低廉、占用IO資源少等優點,廣泛應用于多級通訊中;中穎芯片硬件TWI(兩線串行接口)接口完全兼容I2C總線協議。
中穎芯片硬件TWI支持功能:
開漏輸出,通訊電平不受VDD影響;
支持主機模式和從機模式;
各個模式均支持發送和接受;
支持多級通訊的仲裁功能;
具有SCL低電平/高電平超時判斷;
器件地址可編程,帶多個地址屏蔽位,支持廣播功能;
支持標準模式(100K)和快速模式(400K);
支持Clock Stretch功能
支持內部上拉電阻功能
中穎芯片硬件TWI注意事項:
硬件TWI在傳輸ACK/NACK響應信號時,在SCL由低跳高后產生TWI中斷標志(TWINT),并在SCL由高跳低時拉低SCL,在TWI中斷標志清除后釋放SCL;
TWI中斷標志(TWINT)在被清除前,TWI通訊會暫停,應用程序必須在TWI中斷標志(TWINT)清除前決定后續的動作;
硬件TWI規定通訊過程中SCL總線維持高電平超過TFREE定義的時鐘個數時為“空閑”狀態,釋放總線;此功能無法關閉。
硬件TWI規定參與傳輸的所有器件,將時鐘線SCL維持低電平超過CNT定義的時鐘個數時為“總線超時”,釋放總線;此功能無法關閉。
硬件TWI通訊注意事項:
TWI中斷標志(TWINT)置起后,軟件配置TWI即將執行的動作(如發送數據、回應ACK/NACK、發送STO/清除STA信號等)后方可清除TWI中斷標志(TWINT);
硬件TWI作為從機時,在每次通訊開始前,提前將應答信號準備好(AA=1);
為了增強通訊抗干擾能力,程序中建議增加SCL高電平超時判斷、總線超時判斷、特殊狀態機(00H)判斷;
硬件TWI操作流程示意圖:
硬件TWI出錯案例:
硬件TWI通信錯誤(從機)
原因:外界存在干擾。
當從機TWI狀態機為B8時,從機繼續向主機發送數據,且準備NACK信號,此時若外接干擾造成從機識別主機回傳的信號非正常信號,則從機狀態機會跳到非正常狀態機中,此時程序中未對應答信號做處理,造成當此輪通訊結束后,在開始下一輪通訊時,從機無ACK信號造成無法響應主機通訊。
TWI默認開啟SCK高電平超時功能,待發送完最后一個字節,此時AA清零;此時若存在因主機通訊或干擾造成SCK高電平超時時,TWI模塊會自動釋放總線,此時AA仍然保持為之前的NACK狀態,造成在下一輪通訊時無法響應主機通訊,通訊異常;
改善方案: 在傳輸完成最后一個字節數據后AA置位,這樣即使發生異常情況,待下一組時序到來時,從機仍能夠正常響應主機;在程序其他異常狀態下置位AA,即使通信受到干擾,跳轉到異常狀態,仍能進行下一次的通訊響應。下圖列出TWI中斷代碼改善前后的代碼。
圖1改善前
圖2改善后
審核編輯:劉清
-
TWI
+關注
關注
0文章
7瀏覽量
8072 -
SCL
+關注
關注
1文章
239瀏覽量
17079 -
I2C接口
+關注
關注
1文章
125瀏覽量
25202 -
VDD
+關注
關注
1文章
312瀏覽量
33221
原文標題:硬件TWI使用說明及案例
文章出處:【微信號:SINO_25181447,微信公眾號:中穎電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論