• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      I2C總線設計技術及其死鎖的探討

      2018-08-06 05:52:52李蔭瓏丘珊珊
      家電科技 2018年7期
      關鍵詞:低電平高電平時序

      李蔭瓏 丘珊珊

      LI Yinlong QIU Shanshan

      珠海格力電器股份有限公司 廣東珠海 519070

      Gree Electric Appliances, Inc. of Zhuhai Zhuhai 519070

      1 I2C總線概述

      I2C總線是PHILIPS公司推出的一種在電子通信控制領域常用的串行通信總線,是一種簡單、雙向通信、二線制、同步的串行總線,具有連接線少、控制簡單、通信速率高等優(yōu)點。用數據線SDA和時鐘線SCL構成通信線路,各器件可并聯到總線上實現數據收發(fā),器件間彼此獨立,通過唯一的總線地址區(qū)分。

      除了發(fā)送器和接收器外,在執(zhí)行數據傳輸時,器件也可以被看作主器件(主機)或從器件(從機)。主器件是用于啟動總線傳送數據,并產生時鐘的器件,此時任何被尋址的器件均被認為是從器件。在總線上主和從、發(fā)和收的關系取決于此時的數據傳送方向,而不是恒定的。如果主機要發(fā)送數據給從器件,則主機首先尋址從器件,然后主動發(fā)送數據至從器件,最后由主機終止數據傳送;如果主機要接收從器件的數據,首先由主器件尋址從器件,然后主機接收從器件發(fā)送的數據,最后由主機終止接收過程。在這種情況下,主機負責產生定時時鐘和終止數據傳送。[1]

      I2C總線具有簡單性和有效性,只要求2條雙向通信線路SDA(串行數據)和SCL(串行時鐘)。I2C總線支持多主控, 其中任何能夠進行發(fā)送和接收的器件都可以成為主機,一個主控能夠控制信號的傳輸和時鐘頻率,但在任何時間點上只能有一個主控。連接到相同總線上的器件數量受總線最大電容400pF限制,I2C總線上的串行8位雙向數據傳輸速率在標準模式下可達100kbit/s,快速模式下可達400kbit/s,高速模式下可達3.4Mbit/s。

      2 I2C總線接口設計

      I2C總線是兩條雙向的串行線,其中一條是數據串行線SDA,另一條是時鐘串行線SCL。時鐘串行線SCL用于產生時鐘脈沖,數據串行線SDA通過SCL產生的時鐘脈沖進行讀取或是寫入數據。I2C總線上可以連接多個設備,每一個設備的數據串行線SDA的端口連接到一塊,且每一個設備的時鐘串行線SCL的端口連接到一塊。通過由數據串行線SDA和時鐘串行線SCL構成的I2C總線可以發(fā)送數據到總線上,以及接收總線上的數據。I2C總線接口應用示意圖如圖1所示。

      I2C總線上其SDA線以及SCL線的接口電路均是雙向的,SDA線向總線上發(fā)送數據,也可在總線上讀取數據,I2C總線上的設備可以分為主機和從機,其作為總線上的主機還是從機,主要取決于其在總線上所擔任的角色。主機點名從機,首先需要控制SCL以產生時鐘脈沖,并讀取或是發(fā)送數據到總線SDA上,以完成主機的工作,作為總線上的從機,需要回復主機的點名以及發(fā)送數據、應答ACK信號或是輸出低電平到總線上以延長主機的SCL信號,完成從機的工作。

      I2C總線的接口均為集電極開路(OC)或漏極開路(OD)的形式輸出,其主要是為防止I2C總線上的信號混亂,I2C總線上的輸出端沒有安裝上拉電阻時,只能輸出低電平,如果需要保證I2C總線正常工作,就需要在I2C總線的輸出端加上拉電阻R1和R2。圖1中,所有I2C設備的SDA或是SCL的端口連接到一塊,如果任意一個I2C設備輸出低電平都將控制I2C總線(即總線處于“忙”狀態(tài)),即各I2C設備的時鐘串行線SCL是線“與”的關系,各I2C設備的數據串行線SDA也是線“與”的關系。

      I2C總線主要有以下幾個方面的特點:[2]

      (1)總線驅動能力強。I2C總線外圍擴展設備都是CMOS型的,功率極低,因而總線上擴展的節(jié)點數不是由電流負載能力決定的,而是由電容負載確定的。通常I2C總線負載能力為400PF,據此可以計算出總線長度及所帶設備的數量,總線上擴展的設備數量主要受設備地址的限制。

      圖1 I2C總線應用示意圖

      圖2 I2C總線數據有效性圖示

      圖3 I2C總線起始時序及停止時序圖

      (2)任何一個I2C總線接口的外圍設備,不論其功能差別有多大,都是通過數據串行線SDA和時鐘串行線SCL連接到I2C總線上。應用者只需要將I2C設備的SDA口和SCL口連接至I2C總線上,對設備進行單獨電路設計便可,給使用者帶了便利性,也簡化了整個I2C系統(tǒng)設計的復雜性,可提高整個I2C系統(tǒng)的抗干擾能力,利于EMC實驗等。

      (3)只有一個I2C主機的應用系統(tǒng)當中,每一個I2C設備都有一個與其他I2C設備不一樣的設備地址,從機設備之間是互不干涉的,其只與主機進行通信,不與其他從機設備進行數據通信,主機與各從機之間的通信是通過I2C設備的獨一無二的設備地址進行通信的。

      (4)I2C總線其在制定時便規(guī)定相應的規(guī)范,如I2C總線的通信時序、通信接口、數據/信號傳輸的特征、定義等等,此類規(guī)范決定了應用者在編寫I2C總線程序時的一致性。

      3 I2C總線的時序

      I2C為同步串行通訊方式, SDA為數據信號(數據口)、SCL為時鐘信號(高電平有效)。SCL作為同步信號, 因此I2C具有非常嚴格的時序關系。I2C總線進行數據傳輸時,時鐘信號SCL為高電平期間,數據信號SDA上的數據必須保持穩(wěn)定,只有在時鐘信號SCL為低電平期間,數據信號SDA上的高電平或低電平狀態(tài)才允許變化,如圖2所示。I2C總線時序包括數據傳送的起始與停止時序、數據傳送時序。

      I2C總線數據通信需要有起始位(S)和停止位(P)。建立起始信號(S)之前,I2C總線必須處于空閑狀態(tài),在時鐘線SCL高電平期間,數據線SDA由高電平向低電平跳變,此定義為I2C總線起始信號(S),代表開始傳送數據,起始信號是由主機主動建立的,從機無法產生該信號。主機需要產生停止信號以結束通信時,其在時鐘線SCL高電平期間,將數據線SDA由低電平向高電平跳變,此便產生停止信號(P),代表結束向總線傳送數據,此停止信號(P)是由主機主動建立的,從機無法產生該信號,建立停止信號后,由主機控制的I2C總線將被釋放至空閑狀態(tài),其它I2C設備可根據功能進行控制總線。起始時序及停止時序如圖3所示。

      I2C總線進行傳輸數據時,規(guī)定了一定的通信時序,但這種時序并不是完全規(guī)定死的,它可以根據主機、從機特定的功能要求進行改動,但整體的時序特性、通信特征是不變的(如起始位、停止位)。如可根據特定的功能規(guī)定協(xié)議,設備地址、寄存器地址的設置,以及是否可進行頁讀/寫操作等。I2C總線在傳送數據時,是一個一個數據位傳送的,每一個數據位都有一個時鐘脈沖相對應。在總線空閑狀態(tài)下,主機控制總線,產生起始信號(S),緊接著便需要傳送設備地址(即點名從機),設備地址的高七位一般為從機的地址位,最低位為讀操作(1)位(或寫操作位(0))。主機發(fā)送完設備地址后,從機需要對號進行回復(被點名的從機進行回復,未被點名的從機不回復),從機向主機發(fā)送應答ACK信號(低電平),主機在接受到應答ACK信號后,根據實際功能確定是否進一步操作,如需要繼續(xù)通信傳輸數據,則主機進行傳送或是接收數據,直到主機產生停止信號(P)結束該通信,并釋放I2C總線。完整I2C總線數據傳輸如圖4所示。另外,I2C總線協(xié)議中主從機必須根據自己的要求約定好通信規(guī)則:command的定義和位置、address的位數和位置,以便可以正常通信。

      4 I2C總線死鎖以及其解決辦法

      4.1 I2C總線死鎖的原因

      各I2C設備的時鐘串行線SCL是線“與”的關系,各I2C設備的數據串行線SDA也是線“與”的關系。在正常情況下,I2C總線協(xié)議能保證總線正常的讀/寫操作,但是只要總線上任何一個設備拉低了數據串行線SDA或者時鐘線串行SCL(控制總線),其他設備都無法拉高它們,如果有I2C設備不釋放總線,則整個總線上的通信都被暫停,總線被占用。

      在使用I2C總線時,產生其死鎖最常見的情況便是主機在通信過程中產生了復位。在I2C通信過程中,如果主機在等待從機發(fā)送應答ACK信號期間,從機發(fā)送低電平的ACK信號,但此時I2C通信的時序被打亂(如I2C總線通信時被外界干擾或是主機復位從機未復位),從而導致時鐘線SCL重新拉高至高點平,此時I2C總線的狀態(tài)為從機在等待主機將時鐘線SCL從高拉到低電平,以停止發(fā)送ACK應答信號,而主機檢測到數據線為低電平,認為總線被占用,等待總線被釋放。此情況下,無論是主機還是從機,均在等待,使得I2C總線處于死鎖狀態(tài),無法控制I2C總線。I2C總線上的主機在進行讀取數據時,也會產生同樣的狀況,導致總線處于死鎖狀態(tài)。以上情況是較為常見的使用軟件I2C時,導致I2C處于死鎖的狀態(tài),此外,如果芯片I2C的中斷服務程序被屏蔽,其中斷服務函數中有不必要的死循環(huán)以及芯片I2C系統(tǒng)被禁止等均有可能導致I2C總線進入死鎖狀態(tài),即I2C總線被占用(總線忙)狀態(tài)。

      4.2 I2C總線死鎖的解決辦法

      圖5 I2C總線死鎖恢復邏輯框圖

      I2C總線死鎖主要出現于采用硬件I2C,如需要解決I2C死鎖問題,最好用模擬I2C實現;或者將從機的電源設計為可控,如果在I2C總線發(fā)生死鎖狀態(tài)的時候,可以將從機進行復位;或者可以在從機的程序中加入監(jiān)測功能,如果總線長時間被拉低則釋放對總線的控制;如采用硬件I2C,出現I2C死鎖,還可以在I2C主機中增加I2C總線死鎖狀態(tài)恢復程序,I2C總線死鎖恢復程序邏輯框圖如圖5所示。

      將硬件I2C更改為模擬I2C(軟件I2C),并模擬輸出9個連續(xù)的SCL時間脈沖信號(針對8位數據的情況),然后再產生一個停止信號,使I2C從死鎖狀態(tài)上恢復到正常狀態(tài),使總線能夠正常工作,之后延時一小段時間,再將軟件I2C口恢復到硬件I2C口。

      5 總結

      I2C總線協(xié)議非常受廣大工程師喜愛,應用也非常廣泛,在應用使用中,也會出現例如死鎖等通信問題,本文根據實際的使用主要介紹了I2C總線基本結構、接口設計及其總線數據傳輸時序,并闡述I2C總線死鎖的原因及其解決方案。

      猜你喜歡
      低電平高電平時序
      時序坐標
      數字電路中“邏輯非”的用法辨析
      一種基于FPGA的PWM防錯輸出控制電路
      基于Sentinel-2時序NDVI的麥冬識別研究
      鐵道車輛高/低電平信號智能發(fā)生器設計
      TS-03C全固態(tài)PDM中波發(fā)射機開關機控制電路原理及故障分析
      科技傳播(2019年15期)2019-08-22 08:07:44
      2017款凱迪拉克2.8L/3.0L/3.2L/3.6L車型低電平參考電壓總線電路圖
      DM 50KW中波廣播發(fā)射機欠推動故障分析
      一種毫米波放大器時序直流電源的設計
      電子制作(2016年15期)2017-01-15 13:39:08
      PDM 1kW中波廣播發(fā)射機保護電路分析
      和政县| 如东县| 丰都县| 汕头市| 宝应县| 三明市| 广河县| 鹰潭市| 汝南县| 香河县| 淳化县| 申扎县| 济源市| 邮箱| 康保县| 石阡县| 曲阳县| 文昌市| 长宁区| 新晃| 浮梁县| 和平县| 额济纳旗| 府谷县| 梁平县| 瑞丽市| 陆良县| 黄浦区| 广灵县| 石阡县| 贡觉县| 菏泽市| 巩留县| 南安市| 渭南市| 潢川县| 鄂托克旗| 上杭县| 三河市| 宁阳县| 三门峡市|