本發明涉及無線網絡領域,特別是一種無線網絡設備間時鐘同步的方法。
背景技術:
無線自組網、無線傳感器網絡因其簡單可靠、部署方便、成本低廉等優點在物聯網、智能工業、智能交通、智慧城市和智能家居領域中得到越來越廣泛的應用。目前市面上存在的無線自組網、無線傳感器網絡大部分是一種非同步通訊網絡,各個設備節點采用各自獨立的晶振和系統時鐘運行無線網絡協議,并且采用主從問答的方式進行信息交互、指令傳輸,這些非同步無線通訊設備由于硬件晶振偏差,溫度飄移、傳輸延遲誤差等多種因素,無法保證無線網絡中設備節點間的同步信息采集和同步動作執行;而在某些應用環境中,對于信息的同步采集和動作同步執行至關重要,這些非同步無線通訊設備則無法勝任這些工作。
目前市面上存在采用無線令牌技術設計的無線網絡,這種無線網絡只能在令牌命令能夠達到的無線空域內實現設備間的同步,不能實現無線網絡多級級聯的設備間同步,且同步精度依賴于設備節點各自獨立的晶振和系統時鐘,同步精度不高且誤差大;隨著溫度的變化和運行時間延長,各個設備節點的晶振頻率會出現偏移,導致同步誤差會進一步加大。
在無線自組網、無線傳感器網絡領域存在較多的無線時鐘同步技術,但這些無線時鐘同步技術要么實現過程復雜、要么對無線網絡設備的硬件有特殊要求、要么受軟件操作延遲影響導致時鐘同步精度不夠高,這些無線時鐘同步技術難以在無線自組網、無線傳感器網絡、低功耗無線網絡領域得到很好的應用。
當前很多無線聯網的應用中,為了進行設備節點的時鐘同步,會采用傳統的NTP、SNTP協議進行時間同步,該同步方式雖然實現簡單,但其僅能實現點對點設備的時間同步,僅能用于日歷時間的同步,不能實現系統時鐘的頻率和相位同步,受無線傳輸多徑干擾嚴重,同步精度較低;對于同步精度較高的應用環境,通常會在每個設備上增加GPS時鐘同步硬件實現高精度的時鐘同步,該同步方式雖然同步精度高,但需要增加昂貴的GPS時鐘同步硬件,且對CPU處理器有較高的要求。
電池供電的低功耗無線自組網、無線傳感器網絡設備的應用環境中,無線設備進入休眠需要配置一個統一的休眠時鐘,若休眠時鐘不同步,會造成部分設備被喚醒,部分設備還處于休眠狀態,如此情況下進行無線通訊,會造成部分設備無法接收通訊指令的問題;若過長保持設備的喚醒狀態,則又會增大設備的耗電量,減少電池供電設備的繼航時間,如果增加昂貴的時鐘同步芯片,又會進一步增加設備的耗電量。
技術實現要素:
本發明所要解決的技術問題是提供一種無線網絡設備間時鐘同步的方法,時鐘同步實現過程簡便、無特殊硬件要求、同步誤差小,通過該時鐘同步方法可以實現無線網絡設備間系統時鐘和任務調度時鐘的同步,對于無線設備間的多級級聯應用也能夠保證很好的時鐘同步精度。
為解決上述技術問題,本發明所采用的技術方案是:一種無線網絡設備間時鐘同步的方法,包括以下步驟:
一、時鐘源設備與至少一個時鐘從設備網絡互連;
二、時鐘源設備獲得基準時鐘,時鐘從設備獲得未經同步的基準時鐘;
三、時鐘源設備與時鐘從設備之間通過時鐘同步幀進行時鐘信息的交互;
四、時鐘源設備將包括基準時鐘頻率和相位的信息傳輸到時鐘從設備,時鐘從設備中的CPU處理器計算出時鐘源設備的基準時鐘,并根據基準時鐘來校正自身的基準時鐘;
通過以上步驟實現無線網絡設備間的時鐘同步。
優選的方案中,所述的時鐘從設備為多個,時鐘源設備與多個時鐘從設備組成多級樹狀拓撲結構;
其中,時鐘源設備同時向多個時鐘從設備進行時鐘同步;
時鐘從設備從多個時鐘源設備中選擇時鐘精度高的時鐘源設備進行時鐘同步。選擇依據是根據時鐘源級別和Offset級別。
優選的方案中,所述的時鐘源設備包括無線通訊模塊、CPU和硬件晶振或CPU時鐘;
無線通訊模塊用于進行無線網絡的數據通訊和無線時鐘同步信息的傳輸;
CPU用于處理任務調度和無線時鐘同步信息,并進行時鐘同步計算及校正;
硬件晶振或CPU時鐘為CPU處理器運行提供一個基礎的本地時鐘。
優選的方案中,步驟二中:
a、時鐘源設備將來源于外部或內部的時鐘信號接入CPU的IO中斷管腳,并配置為雙邊沿觸發模式,記錄時鐘信號的脈沖寬度標準時間(t0);
b、CPU通過配置定時器對CPU內部運行的主時鐘頻率進行n分頻,產生一個定時器中斷;
c、CPU內的計數器對定時器中斷進行+1累計計數;
由以上步驟獲得基準時鐘。
優選的方案中,還包括校準基準時鐘的步驟:
外部或內部的時鐘信號輸入至CPU的IO中斷管腳后,觸發IO管腳中斷服務,在正邊沿中斷時,記錄基準時鐘的計數器的數值t1;在負邊沿中斷時,記錄基準時鐘的計數器的數字t2,然后計算測量得到時鐘信號脈沖寬度時間t3;
比較輸入的時鐘信號脈沖寬度時間t0和測量時鐘信號脈沖寬度時間t3;
若t0與t3之間誤差不超過設定的計數,則可以判定基準時鐘計數器計數精度滿足要求,標記為基準時鐘同頻可用;
若t0與t3之間誤差超過設定的計數,則計算定時器的分頻偏移值,然后用分頻偏移值修正定時器達到標準的的定時精度,重復以上步驟,進行定時器的精度修正,始終控制基準時鐘計數器的計時時間同步到標準的基準時鐘,直到標記的基準時鐘同頻可用為止。
優選的方案中,還包括基準時鐘的相位同步步驟:
CPU的IO中斷管腳接收到輸入時鐘信號,在每秒的0起始時刻的上升沿或下降沿中斷時,CPU將基準時鐘的計數器取整,實現對每秒的0起始時刻進行同相位處理,保證基準時鐘的計數器的每秒的0起始時刻和輸入時鐘信號的0起始時刻同步,完成秒相位同步,標記基準時鐘同相可用;
同頻可用和同相可用后,作為主時鐘源的無線設備對時鐘從設備進行時鐘頻率和相位的同步操作。
優選的方案中,所述的時鐘從設備包括無線通訊模塊、CPU和硬件晶振或CPU時鐘;
無線通訊模塊用于進行無線網絡的數據通訊和無線時鐘同步信息的傳輸;
CPU用于處理任務調度和無線時鐘同步信息,并進行時鐘同步計算及校正;
硬件晶振或CPU時鐘為CPU運行提供一個基礎的本地時鐘;
時鐘從設備的CPU配置一個定時器對CPU內部運行主時鐘頻率進行n分頻,產生一個定時器中斷;
CPU內的計數器對定時器中斷進行+1累計計數;
時鐘從設備中由以上步驟獲得未同步的基準時鐘,由無線接收中斷接收到時鐘源設備發送過來時鐘同步幀中的兩個嚴格控制發送間隔的概略時鐘幀來校準基準時鐘的同頻,由時鐘同步幀中的同步請求幀和同步時鐘幀來校準基準時鐘的同相位和同頻的二次微調。
優選的方案中,所述的時鐘同步幀包括概略時鐘幀、同步請求幀和同步時鐘幀;
概略時鐘幀包括秒時間段和基準時鐘段,秒時間段記錄從某時刻離當前時刻的秒數,基準時鐘段為時鐘源設備的計數器的時鐘計數;概略時鐘幀同時通知時鐘從設備,時鐘源設備的時鐘是否已經同步到標準時鐘,是否可以進行時鐘同步;概略時鐘幀幀每隔固定時段定時發送兩次,兩次的時間間隔由基準時鐘嚴格控制;用于時鐘從設備的無線接收中斷進行定時器的校準;
時鐘從設備在初次上電后、重啟或者時鐘失步的情況下,收到主時鐘源A的概略時鐘幀后,需要進行無線時鐘同步時,向時鐘源設備發起同步請求幀;或者在時鐘從設備的基準時鐘每隔固定時間向時鐘源設備發起同步請求幀;同步請求幀包括幀頭、幀類型、從設備地址和從設備狀態信息。
同步時鐘幀為時鐘源設備接收到時鐘從設備的同步請求幀后,記錄計數器的數字t2信息,在一個時間段后向時鐘從設備發送同步請求幀;同步請求幀包括幀頭、幀類型、時鐘源地址、時鐘源級別、Offset級別、從設備地址和計數器的數字t2信息。
進一步優選的方案中,通過時鐘源設備與時鐘從設備之間的時鐘同步幀交互,修正時鐘從設備的定時器達到標準的中斷時間,抵消幀傳輸延遲,獲得校準后的同頻可用同相可用的基準時鐘。
進一步優選的方案中,同步請求幀和同步時鐘幀進行時鐘同步交互時,記錄多次的Offset時鐘差值;若判斷Offset時鐘差值始終為正數,則判斷得出時鐘從設備的定時器的計時時間比校準計時時間長,微調從設備定時器的計數時間變短;修正定時器達到標準的定時精度;
若判斷Offset時鐘差值始終為負數,則微調定時器的計時時間變長,修正定時器達到標準的計數時間精度;
通過對Offset時鐘差值的多次判斷比較,對定時器的計時時間進行二次微調。
本發明進行時鐘同步的眾多設備中,將提供基準時鐘的設備定義為時鐘源設備,以下簡稱時鐘源;利用時鐘源設備的基準時鐘進行時鐘同步校正的設備定義為時鐘從設備,以下簡稱從設備;時鐘源和從設備通過時鐘同步幀進行時鐘信息的交互,時鐘源設備將基準時鐘頻率、相位等信息傳輸到從設備上,從設備中的CPU計算出時鐘源設備的基準時鐘,并根據基準時鐘來校正自身的系統時鐘,從而達到無線網絡設備間的時鐘同步目的。
本發明提供的一種無線網絡設備間時鐘同步的方法,同步的基準時鐘可以用于CPU的系統任務同步調度、同步控制指令執行、外部信號高精度同步測量、高速移動物的同步測量,例如高速移動過程中的車輛行駛速度的測量、無線通訊中的高速同步跳頻通訊等。本發明的方法能夠針對更低廉更低速的運行主頻的CPU,例如運行主頻<32KHz的超低功耗CPU的應用,例如將定時器T1的定時設定為0.25ms,依舊能夠實現時鐘同步誤差<1ms的時鐘同步,足以滿足基本的無線任務調度,滿足超低功耗應用中設備的同步喚醒任務。
本發明的方法不僅可以完成無線網絡設備間日歷時間的同步,還能夠實現無線網絡設備間系統時鐘頻率和時鐘相位的同步;即使各個無線網絡設備中CPU處理器晶振出現頻率嚴重偏差、溫度飄移的情況下,也能夠保證無線網絡設備間系統時鐘的同步和一致性。
本發明可以在任意具有定時器中斷和IO中斷的CPU處理器上實現時鐘同步。
本發明的時鐘源設備在同一時刻,利用一幀無線時鐘同步幀可以同時向8個從設備進行時鐘同步;利用分幀方式,每個時鐘源可以實現多達1000個從設備的時鐘同步。
附圖說明
下面結合附圖和實施例對本發明作進一步說明:
圖1為本發明的多級級聯拓撲結構示意圖。
圖2為本發明中時鐘源設備和時鐘從設備的硬件結構示意圖。
圖3為本發明中時鐘源設備基準時鐘產生過程示意圖。
圖4為本發明中時鐘源設備和時鐘從設備時鐘同步幀交互和修正示意圖。
圖5為本發明中同步時鐘幀交互時時鐘差值修正的示意圖。
圖6為本發明中時鐘同步流程圖。
圖7為本發明中的多時鐘源選擇流程圖。
圖8為本發明中的中斷處理邏輯流程圖。
圖9為本發明中定時器T1的計時時間中斷流程圖。
具體實施方式
實施例1:
本發明提供了一種無線網絡設備間時鐘同步的方法。
一種無線網絡設備間時鐘同步的方法,包括以下步驟:
一、時鐘源設備與至少一個時鐘從設備網絡互連;
二、時鐘源設備獲得基準時鐘,時鐘從設備獲得未經同步的基準時鐘;
三、時鐘源設備與時鐘從設備之間通過時鐘同步幀進行時鐘信息的交互;
四、時鐘源設備將包括基準時鐘頻率和相位的信息傳輸到時鐘從設備,時鐘從設備中的CPU處理器計算出時鐘源設備的基準時鐘,并根據基準時鐘來校正自身的基準時鐘;
通過以上步驟實現無線網絡設備間的時鐘同步。
優選的方案中,所述的時鐘從設備為多個,時鐘源設備與多個時鐘從設備組成多級樹狀拓撲結構。
如圖1中所示,本發明的時鐘同步方法,可以實現多級時鐘同步,如提供基準時鐘的時鐘源A向從設備B、C進行了時鐘同步,從設備B完成了時鐘同步后,經過授權處理后,從設備B可以做為時鐘源向從設備D、E、F進行時鐘同步;如圖1中所示。本發明將時鐘源A定義為第0級時鐘源,簡稱主時鐘源,從設備B定義為第1級時鐘源,如此設備D、E、F還可以作為第2級時鐘源給其它無線設備提供時鐘同步;本發明的時鐘同步方法完成的時鐘同步誤差<0.3us,在保證整個無線網絡設備時鐘同步精度<1us時,至少可允許設備進行3級級聯時鐘同步,在保證整個無線網絡時鐘同步精度<1ms時,且控制時鐘源無線信號覆蓋距離,本發明可允許高達3000級級聯時鐘同步。
本發明中的時鐘源和從設備進行時鐘同步,由無線通訊模塊、CPU、硬件晶振三部分組成,如圖2中所示,無線通訊模塊用于進行無線網絡的數據通訊和無線時鐘同步信息的傳輸,CPU用于處理無線設備任務調度和無線時鐘同步信息,并進行無線設備時鐘同步計算及校正,硬件晶振為CPU處理器運行提供一個基礎的本地時鐘。
本發明的無線網絡中第0級主時鐘源的基礎時鐘可以來源于衛星時鐘、GPS時鐘、以太網時鐘等更高級別、更高精度的外部時鐘,也可以來源于時鐘源設備自身的硬件晶振時鐘,如圖3中所示;各個無線網絡設備,通過本發明將其自身系統時鐘和主時鐘源進行時鐘頻率和相位同步后,無線網絡中的所有設備就可以按照統一的時鐘頻率、統一的時刻同時進行信息采集、動作執行、任務調度、同步休眠喚醒、同步無線發送接收、同步跳頻通訊等工作。
本發明中主時鐘源基準時鐘產生過程,如圖3、5中所示:
1、將來源于GPS等外部高精度的時鐘信號接入到主時鐘源CPU處理器的IO中斷管腳,并配置IO中斷管腳配置為雙邊沿觸發模式,同時記錄外部高精度的時鐘信號高(低)脈沖寬度的標準時間t0。
2、CPU通過配置定時器T1對CPU內部高速運行主時鐘頻率進行n分頻,產生一個0.1us的定時器中斷,并準備一個32位的計數器,在定時器T1中斷服務中對該計數器進行+1累計計數,計數器每加1表示經過0.1us的時間,該計數器命名為基準時鐘計數器,用符號BTC(Base Tick Count)表示;因BTC每0.1us進行一次累計計數,由此T1定時器中斷累計計數過程中可以產生一個10MHz的基準時鐘,用符號BSC(Base Source Clock)表示。
3、在外部高精度時鐘信號高(低)脈沖輸出到CPU的IO中斷管腳后,會觸發IO管腳中斷服務,在正邊沿(上升沿、下降沿)中斷時,記錄基準時鐘計數器BTC的數值t1,在負邊沿(下降沿、上升沿)中斷時記錄基準時鐘計數器的數字t2,然后用公式t3=(t2-t1)×0.1us計算測量到的外部高精度時鐘信號脈沖寬度時間。
4、比較外部高精度的時鐘信號高(低)脈沖寬度的實際時間t0和測量時間t3。
5、若t0和t3之間誤差不超過±3個BTC計數,即±0.3us,則可以判定基準時鐘計數器BTC計數精度滿足要求,同時標記時鐘源基準時鐘BSC同頻可用。
6、設備時鐘未同步之前,受晶振精度和溫度飄移的影響,初次配置的定時器T1的0.1us計時精度會有誤差存在,若t0和t3之間誤差超過±3個BTC計數,即±0.3us,則用公式m=(t3-t0)÷0.1us+n計算定時器T1的分頻偏移。
m值為分頻偏移;
n為當前定時器T1的分頻因子。
用m值修正定時器T1達到標準的0.1us的定時精度。
7、重復3~6步,進行定時器T1的精度修正,始終控制基準時鐘計數器BTC的計時時間同步到標準的0.1us時間,直到進入步驟5中標記基準時鐘BSC同頻可用為止,標記基準時鐘BSC同頻可用后,定時器T1的0.1us計時時間的誤差范圍在±1/n之內,在100MHz主頻的CPU應用環境中,0.1us計時時間的誤差為±10ns,采用更高主頻的CPU時0.1us計時時間的誤差將更小;
8、本發明中,CPU的IO中斷管腳接收到GPS等外部高精度時鐘信號每秒的0起始時刻的上升沿或下降沿中斷時,CPU處理器將基準時鐘計數器BTC對1000×1000×10取整,即將BTC的秒計數取整,實現對每秒的0起始時刻進行同相位處理,保證BTC的每秒的0起始時刻和GPS等外部高精度時鐘信號每秒的0起始時刻同步,完成秒相位同步,標記基準時鐘BSC同相可用;9、該10MHz的基準時鐘BSC標記了同頻可用和同相可用后,作為主時鐘源的無線設備時鐘源A即可以對其它無線從設備B、C、D、E、F……等通過無線信號進行時鐘頻率和相位的同步操作。
如圖1中,本發明中需要進行時鐘同步的B、C、D、E、F……等從設備的CPU也和主時鐘源A類似,通過配置定時器T1對CPU內部高速運行時鐘進行n分頻,產生一個0.1us的定時器中斷,并準備一個32位的計數器,在T1定時器中斷服務中對該計數器進行+1累計計數,產生一個基準時鐘計數器BTC和一個10MHz的基準時鐘BSC,該BTC和BSC都處于未同步狀態,由主時鐘源A通過無線信號對這些設備進行時鐘同步。
本發明通過無線信號進行時鐘同步,其同步幀分為概略時鐘幀、同步請求幀、同步時鐘幀3類。
第一類幀為概略時鐘幀,概略時鐘幀用于主時鐘源A向從設備B廣播概略時間,概略時間分為秒時間段和BTC段,秒時間段記錄從2000年1月1日0時0分0秒距離當前時刻的秒數,BTC為主時鐘源A的BTC計數值,同時通知從設備B,主時鐘源A的時鐘是否已經同步到標準時鐘,是否可以進行時鐘同步;該幀長度固定為22個字節,包含幀頭、幀類型、時鐘源地址、時鐘源級別、Offset級別、概略時間秒段、概略時間BTC段、同頻標志、同相標志、CRC16校驗共10個部分,如下表所示。
該幀每隔60秒定時發送兩次,兩次的時間間隔由BSC嚴格控制在20ms的間隔,幀的發送方式為:主時鐘源A將概略時鐘幀寫入到無線通訊模塊的FIFO中,不立即進行無線數據的發送,向無線通訊模塊寫入發送標志位進行幀發送,同時進行20ms的標準時間定時,當20ms定時中斷到后,利用定時中斷再次立即寫入發送狀態標志位進行無線發送,再次重復發送一次概略時鐘幀,保證從設備B接收到兩個間隔為20ms標準時間的概略時鐘幀,產生兩個無線接收完成中斷,利用從設備B的BTC針對這兩個無線接收完成中斷的20ms時間間隔進行測量,利用本實施例主時鐘源基準時鐘產生過程的第1~6條計算同步方法,修正定時器T1達到標準的0.1us的定時精度,保證從設備的BTC的計數精度滿足系統要求;由于概略時鐘幀的發送啟動和接收完成都采用中斷方式,避免了軟件操作延遲誤差和硬件傳輸延遲誤差,可以保證了從設備B接收到的兩幀間隔為標準的20ms,保證了從設備B的定時器T1的精度;從設備B通過概略時鐘幀可以得到當前的概略時間,進行年、月、日、時、分、秒的初步校正。
第二類幀為同步請求幀,從設備B在初次上電后、重啟或者時鐘失步的情況下,收到主時鐘源A的概略時鐘幀后,需要進行無線時鐘同步時,向主時鐘源A發起同步請求幀;或者BTC的每隔60秒向主時鐘源A發起同步請求幀;該幀長度固定為64個字節,包含幀頭、幀類型、從設備地址、從設備狀態、填充字節、CRC16校驗共6個部分,如下表所示。
從設備B發送同步請求幀依舊采用將同步請求幀寫入到無線通訊模塊的FIFO中,不立即進行無線數據的發送,由系統任務調度進入發送狀態的方式進行發送,向無線通訊模塊寫入發送標志位進行幀發送,立即記錄同步請求幀發送開始時的BTC值t1_B;主時鐘源A收到同步請求幀的接收完成中斷后,立即記錄同步請求幀接收完成時的BTC值t2,并在主時鐘源A的數據庫中記錄t2_B,表示接收從設備B同步請求幀的BTC值;同理,主時鐘源A也會接收到從設備C的同步請求幀,在數據庫中記錄t2_C,依次記錄t2_D、t2_E、t2_F等,主時鐘源A總共最多可以記錄1000條t2記錄;填充字節共54字節用0x00進行填充。
第三類幀為同步時鐘幀,幀長度固定為64個字節,如下表所示,包含幀頭、幀類型、時鐘源地址、時鐘源級別、Offset級別、從設備地址及t2信息、填充字節、BTC值、CRC16校驗幾個部分,每個同步時鐘幀一次最多可以傳輸8個從設備的t2信息,若少于8個從設備請求同步,則將空余的從設備地址及t2信息填充為0x00;主時鐘源A會在接收到從設備B、C、D、E、F……等的同步請求幀后記錄t2信息,并在5s的時間內以無線信號向從設備廣播發送同步時鐘幀;該幀在發送前按照幀格式組織同步時鐘幀及填寫從設備的t2信息,并將幀中除了t3和CRC16的6個字節外的其他所有幀數據先寫入無線通訊模塊的FIFO中,然后啟動一個20ms的定時器中斷,同時立即記錄主時鐘源A的當前的BTC值t3,接下來再計算幀CRC并將同步時鐘幀的t3和CRC16字段寫入無線通訊模塊的FIFO中,待20ms的定時器中斷到后,由中斷服務立即進入幀發送狀態,向無線通訊模塊寫入發送標志位進行幀發送,實際幀發送的準確時刻為t3'=t3+20ms;當從設備B接收到同步時鐘幀的接收完成中斷后,立即記錄同步時鐘幀接收完成時的BTC值t4_B;同理其他從設備C、D、E、F……等接收到同步時鐘幀中斷后各自記錄t4_C、t4_D、t4_E、t4_F……等;
通過上述三類同步幀的交互,如圖4中所示,從設備B在接收到主時鐘源A的間隔20ms的概略時鐘幀后,通過主時鐘源基準時鐘產生過程的第1~6條計算同步方法,修正定時器T1達到標準的0.1us的定時精度,獲得校準后的同頻可用同相可用的BSC和BTC;然后從設備B在交互過程中記錄了BTC的t1_B和t4_B,同時從同步時鐘幀中提取了t2_B和t3;將4個BTC值進行預處理T1=t1_B、T2=t2_B、T3=t3'=t3+20ms,T4=t4_B,獲得T1、T2、T3、T4四個BTC值,T2-T1為同步請求幀B到A的時鐘誤差和幀正向傳輸延遲,T3-T4為同步時鐘幀A到B的時鐘誤差和幀反向傳輸延遲。由于同步請求幀和同步時鐘幀的長度相同,都為64字節,兩幀傳輸延遲數值相同符號相反,將兩個差值進行代數和,則互相抵消了幀傳輸延遲,然后將代數和除以2,可以求得從設備B到主時鐘源A的時鐘誤差,即利用公式Offset=((T2-T1)+(T3-T4))÷2可以計算從設備B和主時鐘源A的BTC值的時鐘差值,將從設備B的BTC加上誤差值Offset就可以讓從設備B獲得和主時鐘源A相同的BTC值;前面經過概略時鐘幀兩幀中斷對從設備B的定時器T1的0.1us計時進行了同步,再次利用同步請求幀和同步時鐘幀對從設備BTC值進行了同步,使得在相同的0.1us計時的定時器T1的計數條件下,對相同BTC值進行+1累計計數,可以保證在后續設備運行過程中,主時鐘源A和從設備B的BTC值相同,同時也保證了由此產生的10MHz的BSC時鐘同頻率和同相位;從設備C采用相同的方式獲得和主時鐘源A相同的BTC值,實現和主時鐘源A的時鐘頻率和相位的同步。
如圖4中,定義:T1=t1_B,T2=t2_B,T3=t3'=t3+30ms,T4=t4_B
請求幀延遲和BTC正向誤差:α=T2-T1
時鐘幀延遲和BTC反向誤差:β=T3-T4
BTC正向反向誤差代數和:Offset=(α)+(-β)=(T2-T1)+(T3-T4)
從設備B和時鐘源A的BTC誤差均值:Offset=((T2-T1)+(T3-T4))÷2
本發明主時鐘源的BTC值被外部高精度時鐘信號每秒的0起始時刻進行了同相處理,在從設備同主時鐘源進行了時鐘頻率和相位的同步后,從設備每秒的0起始時刻和外部高精度時鐘信號保持同相,其秒相位誤差<0.12°。
如圖5中所示,同步請求幀和同步時鐘幀進行時鐘同步交互時,通過多次交互,記錄了多次的Offset時鐘差值,若判斷Offset時鐘差值始終為正數,則可以判斷得出從設備的定時器T1的0.1us計時時間比校準0.1us計時時間長,BTC計數較慢,從而微調從設備定時器T1的0.1us計數時間變短,修正定時器T1達到標準的0.1us的定時精度;若判斷Offset時鐘差值始終為負數,則微調定時器T1的0.1us計時時間變長,修正定時器T1達到標準的0.1us的定時精度;如此通過Offset時鐘差值的多次判斷比較,對定時器T1的0.1us計時進行二次微調;在無線網絡設備中CPU處理器晶振出現頻率偏差、溫度飄移的情況時,經過對定時器T1的0.1us計時的二次微調后,定時器T1精度可以始終鎖定在0.1us,保證了設備時鐘的同頻同相。
同步請求幀和同步時鐘幀進行時鐘同步交互時,通過記錄連續20個最新的Offset時鐘差值,并對Offset時鐘差值取絕對值后進行累加求平均值,將平均值記錄為Offset級別,平均值越小越接近于0,則Offset級別越高,時鐘精度越高、頻率偏移越小,設備硬件晶振穩定性越好;在有多個同級時鐘源同時提供同步時鐘的情況下,從設備選擇Offset平均值小、Offset級別高的時鐘源進行時鐘同步,從而更進一步剔除了時鐘頻率的偏移震蕩,保證了時鐘的同頻率同相位。
通過對該10MHz的BSC時鐘進行10~100000分頻,獲得1MHz~100Hz的系統任務調度時鐘,可以獲得1us~10ms的同步系統任務調度周期,在對BSC進行10~100000分頻時,對BTS采用整十整百倍的方式進行分頻,通過分頻進一步的避免了硬件時鐘頻率飄移誤差,提高了系統任務調度時鐘精度,保證了系統任務調度時鐘的同頻率同相位,嚴格保證了系統任務的同步執行。
同理從設備C、D、E、F……等也可以獲得相同的同步系統任務調度時鐘。
本發明的時鐘源可以同時向多個從設備提供時鐘同步,在有多個時鐘源的情況下從設備也可以從多個時鐘源獲得時鐘同步,如圖5中所示,在從設備X發送同步請求幀后,時鐘源O、P、Q都會收到X的同步請求幀,隨后時鐘源O、P、Q會向從設備X發送同步時鐘幀,從設備X收到3個時鐘同步時鐘幀后,優先選擇時鐘源級別高的時鐘源(P、Q)進行時鐘同步,若時鐘源級別相同(P、Q)時,選擇Offset級別高的時鐘源(P)進行時鐘同步。
由于本發明的定時器T1采用的是0.1us的定時,且所有的同步任務的執行和同步幀的交互,包括各種定時計時都采用的是中斷的方式,避免了時鐘同步的軟件操作延遲誤差,保證時鐘源和從設備的BTC和BSC的同步誤差<0.3us;本發明中采用的中斷包含:
1、定時器T1的0.1us計時時間中斷。
2、外部高精度時鐘IO口中斷。
3、無線接收中斷。
4、20ms定時間隔中斷四個;其中定時器T1的0.1us計時時間中斷優先級設定為最高優先級;無線接收中斷、20ms定時間隔中斷設定為次高優先級;外部高精度時鐘IO口中斷優先級設定為第3優先級;所有中斷服務程序采用先快速處理中斷標志后處理器中斷服務的方式來保證定時周期的一致性,確保了時鐘同步的精度。
本發明從設備在接收概略時鐘幀時,判斷兩次接收中斷的時間間隔應該<50ms,若時間間隔≥50ms,則判定接收到的概略時鐘幀無效,避免了無線干擾和數據幀丟失導致概略時鐘幀的精度降低。
本發明中,若從設備B發送的同步請求幀由于無線干擾等原因丟失,時鐘源設備A發送的同步時鐘幀中不會攜帶從設備B的t2信息,則從設備B在30s之后會重新發送同步請求幀,重新向時鐘源獲取時鐘同步,避免了無線干擾和數據幀丟失導致時鐘無法同步的問題。
本發明中通過Offset時鐘差值對定時器T1的0.1us計時進行二次微調,并通過記錄的連續20個最新的Offset時鐘差值的累加求平均,可以獲得一個較小Offset時鐘差值的定時器T1的0.1us計時的配置,從而利用累計平均算法剔除了無線通訊中多徑干擾的誤差。
本發明從設備B在接收概略時鐘幀時,判斷幀中的概略時鐘和本地的秒數和BTC數字相差≥30秒時,從設備B直接采用概略時鐘幀中的時鐘進行一次概略同步,后續再利用同步請求幀和同步時鐘幀進行高精度的時鐘同步,如此可以使得無線設備能夠快速的進入時鐘同步狀態。
本發明對定時器T1的相關配置參數和分頻系數值直接保存到CPU處理器的片內FLASH中,保證了設備掉電重啟后,快速配置定時器T1、快速發起同步請求幀、快速進入同步時鐘交互流程,使得無線設備能夠快速的進入時鐘同步狀態。
實施例2:
在實施例1的基礎上,本發明可以采用不同的CPU和無線通訊模塊實施,下面結合附圖進一步說明。
本發明中的設備有如下幾個部分組成,如圖2中所示:
1、CPU處理器,本實施例采用STM32F205RE芯片,該芯片處理器主時鐘為120MHz,通過處理器的定時器T1對120MHz的主時鐘進行12分頻,產生一個0.1us的定時中斷;
2、無線通訊模塊,本實施例采用SI4438芯片進行無線同步數據的發送和接收,同時可以實現無線數據的低功耗發送接收;
3、外部高精度時鐘輸入接口,本實施例采用STM32F205RE芯片的定時器T2的TIM2_CH1IO引腳,設備作為主時鐘源時用于接收外部高精度的GPS等外部時鐘信號,進行外部高精度時鐘的校正,設備作為從設備時,該IO引腳可以不需要連接任何設備或硬件;
4、硬件晶振,本實施例采用一個25MHz的無源晶振,為CPU處理器提供基礎運行的硬件時鐘。
本實施例中,硬件晶振不是必選器件,可以不需要,在沒有安裝25MHz的無源晶振的情況下,通過配置STM32F205RE芯片采用內部的36MHz時鐘作為CPU處理器主時鐘,通過定時器T1進行36分頻,產生1us的定時中斷,在此應用環境下采用本發明相同的時鐘同步方法,將產生1us的BTC計數和1MHz的BSC時鐘,可以保證時鐘同步誤差<3us。
本發明的同步流程如圖3~6所示:
1、時鐘源和從設備CPU處理器生產120MHz的主頻。
2、時鐘源和從設備T1定時器0.1us計時,產生BTC和BSC。
3、時鐘源和從設備利用BTC進行標準時鐘信號測量。
4、主時鐘源的BTC測量外部高精度時鐘信號。
5、時鐘源和從設備利用利用標準信號測量結果進行T1定時器0.1us計時準確度一次校正。
6、時鐘源同步可用后,間隔20ms通過無線信號廣播概略時鐘幀。
7、從設備利用無線接收中斷接收概略時鐘幀。
8、從設備收到概略時鐘幀后,用BTC測量20ms間隔,重復逐步5進行T1定時器0.1us計時準確度一次校正。
9、從設備需要進行時鐘同步時,進行時鐘請求幀發送,并記錄發送時刻的BTC值t1。
10、從設備利用無線通訊模塊發送時鐘請求幀。
11、時鐘源接收到同步請求幀。
12、時鐘源利用接收完成中斷記錄接收完成時刻的BTC值t2,并將t2記入數據庫。
13、時鐘源在收到同步請求幀5秒內,準備同步時鐘幀,記錄時間t3并將t3寫入同步時鐘幀中。
14、間隔20ms后,利用20ms定時器中斷發送同步時鐘幀。
15、從設備接收到同步時鐘幀。
16、從設備利用接收完成中斷記錄接收完成時刻的BTC值t4。
17、從設備利用t1、t2、t3、t4計算時鐘源和從設備之間BTC的差值Offset。
18、從設備利用BTC差值對進行自身BTC值進行校正。
19、從設備計算得到多次BTC的差值Offset后,進行Offset級別計算。
20、從設備利用Offset均值對T1定時器進行二次微調。
21、根據Offset均值的正負符號調快或者調慢T1定時器0.1us計時。
22、從設備和時鐘源進行了時鐘同頻率同相位同步后,進行同步時鐘分頻。
23、進行分頻后的同步時鐘可以輸出給應用程序進行系統任務調度和低功耗任務休眠計時。
多時鐘源選擇流程,如圖7中:
1、記錄當前的時刻Tm。
2、判斷上次時鐘同步的時間距離當前時刻超過300秒,超過則清楚當前時鐘源地址、時鐘源級別、Offset級別,并標記設備無時鐘源。
3、接收同步時鐘幀,計算同步時鐘幀Offset值,根據同步時鐘幀中的時鐘源地址保存Offset值,并計算同步時鐘幀中的時鐘源地址的Offset級別,本發明中每個不同的時鐘源記錄最新的20個Offset值進行Offset級別計算。
4、從設備判斷當前是否標記了設備無時鐘源,若是則將接收到的同步時鐘幀中的時鐘源地址作為時鐘源,并進行BTC校正,同時記錄當前時鐘源地址和當前時鐘同步的時刻Tn。
5、若設備時鐘源可用,則判斷同步時鐘幀是否為當前時鐘源,若為當前時鐘源,則進行BTC值校正。
6、若時鐘源級別高,時鐘源級別值<當前時鐘源級別值,則切換時鐘源為同步時鐘幀的時鐘源,并進行BTC校正。
7、若時鐘源級別相同,時鐘源級別值==當前時鐘源級別值,則判斷Offset級別。
8、若Offset級別高,Offset級別值<當前Offset級別值,則切換時鐘源為同步時鐘幀的時鐘源,并進行BTC校正,否則直接結束,丟棄收到的同步時鐘幀。
本發明中斷處理邏輯,如圖8中所示:
1、通過定時器T1的0.1us中斷產生0.1us的BTC計數,由BTC生成BSC時鐘并通過分頻,獲得系統任務調度時鐘。
2、主時鐘源設備通過IO中斷對外部高精度時鐘信號脈沖進行邊沿檢測,由BTC計數值進行脈沖信號寬度進行測量,與標準時間對比,并對定時器T1進行一次校正。
3、主時鐘源設備通過系統任務調度時鐘進行系統任務調度,進行概略時鐘幀的發送,通過20ms定時中斷控制概略時鐘幀兩次發送間隔為標準的20ms。
4、從設備無線接收中斷通過接收到的兩次間隔20ms的概略時鐘幀,計算標準計時20ms,對定時器T1進行一次校正;通過系統任務調度時鐘進行系統任務調度發送同步請求幀和同步時鐘幀,在寫入發送狀態標志位時記錄t1、t3,無線接收中斷記錄t2、t4,并計算Offset偏差,進行BTC同步校正,同時進行Offset級別計算和均值計算,通過Offset的偏移對定時器T1進行二次微調,保證定時器T1的0.1us計時時間的精度,保證BTC、BSC時鐘源同步、系統任務調度時鐘的同步,保證了無線網絡設備間任務的同步執行。
定時器T1的0.1us計時時間中斷流程,如圖9中所示:
1、進行T1定時器初始化并寫入計數初值。
2、配置中斷優先級為最高級別,保證定時器T1的0.1us計時時間精度。
3、開啟定時器中斷,等待定時器T1的0.1us計時時間到。
4、定時器T1的0.1us計時時間到,進入T1定時中斷服務。
5、立即進行計數初值重轉載。
6、計數初值重轉載后立即重置開啟定時器中斷,重新開始新一輪0.1us計時。
7、進行BTC計數累加。
8、T1定時中斷服務結束,退出中斷服務程序。
上述的實施例僅為本發明的優選技術方案,而不應視為對于本發明的限制,本申請中的實施例及實施例中的特征在不沖突的情況下,可以相互任意組合。本發明的保護范圍應以權利要求記載的技術方案,包括權利要求記載的技術方案中技術特征的等同替換方案為保護范圍。即在此范圍內的等同替換改進,也在本發明的保護范圍之內。