本發(fā)明涉及一種解碼方法,尤其涉及一種適用于低脈沖時間的解碼方法。
背景技術:
常規(guī)的解碼方式是根據(jù)理論的CLK周期計算同步頭時間、數(shù)據(jù)的寬、窄脈沖時間,判斷捕獲的脈沖時間是否符合同步頭、數(shù)據(jù)寬、窄脈沖的范圍來解碼的。通常CLK周期是由一個電阻調(diào)節(jié)的。實際使用過程中,由于環(huán)境造成CLK的周期在一個范圍內(nèi)變化,不同的廠家使用的電阻不一致造成有時解碼錯誤或不能解碼。
技術實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術存在的以上問題,提供一種適用于低脈沖時間的解碼方法。
為實現(xiàn)本發(fā)明的目的,適用于低脈沖時間的解碼方法,其中:設低脈沖為t,設同步碼長度為ts,設1個數(shù)據(jù)位長度為td,設數(shù)據(jù)位寬脈沖為tw,設數(shù)據(jù)位窄脈沖為tn,設上一個數(shù)據(jù)沿與當前捕獲的數(shù)據(jù)沿的長度為t,設時間常數(shù)為T,設已捕獲的數(shù)據(jù)位數(shù)量為n,設需要捕獲的數(shù)據(jù)位數(shù)量為N,設已捕獲到的數(shù)據(jù)幀數(shù)為f,設判斷為有效捕獲的幀數(shù)為F,設立關系式ts=td*8=tw*32/3=tn*32,其中tw=12CLK,tn=4CLK,解碼時,通過MCU的硬件定時器捕獲低脈沖t后與時間常數(shù)T進行比較后進行判斷,繼而與上一幀數(shù)據(jù)比較,獲取解碼信息,所述的時間常數(shù)T的取值范圍為0至實 測最短同步頭時間之間,所述的判斷為有效捕獲的幀數(shù)F的取值范圍是大于0的整數(shù)。
進一步地,上述的適用于低脈沖時間的解碼方法,其中,所述的低脈沖t大于0且小于ts/16,則收到一位數(shù)據(jù),計為1;或是,所述的低脈沖t大于等于同步碼長度ts/16且小于同步碼長度ts/8,則收到一位數(shù)據(jù),計為0;或是,所述的低脈沖t大于等于同步碼長度ts/8且小于同步碼長度ts/2,則數(shù)據(jù)錯誤;或是,所述的低脈沖t大于等于同步碼長度ts/2,則收到同步碼。
更進一步地,上述的適用于低脈沖時間的解碼方法,其中,所述的解碼時,步驟1,捕獲到低脈沖t,將低脈沖t與時間常數(shù)T進行比較,若t大于T,則記為ts=t,n=0;步驟2,再次捕獲一個低脈沖t,若低脈沖t大于同步碼長度ts/2,則ts=t,n=0;若t大于ts/8,則跳到步驟1;若t大于等于ts/16,則收到一位數(shù)據(jù)1;否則,收到一位數(shù)據(jù)0,且n=n+1;若n大于等于N,則接收數(shù)據(jù)與上一幀數(shù)據(jù)比較,若兩者相同,則f=f+1,若不同,則f=1并丟棄之前收到的數(shù)據(jù)幀,若f大于等于F,則解碼成功,否則跳到步驟2。
再進一步地,上述的適用于低脈沖時間的解碼方法,其中,所述的解碼時,若F=1,則直接判斷解碼成功;若第一次收到數(shù)據(jù)幀,則不比較,且令f=1。
采用本發(fā)明技術方案,即便是遇到不同的廠家使用的電阻不一致而導致解碼出錯的情況,也可以通過有效的容錯率,根據(jù)設定的編碼格式,有效分析出數(shù)據(jù)寬、窄脈沖與同步頭符對應的比例關系。由此,在實際處理時,只需要知道同步碼、數(shù)據(jù)寬脈沖與數(shù)據(jù)窄脈沖三個中的任一值都可以由它們之間的比例關系計算出其它兩個。并且,由于同步碼的寬度最寬,由其計算數(shù)據(jù)寬、窄脈沖時間受干擾的影響最小。則解碼時只要捕獲到同 步碼的時間即可,提高了處理效率。
本發(fā)明的目的、優(yōu)點和特點,將通過下面優(yōu)先實施例的非限制性說明進行圖示和解釋,這些實施例是參照附圖僅作為例子給出的。
附圖說明
圖1是適用于低脈沖時間的解碼方法所涉及到的編碼格式示意圖。
圖2是本適用于低脈沖時間的解碼方法的實施流程示意圖。
具體實施方式
如圖1、圖2所示的適用于低脈沖時間的解碼方法,其與眾不同在于:為了便于實現(xiàn)只關注低脈沖時間來進行解碼,且可以允許適當?shù)恼`差,提高容錯率,首先設低脈沖為t,設同步碼長度為ts(通常為低脈沖),設1個數(shù)據(jù)位長度為td,設數(shù)據(jù)位寬脈沖為tw,設數(shù)據(jù)位窄脈沖為tn。同時,設上一個數(shù)據(jù)沿與當前捕獲的數(shù)據(jù)沿的長度為t,用來配合高脈沖或低脈沖,滿足不同工況的處理需要。并且,設時間常數(shù)為T,設已捕獲的數(shù)據(jù)位數(shù)量為n,設需要捕獲的數(shù)據(jù)位數(shù)量為N,設已捕獲到的數(shù)據(jù)幀數(shù)為f,設判斷為有效捕獲的幀數(shù)為F。
由此,可以設立關系式:ts=td*8=tw*32/3=tn*32,其中tw=12CLK,tn=4CLK。這樣,在解碼時,通過MCU的硬件定時器捕獲低脈沖t后與時間常數(shù)T進行比較后進行判斷,繼而與上一幀數(shù)據(jù)比較,獲取解碼信息。由于本發(fā)明所涉及的數(shù)據(jù)解碼基本在物理層,由此只有同步碼0和1。并且,為了提高實際數(shù)據(jù)處理的容錯率,減少運算數(shù)據(jù)過于冗長,時間常數(shù)T的取值范圍為0至實測最短同步頭時間之間。結合實際實施來看,脈沖的寬度是通過電阻阻值調(diào)節(jié)的,電阻阻值受溫度影響。同時,因為不同的廠家選擇的電阻阻值也有差別,為此,通過多次對比試驗后發(fā)現(xiàn)實測取值3ms效果較好。
與之對應的是,考慮到能夠?qū)Σ东@的幀數(shù)是否有效進行精確判斷,對于判斷為有效捕獲的幀數(shù)F的取值范圍是大于0的整數(shù)。同時,通過多次對比試驗后發(fā)現(xiàn),效捕獲的幀數(shù)F的值取2較為適宜。其原因在于,相鄰的兩幀數(shù)據(jù)同時出現(xiàn)相同的錯誤概率很小。而取1時數(shù)據(jù)是否錯誤無法判斷,沒有比較對象。同時,取大于2的值對提高錯誤碼判斷意義不大。F值越大,則需要檢測的數(shù)據(jù)幀越多,響應越慢。結合多種因素權衡后來看,還是2較為適宜。
結合本發(fā)明一較佳的實施方式來看,本發(fā)明所涉及的低脈沖t實際數(shù)值為大于0且小于ts/16,則收到一位數(shù)據(jù),計為1。如果低脈沖t大于等于同步碼長度ts/16且小于同步碼長度ts/8,則收到一位數(shù)據(jù),計為0。也有可能出現(xiàn)低脈沖t大于等于同步碼長度ts/8且小于同步碼長度ts/2,則表示這個數(shù)據(jù)錯誤。這些數(shù)據(jù)錯誤往往涉及干擾數(shù)據(jù),可以進行丟棄處理。并且,本發(fā)明涉及的低脈沖小于0~ts/16,與ts/16~ts/8這兩個條件就是容錯處理,且理論的低脈沖寬度為ts/32或ts*3/32。同時,也會出現(xiàn)低脈沖t大于等于同步碼長度ts/2的情況,這個狀態(tài)就表示則收到同步碼。具體來說,數(shù)據(jù)是串行進入MCU的,MCU的定時器每次捕獲一個低脈沖,記為時間t。當沒有檢測到同步碼時,若t大于T,則記ts為t,否則丟棄。這樣,即使出現(xiàn)誤差,在考慮實時性后也可忽略。
進一步來看,本發(fā)明所采用的具體解碼過程如下:首先,捕獲到低脈沖t,將低脈沖t與時間常數(shù)T進行比較。若t大于T,則記為ts=t,n=0。接著,再次捕獲一個低脈沖t,在此期間,若低脈沖t大于同步碼長度ts/2,則ts=t,n=0。若t大于ts/8,則返回到之前的捕獲步驟。若t大于等于ts/16,則收到一位數(shù)據(jù),記為1。否則,收到一位數(shù)據(jù),記為0,且n=n+1。
同時,為了減少數(shù)據(jù)的重復比較,影響處理效率,在上述的處理過程 中,若n大于等于N,則接收數(shù)據(jù)與上一幀數(shù)據(jù)比較。若兩者相同,則f=f+1。若不同,則f=1并丟棄之前收到的數(shù)據(jù)幀。并且,如果出現(xiàn)f大于等于F,則解碼成功。否則跳回到上述步驟,再次來對低脈沖t進行捕獲處理。
并且,考慮到縮減不必要的判斷流程,在實際的解碼期間,若出現(xiàn)F=1的情況,則直接判斷解碼成功。同時,如果是第一次收到數(shù)據(jù)幀,則不比較,且令f=1,便于后續(xù)處理。
通過上述的文字表述并結合附圖可以看出,采用本發(fā)明后,即便是遇到不同的廠家使用的電阻不一致而導致解碼出錯的情況,也可以通過有效的容錯率,根據(jù)設定的編碼格式,有效分析出數(shù)據(jù)寬、窄脈沖與同步頭符對應的比例關系。由此,在實際處理時,只需要知道同步碼、數(shù)據(jù)寬脈沖與數(shù)據(jù)窄脈沖三個中的任一值都可以由它們之間的比例關系計算出其它兩個。并且,由于同步碼的寬度最寬,由其計算數(shù)據(jù)寬、窄脈沖時間受干擾的影響最小。則解碼時只要捕獲到同步碼的時間即可,提高了處理效率。
當然,以上僅是本發(fā)明的具體應用范例,對本發(fā)明的保護范圍不構成任何限制。除上述實施例外,本發(fā)明還可以有其它實施方式。凡采用等同替換或等效變換形成的技術方案,均落在本發(fā)明所要求保護的范圍之內(nèi)。