一種iic總線接口的抗干擾方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種嵌入式系統(tǒng)中,當(dāng)IIC接口受到干擾異常后,對IIC接口進(jìn)行恢復(fù)處理使其恢復(fù)到正常狀態(tài)的方法。
【背景技術(shù)】
[0002]目前,在嵌入式系統(tǒng)中大量使用具有IIC接口的外圍器件與微處理器通信,例如EEPROM芯片、Flash芯片、時(shí)鐘芯片等都提供了 IIC總線接口。
[0003]微控制器(MCU)的IIC接口與和外圍器件的IIC接口連接,實(shí)現(xiàn)主從式的通信功能。Iic使用兩條線通信,一條為串行數(shù)據(jù)線(SDA),另一條為串行時(shí)鐘線(SCL)。通信時(shí)由MCU的IIC接口按照IIC協(xié)議來控制時(shí)鐘線SCL和數(shù)據(jù)線SDA,產(chǎn)生起始條件、完成數(shù)據(jù)傳輸、應(yīng)答/非應(yīng)答、停止條件。
[0004]IIC協(xié)議通信時(shí),時(shí)鐘線SCL和數(shù)據(jù)線SDA是必須嚴(yán)格按照規(guī)定的時(shí)序變化。例如,數(shù)據(jù)有效條件是:SDA線上的數(shù)據(jù)必須在時(shí)鐘的高電平周期保持穩(wěn)定,數(shù)據(jù)線的高或低電平狀態(tài)只有在SCL線的時(shí)鐘信號是低電平時(shí)才能改變;起始條件必須是:SCL線是高電平時(shí)SDA線從高電平向低電平切換;停止條件是:SCL線是高電平時(shí)SDA線由低電平向高電平切換。
[0005]由于IIC通信時(shí)對兩條信號線的時(shí)序要求特別嚴(yán)格,在實(shí)際使用中經(jīng)常會(huì)因?yàn)槭艿诫姶鸥蓴_,導(dǎo)致信號線時(shí)序錯(cuò)亂,致使通信失敗。而通信失敗后MCU的IIC接口和外部器件的IIC接口由于并未完成一次成功的通信,因此相應(yīng)的硬件電路仍然處于等待狀態(tài),等待接收數(shù)據(jù)或應(yīng)答信號,這種狀態(tài)會(huì)一直持續(xù)下去,從而導(dǎo)致IIC接口失效。如果不對上述問題進(jìn)行處理,將導(dǎo)致系統(tǒng)的任務(wù)卡死或出現(xiàn)反復(fù)復(fù)位等現(xiàn)象。
【發(fā)明內(nèi)容】
[0006]本發(fā)明旨在給出一種IIC總線接口的抗干擾方法,以解決嵌入式系統(tǒng)中的IIC接口因?yàn)槭艿礁蓴_異常后,而不能自動(dòng)恢復(fù)的問題。
[0007]本發(fā)明所述的IIC總線接口的抗干擾方法,包括如下步驟:
建立IIC通信的超時(shí)監(jiān)測機(jī)制,監(jiān)測IIC通訊等待應(yīng)答時(shí)間;
當(dāng)Iic通信等待應(yīng)答時(shí)間超時(shí),則認(rèn)為出現(xiàn)異常,需要進(jìn)行異常處理;
異常處理時(shí),首先關(guān)閉MCU的IIC功能,將MCU的IIC接口配置成普通1 口,通過1口模擬IIC協(xié)議發(fā)送或接收數(shù)據(jù);再模擬停止條件,使外部的Iic器件完成本次通信,恢復(fù)到正常狀態(tài);
將接口配置回Iic接口,并重新對IIC寄存器進(jìn)行初始化,開啟IIC功能;
與外部IIC器件重新進(jìn)行通信。
[0008]本發(fā)明所述的IIC總線接口的抗干擾方法,能夠通過建立超時(shí)機(jī)制監(jiān)測IIC接口是否存在異常,在監(jiān)測到存在異常的情況下能夠及時(shí)處理并復(fù)位,從而能夠避免接口失效,保證下次IIC通信時(shí)能夠成功,從而使IIC接口正常。其有效的解決了 IIC接口受到干擾后失效的問題,使Iic通信更加實(shí)用、增強(qiáng)抗干擾能力。
【附圖說明】
[0009]圖1是本發(fā)明所述IIC總線接口的抗干擾方法的流程示意圖。
【具體實(shí)施方式】
[0010]MCU的IIC接口按照IIC協(xié)議來控制時(shí)鐘線SCL和數(shù)據(jù)線SDA,由MCU的IIC接口產(chǎn)生起始條件、數(shù)據(jù)傳輸、應(yīng)答/非應(yīng)答、停止條件,外部器件的IIC接口接收起始條件、數(shù)據(jù)傳輸、應(yīng)答/非應(yīng)答、停止條件,同時(shí)外部器件也會(huì)產(chǎn)生數(shù)據(jù)傳輸、應(yīng)答/非應(yīng)答狀態(tài)。
[0011]IIC總線接口的抗干擾方法,通過IIC通信的超時(shí)監(jiān)測機(jī)制,監(jiān)測IIC通訊等待應(yīng)答時(shí)間,當(dāng)IIC通信時(shí),當(dāng)MCU監(jiān)測到等待外部器件產(chǎn)生的數(shù)據(jù)傳輸、應(yīng)答/非應(yīng)答狀態(tài)超時(shí)時(shí),認(rèn)為Iic接口異常,執(zhí)行IIC接口異常處理。先關(guān)閉MCU的IIC功能,將MCU的IIC接口配置成普通1 口,通過1 口模擬IIC協(xié)議發(fā)送或接收數(shù)據(jù);再模擬停止條件,使外部的Iic器件完成本次通信,恢復(fù)到正常狀態(tài);之后再將接口配置回IIC接口,并重新對IIC寄存器進(jìn)行初始化,開啟IIC功能;與外部IIC器件重新進(jìn)行通信。
[0012]IIC通信的超時(shí)監(jiān)測機(jī)制可采用定時(shí)器中斷的方式計(jì)時(shí),每次中斷將全局計(jì)數(shù)器變量加1,IIC通信開始時(shí)將計(jì)數(shù)器清0,然后在IIC通信時(shí)讀取計(jì)數(shù)器的值,如果計(jì)數(shù)器的值大于允許值則認(rèn)為超時(shí)。
[0013]如圖1,IIC通信時(shí),首先,進(jìn)行IIC通信準(zhǔn)備,配置IIC引腳、接口,將IIC初始化。然后,建立IIC超時(shí)機(jī)制。IIC通信的超時(shí)監(jiān)測機(jī)制采用定時(shí)器中斷的方式計(jì)時(shí),初始化用于超時(shí)計(jì)數(shù)的定時(shí)器、配置定時(shí)器中斷、開定時(shí)器、全局超時(shí)計(jì)數(shù)器清0,每次定時(shí)器中斷時(shí)對全局超時(shí)計(jì)數(shù)器加I。之后,按照Iic協(xié)議規(guī)定,發(fā)送IIC的起始條件;等待IIC從器件應(yīng)答,此時(shí)輪巡Iic狀態(tài)寄存器,如果未應(yīng)答則判斷IIC是否超時(shí)(判斷超時(shí)計(jì)數(shù)器是否大于預(yù)設(shè)值),如果超時(shí),則認(rèn)為IIC通信異常,轉(zhuǎn)而執(zhí)行IIC異常處理流程。如果未超時(shí)則繼續(xù)重新查詢Iic狀態(tài)寄存器。通過查詢IIC狀態(tài)寄存器得知已經(jīng)收到正確應(yīng)答,則發(fā)送器件地址;發(fā)送后同樣進(jìn)行應(yīng)答判斷和超時(shí)判斷,超時(shí)則轉(zhuǎn)異常處理,正常應(yīng)答則發(fā)送或接收數(shù)據(jù)。而后,繼續(xù)進(jìn)行應(yīng)答判斷和超時(shí)判斷,超時(shí)則轉(zhuǎn)異常處理,正常應(yīng)答則按照Iic協(xié)議規(guī)定發(fā)送停止條件。之后,判斷通信是否成功,成功則結(jié)束本次Iic通信,未成功轉(zhuǎn)建立超時(shí)機(jī)制部分重新執(zhí)行一次。各環(huán)節(jié)中,如出現(xiàn)超時(shí),均按如下異常處理流程處理:包括關(guān)閉IIC功能、1 口配置為普通口、1 口模擬發(fā)送數(shù)據(jù)或接收數(shù)據(jù)、模擬發(fā)送停止條件、重新配置1 口為IIC接口、重新初始化并開啟IIC功能等步驟。
【主權(quán)項(xiàng)】
1.一種IIC總線接口的抗干擾方法,包括如下步驟: 建立IIC通信的超時(shí)監(jiān)測機(jī)制,監(jiān)測IIC通訊等待應(yīng)答時(shí)間; 當(dāng)Iic通信等待應(yīng)答時(shí)間超時(shí),則認(rèn)為出現(xiàn)異常,需要進(jìn)行異常處理; 異常處理時(shí),首先關(guān)閉MCU的IIC功能,將MCU的IIC接口配置成普通1 口,通過1口模擬IIC協(xié)議發(fā)送或接收數(shù)據(jù);再模擬停止條件,使外部的Iic器件完成本次通信,恢復(fù)到正常狀態(tài); 將接口配置回Iic接口,并重新對IIC寄存器進(jìn)行初始化,開啟IIC功能; 與外部IIC器件重新進(jìn)行通信。
2.根據(jù)權(quán)利要求1所述的Iic總線接口的抗干擾方法,其特征在于:IIC通信的超時(shí)監(jiān)測機(jī)制采用定時(shí)器中斷的方式計(jì)時(shí),每次中斷將全局計(jì)數(shù)器變量加1,IIC通信開始時(shí)將計(jì)數(shù)器清0,然后在IIC通信時(shí)讀取計(jì)數(shù)器的值,如果計(jì)數(shù)器的值大于允許值則認(rèn)為超時(shí)。
【專利摘要】本發(fā)明公開了一種IIC總線接口的抗干擾方法,其能夠通過建立超時(shí)機(jī)制監(jiān)測IIC接口是否存在異常,在監(jiān)測到存在異常的情況下能夠及時(shí)處理并復(fù)位,從而能夠避免接口失效,保證下次IIC通信時(shí)能夠成功,使IIC接口正常工作。所述抗干擾方法,有效的解決了IIC接口受到干擾后失效的問題,使IIC通信更加實(shí)用、增強(qiáng)抗干擾能力。
【IPC分類】G06F13-40, G06F13-42
【公開號】CN104834624
【申請?zhí)枴緾N201510272983
【發(fā)明人】廖志梅
【申請人】廣州正力通用電氣有限公司
【公開日】2015年8月12日
【申請日】2015年5月26日