本發(fā)明涉及通信設(shè)備技術(shù)領(lǐng)域,特別是涉及一種iic總線解鎖方法及基于iic總線的通信系統(tǒng)。
背景技術(shù):
iic總線主要用于短距離、多設(shè)備的數(shù)據(jù)交換系統(tǒng)中。由于其僅需兩根信號線(數(shù)據(jù)線sda,時(shí)鐘線scl)即可完成雙工同步數(shù)據(jù)傳輸,因而能方便的實(shí)現(xiàn)多機(jī)系統(tǒng)和外圍擴(kuò)展系統(tǒng),并且其通信時(shí)采用硬件設(shè)置總線設(shè)備地址的方式,避免了選線尋址的弊端,提高了硬件系統(tǒng)的工作可靠性。但是iic總線的抗干擾能力較差,例如,如果總線上存在干擾信號或信號線(數(shù)據(jù)線sda,時(shí)鐘線scl)的電平被某些特定的因素拉低,則總線上的主機(jī)設(shè)備將無法正常進(jìn)行下一輪的數(shù)據(jù)傳送,即此時(shí)主機(jī)設(shè)備檢測到iic總線被鎖死。
當(dāng)發(fā)生iic總線被鎖死時(shí),一般采用如下解決方式:(1)主機(jī)設(shè)備發(fā)出脈沖信號進(jìn)行iic總線的軟件復(fù)位;(2)采用帶有iic總線鎖定保護(hù)的iic器件;(3)采用內(nèi)部集成有iic總線控制功能的處理器。但在某些情況下,上述三種方式并不完全可靠。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述針對iic總線鎖死時(shí)的解決方式可靠性差的問題,本發(fā)明的目的在于提供一種iic總線解鎖方法及基于iic總線的通信系統(tǒng),能夠及時(shí)地解決iic總線鎖死的故障,保證通信系統(tǒng)的通訊可靠性。
為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
一種iic總線的解鎖方法,所述方法包括如下步驟:
從主機(jī)總線監(jiān)測接口獲取iic總線上的電平;
判斷所述iic總線上的電平是否為低電平;
判斷軟件復(fù)位是否能夠解鎖;
當(dāng)判定所述iic總線上的電平為低電平且所述軟件復(fù)位無法解鎖時(shí),則主機(jī)控制接口輸出第一控制信號,控制連接在所述iic總線上的從機(jī)設(shè)備斷電;
當(dāng)所述從機(jī)設(shè)備斷電第一預(yù)設(shè)時(shí)間后,通過所述主機(jī)控制接口輸出第二控制信號,控制所述從機(jī)設(shè)備上電,所述iic總線解鎖并恢復(fù)通信。
在其中一個(gè)實(shí)施例中,判斷所述iic總線上的電平是否為低電平的步驟具體包括:
當(dāng)判定所述iic總線的電平為低電平后,延時(shí)第二預(yù)設(shè)時(shí)間,返回繼續(xù)判斷所述iic總線上的電平是否為低電平,當(dāng)所述iic總線的電平始終為低電平時(shí),則判定所述iic總線上的電平為低電平。
在一個(gè)實(shí)施例中,每當(dāng)判定所述iic總線上的電平為低電平時(shí),檢測次數(shù)累加一次,獲得檢測總次數(shù);
判斷所述檢測總次數(shù)是否大于或等于第一預(yù)設(shè)閾值;
當(dāng)所述檢測總次數(shù)大于或等于第一預(yù)設(shè)閾值且每次所述iic總線上的電平均為低電平時(shí),則判定所述iic總線上的電平為低電平。
在其中一個(gè)實(shí)施例中,判斷軟件復(fù)位是否能夠解鎖的步驟包括:
每當(dāng)判定所述iic總線上的電平為低電平時(shí),檢測次數(shù)累加一次,獲得檢測總次數(shù);
判斷所述檢測總次數(shù)是否大于或等于第二預(yù)設(shè)閾值;
當(dāng)所述檢測總次數(shù)大于或等于第二預(yù)設(shè)閾值時(shí),則判定軟件復(fù)位無法解鎖。
在其中一個(gè)實(shí)施例中,所述iic總線包括數(shù)據(jù)總線和時(shí)鐘總線,判斷所述iic總線上的電平是否為低電平的步驟具體包括:
判斷所述數(shù)據(jù)總線上的電平是否為低電平;
判斷所述時(shí)鐘總線上的電平是否為低電平;
當(dāng)所述數(shù)據(jù)總線上的電平為低電平和/或所述時(shí)鐘總線上的電平為低電平時(shí),則判定所述iic總線上的電平為低電平。
本發(fā)明還提供了一種基于iic總線的通信系統(tǒng),包括iic總線、主機(jī)設(shè)備和從機(jī)設(shè)備;
所述主機(jī)設(shè)備包括主機(jī)總線接口、主機(jī)總線監(jiān)測接口和主機(jī)控制接口,所述主機(jī)總線接口和所述主機(jī)總線監(jiān)測接口均連接至所述iic總線,所述主機(jī)總線監(jiān)測接口用于獲取所述iic總線上的電平變化;
所述從機(jī)設(shè)備包括從機(jī)總線接口和從機(jī)電源接口,所述從機(jī)總線接口連接至所述iic總線,所述從機(jī)電源接口連接至所述主機(jī)控制接口;
所述主機(jī)控制接口用于當(dāng)所述iic總線上的從機(jī)設(shè)備鎖死且軟件復(fù)位無法解鎖時(shí),輸出用于控制所述從機(jī)設(shè)備斷電的第一控制信號,以及輸出控制所述從機(jī)設(shè)備斷電后重新上電的第二控制信號。
在其中一個(gè)實(shí)施例中,所述iic總線包括數(shù)據(jù)總線和時(shí)鐘總線;
所述主機(jī)總線接口包括主機(jī)數(shù)據(jù)接口和主機(jī)時(shí)鐘接口,所述主機(jī)數(shù)據(jù)接口連接至所述數(shù)據(jù)總線,所述主機(jī)時(shí)鐘接口連接至所述時(shí)鐘總線,所述主機(jī)總線監(jiān)測接口通過監(jiān)測線連接至所述數(shù)據(jù)總線和/或所述時(shí)鐘總線;
所述從機(jī)總線接口包括從機(jī)數(shù)據(jù)接口和從機(jī)時(shí)鐘接口,所述從機(jī)數(shù)據(jù)接口連接至所述數(shù)據(jù)總線,所述從機(jī)時(shí)鐘接口連接至所述時(shí)鐘總線。
在其中一個(gè)實(shí)施例中,所述主機(jī)總線監(jiān)測接口包括用于獲取所述數(shù)據(jù)總線上的電平變化的數(shù)據(jù)總線監(jiān)測接口和用于獲取所述時(shí)鐘總線上的電平變化的時(shí)鐘總線監(jiān)測接口;
所述數(shù)據(jù)總線監(jiān)測接口通過數(shù)據(jù)監(jiān)測線連接至所述數(shù)據(jù)總線,所述時(shí)鐘總線監(jiān)測接口通過時(shí)鐘監(jiān)測線連接至所述時(shí)鐘總線。
在其中一個(gè)實(shí)施例中,所述通信系統(tǒng)還包括硬件控制電路,所述硬件控制電路的輸入端連接所述主機(jī)控制接口,所述硬件控制電路的輸出端連接所述從機(jī)電源接口。
在其中一個(gè)實(shí)施例中,所述硬件控制電路包括濾波電路和一級放大電路;
所述濾波電路的一端連接至所述主機(jī)控制接口,所述濾波電路的另一端串聯(lián)所述一級放大電路連接至所述從機(jī)電源接口。
在其中一個(gè)實(shí)施例中,所述一級放大電路包括放大器和基準(zhǔn)電壓電路;
所述放大器的負(fù)向輸入端連接至所述基準(zhǔn)電壓電路,所述放大器的正向輸入端通過所述濾波電路連接至所述主機(jī)控制接口,所述放大器的輸出端連接至所述從機(jī)電源接口。
在其中一個(gè)實(shí)施例中,所述硬件控制電路還包括連接在所述一級放大電路的輸出端和所述從機(jī)電源接口之間的二級放大電路;
所述二級放大電路包括三極管,所述三極管的基極連接至所述基準(zhǔn)電壓電路和所述放大器的輸出端的相應(yīng)公共端,所述三極管的集電極連接至電源,所述三極管的發(fā)射極連接至所述從機(jī)電源接口。
本發(fā)明的有益效果是:
本發(fā)明的iic總線解鎖方法及基于iic總線的通信系統(tǒng),通過在主機(jī)設(shè)備上增設(shè)主機(jī)總線監(jiān)測接口和主機(jī)控制接口,通過主機(jī)總線監(jiān)測接口實(shí)時(shí)監(jiān)測iic總線上的電平變化,并將主機(jī)控制接口連接至從機(jī)設(shè)備的從機(jī)電源接口,當(dāng)iic總線上的從機(jī)設(shè)備鎖死且軟件復(fù)位無法解鎖時(shí),控制從機(jī)設(shè)備斷電,斷電后從機(jī)設(shè)備內(nèi)部復(fù)位;之后,可以通過主機(jī)控制接口控制從機(jī)設(shè)備再次上電,使得iic總線重新恢復(fù)通信。本發(fā)明通過硬件控制的方式實(shí)現(xiàn)從機(jī)設(shè)備的斷電復(fù)位,能夠在軟件解鎖失效時(shí)及時(shí)地解決iic總線上從機(jī)設(shè)備鎖死的故障,保證通信系統(tǒng)的通訊可靠性。
附圖說明
圖1為本發(fā)明的iic總線解鎖方法一實(shí)施例的流程圖;
圖2為本發(fā)明的iic總線解鎖方法另一實(shí)施例的流程圖;
圖3為本發(fā)明的基于iic總線的通信系統(tǒng)一實(shí)施例的系統(tǒng)結(jié)構(gòu)圖;
圖4為本發(fā)明的通信系統(tǒng)中硬件控制電路一實(shí)施例的電路原理圖。
具體實(shí)施方式
為了使本發(fā)明的技術(shù)方案更加清楚,以下結(jié)合附圖,對本發(fā)明的iic總線解鎖方法及基于iic總線的通信系統(tǒng)作進(jìn)一步詳細(xì)的說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明并不用于限定本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。
如圖3所示,本發(fā)明一實(shí)施例的基于iic總線的通信系統(tǒng),包括iic總線100、主機(jī)設(shè)備200和從機(jī)設(shè)備300,主機(jī)設(shè)備200和從機(jī)設(shè)備300均連接至iic總線100,從而主機(jī)設(shè)備200和從機(jī)設(shè)備300可以通過iic總線100實(shí)現(xiàn)數(shù)據(jù)通信。其中,可以將iic總線100上的主控設(shè)備設(shè)置為主機(jī)設(shè)備200,將被控設(shè)備設(shè)置為從機(jī)設(shè)備300。具體地,iic總線100包括數(shù)據(jù)總線110和時(shí)鐘總線120。主機(jī)設(shè)備200可以為工控機(jī)或單片機(jī)等處理設(shè)備,主機(jī)設(shè)備200包括主機(jī)總線接口,具體地,主機(jī)總線接口包括主機(jī)數(shù)據(jù)接口a和主機(jī)時(shí)鐘接口b,主機(jī)數(shù)據(jù)接口a連接至數(shù)據(jù)總線110,主機(jī)時(shí)鐘接口b連接至?xí)r鐘總線120。從機(jī)設(shè)備300可以為工控機(jī)或單片機(jī)等處理設(shè)備,從機(jī)設(shè)備300包括從機(jī)總線接口,具體地,從機(jī)總線接口包括從機(jī)數(shù)據(jù)接口a和從機(jī)時(shí)鐘接口b,從機(jī)數(shù)據(jù)接口a連接至數(shù)據(jù)總線110,從機(jī)時(shí)鐘接口b連接至?xí)r鐘總線120。進(jìn)一步地,從機(jī)設(shè)備300的數(shù)量可以為多個(gè),多個(gè)所述從機(jī)設(shè)備300均連接至上述iic總線100。
主機(jī)設(shè)備200還包括主機(jī)總線監(jiān)測接口和主機(jī)控制接口,主機(jī)總線監(jiān)測接口用于獲取iic總線100上的電平變化。具體地,主機(jī)總線監(jiān)測接口連接至數(shù)據(jù)總線110和/或時(shí)鐘總線120。進(jìn)一步地,主機(jī)總線監(jiān)測接口包括用于獲取數(shù)據(jù)總線110上的電平變化的數(shù)據(jù)總線監(jiān)測接口c和用于獲取時(shí)鐘總線120上的電平變化的時(shí)鐘總線監(jiān)測接口d,數(shù)據(jù)總線監(jiān)測接口c通過數(shù)據(jù)監(jiān)測線410連接至數(shù)據(jù)總線110,時(shí)鐘總線監(jiān)測接口d通過時(shí)鐘監(jiān)測線420連接至?xí)r鐘總線120。其中,數(shù)據(jù)監(jiān)測線410用于實(shí)時(shí)監(jiān)測數(shù)據(jù)總線上的電平變化,數(shù)據(jù)監(jiān)測線410上可以串聯(lián)設(shè)置有電壓傳感器。時(shí)鐘監(jiān)測線420用于實(shí)時(shí)監(jiān)測時(shí)鐘總線上的電平變化,時(shí)鐘監(jiān)測線420上可以串聯(lián)設(shè)置有電壓傳感器。
從機(jī)設(shè)備300包括還從機(jī)電源接口c,從機(jī)電源接口c連接至主機(jī)控制接口e,主機(jī)控制接口e用于當(dāng)iic總線100上的從機(jī)設(shè)備300鎖死且軟件復(fù)位無法解鎖時(shí),輸出用于控制從機(jī)設(shè)備300斷電的第一控制信號,主機(jī)控制接口e還用于輸出控制從機(jī)設(shè)備300斷電后重新上電的第二控制信號。具體地,當(dāng)iic總線100上的從機(jī)設(shè)備300鎖死且軟件復(fù)位無法解鎖時(shí),主機(jī)設(shè)備200通過該主機(jī)控制接口e輸出第一控制信號,并將該第一控制信號傳送至從機(jī)電源接口c,從機(jī)設(shè)備300根據(jù)該第一控制信號斷電復(fù)位。當(dāng)iic總線100上的從機(jī)設(shè)備300斷電一段時(shí)間后,主機(jī)設(shè)備200通過該主機(jī)控制接口e輸出第二控制信號,從機(jī)設(shè)備300可以通過從機(jī)電源接口c接收該第二控制信號,并根據(jù)該第二控制信號重新上電,從而iic總線100可以恢復(fù)正常通信。這樣過硬件控制的方式實(shí)現(xiàn)從機(jī)設(shè)備300的斷電復(fù)位,能夠在軟件解鎖失效時(shí)及時(shí)地解決iic總線100上從機(jī)設(shè)備300鎖死的故障,保證通信系統(tǒng)的通訊可靠性。
應(yīng)當(dāng)清楚的是,在從機(jī)設(shè)備300斷電后再上電時(shí),從機(jī)設(shè)備300內(nèi)部即可完成自動(dòng)復(fù)位的過程,其由從機(jī)設(shè)備300的自身特性確定。因此,當(dāng)iic總線100上的從機(jī)設(shè)備300鎖死時(shí),僅需控制該iic總線100上連接的從機(jī)設(shè)備300先斷電再上電,即可解決iic總線100上從機(jī)設(shè)備300鎖死的問題。
進(jìn)一步地,從機(jī)電源接口c可以包括從機(jī)電源正極接口和從機(jī)電源負(fù)極接口。該主機(jī)控制接口e可以連接至從機(jī)電源正極接口,該從機(jī)電源負(fù)極接口接地。當(dāng)然,該主機(jī)控制接口e還可以連接至從機(jī)電源負(fù)極接口,該從機(jī)電源正極接口可以連接至電源電路。
更進(jìn)一步地,主機(jī)設(shè)備200的主機(jī)控制接口e輸出的控制信號可以為電壓可調(diào)的控制信號,例如,該控制信號可以為主機(jī)設(shè)備200經(jīng)pwm控制輸出的可調(diào)電壓信號,電壓調(diào)節(jié)范圍可以為0v~5v。如,當(dāng)控制信號的電壓達(dá)到第一預(yù)設(shè)電壓值時(shí),可以認(rèn)為該控制信號為第一控制信號,當(dāng)控制信號的電壓達(dá)到第二預(yù)設(shè)電壓值時(shí),可以認(rèn)為該控制信號為第二控制信號。當(dāng)然,主機(jī)設(shè)備200的主機(jī)控制接口e輸出的控制信號還可以為電壓幅值固定的信號。例如,主機(jī)設(shè)備200的主機(jī)控制接口e輸出的控制信號為0v或5v。如,當(dāng)主機(jī)控制接口e的輸出電壓為0v時(shí),該控制信號為第一控制信號。當(dāng)主機(jī)控制接口e的輸出電壓為5v時(shí),該控制信號為第二控制信號。
作為進(jìn)一步地改進(jìn),如圖3所示,該通信系統(tǒng)還可以包括硬件控制電路500,硬件控制電路500的輸入端連接主機(jī)控制接口e,硬件控制電路500的輸出端連接從機(jī)電源接口c,具體地,硬件控制電路500的輸出端連接從機(jī)電源正極接口。該硬件控制電路500用于對主機(jī)控制接口e輸出的第一控制信號或第二控制信號進(jìn)行濾波及放大等處理操作。
具體地,如圖4所示,該硬件控制電路500包括濾波電路510和一級放大電路520。其中,濾波電路510的一端連接至主機(jī)控制接口e,濾波電路510的另一端串聯(lián)一級放大電路520連接至從機(jī)電源接口c。如圖2所示,濾波電路510可以為第一電阻r1和第一電容c1組成的rc濾波器。該一級放大電路520可以為同相放大電路、反相放大電路或電壓跟隨器等放大電路結(jié)構(gòu),該一級放大電路520用于對主機(jī)控制接口e輸出的控制信號進(jìn)行一級放大。
在一個(gè)實(shí)施例中,一級放大電路520可以包括放大器lm1和基準(zhǔn)電壓電路530。其中,放大器lm1的負(fù)向輸入端連接至基準(zhǔn)電壓電路530,放大器lm1的正向輸入端通過濾波電路510連接至主機(jī)控制接口e,放大器lm1的輸出端連接至從機(jī)電源接口c,具體地,放大器lm1的輸出端連接至從機(jī)電源正極接口。具體地,基準(zhǔn)電壓電路530包括串聯(lián)設(shè)置的第二電阻r2和第三電阻r3,該第二電阻r2和第三電阻r3串聯(lián)后連接在電源電路vcc和地gnd之間。放大器lm1的負(fù)向輸入端連接至第二電阻r2和第三電阻r3的相應(yīng)公共端。
進(jìn)一步地,該放大器lm1的正向輸入端依次串聯(lián)第四電阻r4和濾波電路510后連接至主機(jī)控制接口e。具體地,第一電阻r1和第四電阻r4串聯(lián)設(shè)置在主機(jī)控制接口e和放大器lm1的正向輸入端之間,第一電容c1連接至第一電阻r1和第四電阻r4的相應(yīng)公共端。
更進(jìn)一步地,硬件控制電路500還包括連接在一級放大電路520的輸出端和從機(jī)電源接口c之間的二級放大電路540,該二級放大電路540用于對主機(jī)控制接口e輸出的控制信號進(jìn)行二級功率放大。具體地,二級放大電路包括三極管q1,三極管q1的基極連接至基準(zhǔn)電壓電路530和放大器lm1的輸出端的相應(yīng)公共端,三極管q1的集電極連接至電源vcc,三極管q1的發(fā)射極連接至從機(jī)電源接口c。如圖2所示,該三極管q1為npn型雙極性三極管,該三極管q1的基極連接至第三電阻r3和放大器lm1的輸出端,三極管q1的集電極連接至電源vcc,三極管q1的發(fā)射極連接至從機(jī)電源正極接口。同時(shí),放大器lm1的輸出端通過第二電容c2連接至從機(jī)電源負(fù)極接口。
以下結(jié)合附圖4簡要說明該硬件控制電路500的工作原理:
主機(jī)控制接口e輸出的控制信號經(jīng)濾波電路510濾波后經(jīng)過放大器lm1進(jìn)行一級放大。若主機(jī)設(shè)備輸出的控制信號(第一控制信號或第二控制信號)的電壓為vp,放大器的放大增益au=1+(第三電阻r3/第二電阻r2),則放大器的輸出端輸出的信號電壓vb=au*vp=(1+r3/r2)*vp。
由于從機(jī)設(shè)備300的供電電源一般為5v左右,主機(jī)設(shè)備200輸出控制信號的最高電壓也只有5v,該主機(jī)設(shè)備輸出的控制信號在經(jīng)過一系列器件后,實(shí)際輸入至從機(jī)設(shè)備300的電壓往往達(dá)不到要求。盡管經(jīng)過放大器的一級放大,該控制信號的電壓也不一定能夠驅(qū)動(dòng)從機(jī)設(shè)備300正常工作,因此,此處通過二級放大電路540中的三極管q1實(shí)現(xiàn)對控制信號的二級放大。此時(shí),輸入至從機(jī)電源正極接口的控制信號的電壓v從=vb-v結(jié),其中,v結(jié)表示三極管的基極與發(fā)射極之間的pn結(jié)的壓降,v結(jié)一般為0.2v~0.3v。
同時(shí),如圖1所示,本發(fā)明一實(shí)施例還提供了一種iic總線100的解鎖方法,用于上述任一實(shí)施例的通信系統(tǒng),以解決通信系統(tǒng)中iic總線100上的從機(jī)設(shè)備300鎖死的問題。具體地,上述方法應(yīng)用于該通信系統(tǒng)的主機(jī)設(shè)備中,上述方法包括如下步驟:
s100、從主機(jī)總線監(jiān)測接口獲取iic總線100上的電平;具體地,主機(jī)總線監(jiān)測接口通過監(jiān)測線連接至iic總線100上,可以實(shí)時(shí)獲取iic總線100上的電平變化。進(jìn)一步地,上述步驟s100可以包括步驟s110,從數(shù)據(jù)總線監(jiān)測接口獲取數(shù)據(jù)總線上的電平。上述步驟s100還可以包括步驟s120,從時(shí)鐘總線監(jiān)測接口獲取時(shí)鐘總線上的電平。
s200、判斷iic總線100上的電平是否為低電平;一般地,當(dāng)iic總線上的電平被拉低時(shí),可能存在iic總線上的從機(jī)設(shè)備鎖死的情況。進(jìn)一步地,上述步驟s200還可以包括步驟s210,判斷數(shù)據(jù)總線110上的電平是否為低電平。上述步驟s200還可以包括步驟s220,判斷時(shí)鐘總線120上的電平是否為低電平。
s300、判斷軟件復(fù)位是否能夠解鎖;一般地,當(dāng)iic總線100上的從機(jī)設(shè)備300鎖死時(shí),主機(jī)設(shè)備200首先通過軟件控制方法控制其上的從機(jī)設(shè)備300解鎖。
s400、當(dāng)判定iic總線100上的電平為低電平且軟件復(fù)位無法解鎖時(shí),則主機(jī)控制接口e輸出第一控制信號,第一控制信號控制從機(jī)設(shè)備300斷電;具體地,第一控制信號可以通過硬件控制電路進(jìn)行濾波放大后再傳送至從機(jī)設(shè)備的從機(jī)電源接口,從而控制從機(jī)設(shè)備300斷電。
s500、當(dāng)從機(jī)設(shè)備300斷電第一預(yù)設(shè)時(shí)間后,通過主機(jī)控制接口e輸出第二控制信號,控制從機(jī)設(shè)備300上電,iic總線100解鎖并恢復(fù)通信。具體地,第二控制信號也可以通過硬件控制電路進(jìn)行濾波放大后再傳送至從機(jī)設(shè)備的從機(jī)電源接口,從而控制從機(jī)設(shè)備300再次上電。在從機(jī)設(shè)備300斷電后再上電時(shí),從機(jī)設(shè)備300內(nèi)部即可完成自動(dòng)復(fù)位的過程,其由從機(jī)設(shè)備300的自身特性確定。因此,當(dāng)iic總線100上的從機(jī)設(shè)備300鎖死時(shí),僅需控制該iic總線100上連接的從機(jī)設(shè)備300先斷電再上電,即可解決iic總線100上從機(jī)設(shè)備300鎖死的問題。
在一個(gè)實(shí)施例中,上述步驟s200進(jìn)一步包括:
當(dāng)判定iic總線100的電平為低電平后則執(zhí)行步驟s230,延時(shí)第二預(yù)設(shè)時(shí)間,之后,返回步驟s200,繼續(xù)判斷iic總線上的電平是否為低電平。當(dāng)iic總線100的電平始終為低電平時(shí),則判定iic總線100上的電平為低電平。由于iic總線100在進(jìn)行數(shù)據(jù)傳輸時(shí)也有可能出現(xiàn)電平被拉低的情況,因此,通過多次循環(huán)判斷可以保證判斷結(jié)果的準(zhǔn)確性及可靠性,避免誤判。具體地,第二預(yù)設(shè)時(shí)間可以為1秒~5秒。即當(dāng)首次判定iic總線100上的電平為低電平時(shí),延時(shí)第二預(yù)設(shè)時(shí)間后,再次判斷iic總線100的電平是否為低電平,若是,則主機(jī)設(shè)備200判定該iic總線100的電平為低電平,此時(shí)存在從機(jī)設(shè)備300鎖死的情況。
進(jìn)一步地,上述步驟s200還包括如下步驟:
每當(dāng)判定所述iic總線上的電平為低電平時(shí),檢測次數(shù)累加一次,獲得檢測總次數(shù);具體地,該檢測總次數(shù)可以用來計(jì)算上述步驟s200的循環(huán)次數(shù),該檢測總次數(shù)還可以用于判斷何時(shí)結(jié)束步驟s200并進(jìn)入下一步驟。
判斷所述檢測總次數(shù)是否大于或等于第一預(yù)設(shè)閾值;具體地,預(yù)設(shè)閾值可以為3~5次。即循環(huán)執(zhí)行3~5次判斷iic總線100上的電平的是否為低電平。
當(dāng)所述檢測總次數(shù)大于或等于第一預(yù)設(shè)閾值且每次所述iic總線上的電平均為低電平時(shí),則判定所述iic總線上的電平為低電平。此時(shí),可以結(jié)束步驟s200的循環(huán)判斷過程,進(jìn)入下一步驟。
作為進(jìn)一步地改進(jìn),如圖2所示,上述步驟s200還包括:
s210、判斷數(shù)據(jù)總線110上的電平是否為低電平;具體地,可通過多次循環(huán)判斷數(shù)據(jù)總線110上的電平是否為低電平。具體地,如圖4所示,首先判斷數(shù)據(jù)總線110上的電平是否為低電平,當(dāng)判定數(shù)據(jù)總線110上的電平為低電平時(shí),則執(zhí)行步驟s230,延時(shí)第二預(yù)設(shè)時(shí)間后,返回步驟s210,繼續(xù)判斷數(shù)據(jù)總線110上的電平是否為低電平。當(dāng)數(shù)據(jù)總線上的電平始終為低電平時(shí),則可以判定該數(shù)據(jù)總線上的電平為低電平。進(jìn)一步地,可通過重復(fù)執(zhí)行步驟s210和步驟s230判斷數(shù)據(jù)總線上的電平是否為低電平,直至檢測總次數(shù)達(dá)到預(yù)設(shè)閾值。
s220、判斷時(shí)鐘總線120上的電平是否為低電平;具體地,可通過多次循環(huán)判斷時(shí)鐘總線120上的電平是否為低電平。具體地,如圖4所示,首先判斷時(shí)鐘總線120上的電平是否為低電平,當(dāng)判定時(shí)鐘總線120上的電平為低電平時(shí),則執(zhí)行步驟s230,延時(shí)第二預(yù)設(shè)時(shí)間后,返回步驟s220,繼續(xù)判斷時(shí)鐘總線120上的電平是否為低電平。當(dāng)時(shí)鐘總線120上的電平始終為低電平時(shí),則可以判定該時(shí)鐘總線120上的電平為低電平。進(jìn)一步地,可通過重復(fù)執(zhí)行步驟s220和步驟s230判斷時(shí)鐘總線上的電平是否為低電平,直至檢測總次數(shù)達(dá)到預(yù)設(shè)閾值。
當(dāng)數(shù)據(jù)總線110上的電平為低電平和/或時(shí)鐘總線120上的電平為低電平時(shí),則判定iic總線100上的電平為低電平。即當(dāng)時(shí)鐘總線120和數(shù)據(jù)總線110的任一電平為低電平時(shí),則判定iic總線100上的從機(jī)設(shè)備300存在鎖死的情況。
由于數(shù)據(jù)總線110出錯(cuò)導(dǎo)致從機(jī)設(shè)備300鎖死的概率大于時(shí)鐘總線120出錯(cuò)的概率,因此在要求不高的情況下,還可以只檢測數(shù)據(jù)總線110上的電平變化,即只有一根總線監(jiān)測線,主機(jī)設(shè)備200上只有一個(gè)主機(jī)總線監(jiān)測接口。當(dāng)然,主機(jī)設(shè)備200還可以只具有一個(gè)用于監(jiān)測數(shù)據(jù)時(shí)鐘總線120上的電平變化的主機(jī)總線監(jiān)測接口。
在一個(gè)實(shí)施例中,上述步驟s300進(jìn)一步包括:
s310、每當(dāng)判定iic總線100上的電平為低電平時(shí),檢測次數(shù)累加一次,獲得檢測總次數(shù);具體地,該檢測總次數(shù)可以用來計(jì)算上述步驟s210或上述步驟s220的循環(huán)次數(shù),該檢測總次數(shù)還可以用于判斷軟件復(fù)位方式是否有效。該檢測總次數(shù)與上述步驟s200中的檢測總次數(shù)一致。
s320、判斷檢測總次數(shù)是否大于或等于第二預(yù)設(shè)閾值;具體地,第二預(yù)設(shè)閾值可以為3~5次。即循環(huán)執(zhí)行3~5次判斷iic總線100上的電平的是否為低電平。進(jìn)一步地,該第二預(yù)設(shè)閾值可以等于上述第一預(yù)設(shè)閾值,如圖2所示。
當(dāng)檢測總次數(shù)大于或等于第二預(yù)設(shè)閾值時(shí),則判定軟件復(fù)位無法解鎖。例如,當(dāng)檢測總次數(shù)大于或等于3次時(shí),則主機(jī)設(shè)備判定該軟件復(fù)位方式無法完成解鎖,此時(shí),可以通過啟動(dòng)硬件解鎖方式實(shí)現(xiàn)iic總線的通信順暢。
本發(fā)明的iic總線解鎖方法及基于iic總線的通信系統(tǒng),在主機(jī)設(shè)備上增設(shè)主機(jī)總線監(jiān)測接口和主機(jī)控制接口,通過主機(jī)總線監(jiān)測接口實(shí)時(shí)監(jiān)測iic總線上的電平變化,并將主機(jī)控制接口連接至從機(jī)設(shè)備的從機(jī)電源接口c,當(dāng)iic總線上的從機(jī)設(shè)備鎖死且軟件復(fù)位無法解鎖時(shí),控制從機(jī)設(shè)備斷電,斷電后從機(jī)設(shè)備內(nèi)部復(fù)位;之后,可以通過主機(jī)控制接口控制從機(jī)設(shè)備再次上電,使得iic總線重新恢復(fù)通信。本發(fā)明通過硬件控制的方式實(shí)現(xiàn)從機(jī)設(shè)備的斷電復(fù)位,能夠在軟件解鎖失效時(shí)及時(shí)地解決iic總線上從機(jī)設(shè)備鎖死的故障,保證通信系統(tǒng)的通訊可靠性。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。