當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于STM32的SNTP授時(shí)服務(wù)器的研究與設(shè)計(jì)

摘要:針對工控領(lǐng)域?qū)r(shí)間同步的要求,給出了以STM32W5100為核心來搭建網(wǎng)絡(luò)硬件平臺(tái),并在其上實(shí)現(xiàn)簡單網(wǎng)絡(luò)時(shí)間協(xié)議(SNTP),從而建立嵌入式授時(shí)服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)方法。該系統(tǒng)運(yùn)行穩(wěn)定,能夠?qū)崿F(xiàn)網(wǎng)絡(luò)時(shí)間同步。
關(guān)鍵詞:STM32處理器;SNTP授時(shí);簡單網(wǎng)絡(luò)時(shí)間協(xié)議;時(shí)間同步

O 引言
    隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)互連已經(jīng)滲透到國民經(jīng)濟(jì)的各行各業(yè)。而網(wǎng)絡(luò)時(shí)間同步也越來越受到重視,特別是局域網(wǎng)時(shí)間同步在國家安全和國民經(jīng)濟(jì)的諸多領(lǐng)域(如國防軍工、電信網(wǎng)、金融業(yè)、交通運(yùn)輸、電子商務(wù)和電力系統(tǒng)等部門)越發(fā)不可或缺。隨著嵌入式技術(shù)的發(fā)展,嵌入式與網(wǎng)絡(luò)時(shí)間同步技術(shù)的結(jié)合,無疑具有良好的發(fā)展前景。

1 方案設(shè)計(jì)
    目前網(wǎng)絡(luò)授時(shí)的實(shí)現(xiàn)方法有很多種,本文采用自行設(shè)計(jì)的嵌入式系統(tǒng)并在上面實(shí)現(xiàn)SNTP協(xié)議。從而完成網(wǎng)絡(luò)時(shí)間的同步。其系統(tǒng)框圖如圖l所示。


    本系統(tǒng)采用C/S模型,分為網(wǎng)絡(luò)授時(shí)同步服務(wù)器和客戶端兩大部分,本文主要對網(wǎng)絡(luò)授時(shí)服務(wù)器部分進(jìn)行研究。
    在網(wǎng)絡(luò)授時(shí)同步服務(wù)器中,處理器STM32f103由內(nèi)部RTC模塊結(jié)合日歷算法來給出時(shí)間信息(年月日時(shí)分秒),再從GPS獲取時(shí)間信息,并修正自己的時(shí)間,最后結(jié)合W5100芯片搭建出一個(gè)時(shí)間服務(wù)器。當(dāng)客戶端向服務(wù)器發(fā)出請求時(shí),便可同步地統(tǒng)一客戶端的時(shí)間信息,并達(dá)到ms級精度。網(wǎng)絡(luò)傳輸時(shí)需實(shí)現(xiàn)SNTP應(yīng)用層協(xié)議,設(shè)計(jì)中通過構(gòu)造SNTP協(xié)議包,并根據(jù)同步算法可計(jì)算出包交換的往返延遲。
    本系統(tǒng)采用ST公司基于Cortex-M3內(nèi)核的STM32系列處理器.Cortex-M3內(nèi)核是專門用于設(shè)計(jì)高性能、低功耗、低成本、實(shí)時(shí)性嵌入式應(yīng)用
系統(tǒng)的處理器核,它在提升性能的同時(shí),又提高了代碼密度的Thumb-2指令集,同時(shí)也大幅度提高了中斷響應(yīng)的緊耦合嵌套向量中斷控制器的性能。所有新功能都同時(shí)具有業(yè)界最優(yōu)的功耗水平。
    TCP/IP協(xié)議棧的實(shí)現(xiàn)采用的固件芯片W5100是韓國WIZnet公司推出的固件網(wǎng)絡(luò)芯片,它集TCP/IP協(xié)議棧、以太網(wǎng)MAC和PHY為一體,可支
持TCP,UDP、ICMP、IGMP、IPv4、ARP,PPPoE、Ethemet等網(wǎng)絡(luò)協(xié)議;同時(shí)支持4個(gè)獨(dú)立的Socket通信,內(nèi)部16 K字節(jié)的發(fā)送/接收緩沖區(qū)可
快速進(jìn)行數(shù)據(jù)交換,最大通信速率可達(dá)到25Mbps。此外,W5100還內(nèi)嵌10BaseT/100BaseTX以太網(wǎng)物理層,可支持自動(dòng)應(yīng)答(全雙工/半雙工
模式),并提供多種總線(兩種并行總線和SPI總線)接口方式,可以方便地與各種MCU連接。W5100器件的推出大大簡化了硬件電路設(shè)計(jì),可使微控制器在沒有操作系統(tǒng)支持的情況下,真正的實(shí)現(xiàn)單芯片接入Internet。[!--empirenews.page--]

2 SNTP協(xié)議分析
    SNTP即簡單網(wǎng)絡(luò)時(shí)間協(xié)議,它是一個(gè)用于局域網(wǎng)子網(wǎng)末端的時(shí)間同步協(xié)議,其要求在操作過程中只允許存在一個(gè)可靠的同步時(shí)鐘源,是
NTP協(xié)議的一個(gè)簡化版本。
2.1 SNTP的同步原理
    SNTP協(xié)議主要通過同步算法來交換時(shí)間服務(wù)器和客戶端的時(shí)間戳,從而估算出數(shù)據(jù)包在網(wǎng)絡(luò)上的往返延遲,進(jìn)而獨(dú)立地估算系統(tǒng)的時(shí)鐘偏差。它的時(shí)間同步原理的傳輸模型如圖2所示。


    圖2中,T1為客戶方發(fā)送查詢請求時(shí)間(以客戶方時(shí)間系統(tǒng)為參照),T2為服務(wù)器收到查詢請求時(shí)間(以服務(wù)器時(shí)間系統(tǒng)為參照),T3為服務(wù)器回復(fù)時(shí)間信息包時(shí)間(以服務(wù)器時(shí)間系統(tǒng)為參照),T4為客戶方收到時(shí)間信息包時(shí)間(以客戶方時(shí)間系統(tǒng)為參照),D1為請求信息在網(wǎng)上傳播所消耗的時(shí)間,D2為回復(fù)信息在網(wǎng)上傳播所消耗的時(shí)間。假設(shè)請求和回復(fù)在網(wǎng)上的傳播時(shí)間相同,即:δ1=δ2,則可得出如下公式:
    
    式中,θ為客戶端時(shí)間與標(biāo)準(zhǔn)時(shí)間之差,δ為信息在網(wǎng)上傳播的時(shí)間??梢钥吹?,θ、δ只與T2、T1的差值和T4、T3的差值相關(guān),而與T2、T3的差值無關(guān),即最終的結(jié)果與服務(wù)器處理請求所需的時(shí)間無關(guān)。據(jù)此,客戶端(CLIENT)即可通過T1、T2、T3、T4十算出的時(shí)差0去調(diào)整本地時(shí)鐘。
2.2 SNTP協(xié)議格式
    SNTP消息一般封裝在UDP報(bào)文中,UDP的端口號(hào)是123,UDP頭中的源端口和目的端口是一樣的。SNTP消息緊跟在IP和UDP報(bào)頭之后,其協(xié)
議格式如圖3所示。


    圖3中,U為跳躍指示器,可警告在當(dāng)月最后一天的最終時(shí)刻插入的迫近閨秒(閨秒)。VN表示版本號(hào)。Mode為模式,該字段包括以下值:
O(預(yù)留);1(對稱行為);3(客戶機(jī));4(服務(wù)器);5(廣播);6(NTP控制信息)。Stratum用于對本地時(shí)鐘級別的整體識(shí)別。Poll表示有符號(hào)整
數(shù)表示連續(xù)信息間的最大間隔。Precision表示有符號(hào)整數(shù),表示本地時(shí)鐘精確度。Root Delay為有符號(hào)固定點(diǎn)序號(hào),表示主要參考源的總延遲,如很短時(shí)間內(nèi)的15到16間的分段點(diǎn)。Root Dispersion為無符號(hào)固定點(diǎn)序號(hào)表示相對于主要參考源的正常差錯(cuò),如很短時(shí)間內(nèi)的位15到16間的分段點(diǎn)。[!--empirenews.page--]
    Reference Identifier為識(shí)別特殊參考源。Originate Timestamp是向服務(wù)器請求分離客戶機(jī)的時(shí)間,采用64位時(shí)標(biāo)(Timestamp)格式。  Receive Timestamp是向服務(wù)器請求到達(dá)客戶機(jī)的時(shí)間。也采用64位時(shí)標(biāo)(Timestamp)格式。Transmit Timestamp是向客戶機(jī)答復(fù)分離服務(wù)器的時(shí)間。采用64位時(shí)標(biāo)(Timestamp)格式。

3 硬件設(shè)計(jì)
    圖4所示為W5100部分的電路圖,圖中給出了W5100與STM32的連接方式及其外圍電路。


    W5100和STM32可通過SPI方式通信。通過對SEN管腳用10 kΩ電阻上拉到高電平可允許SPI模式;由于W5100處于SPI從模式,因此,其SPI工作時(shí)鐘由處于主模式的STM32提供,MISO和MOSI為用于SPI通信的兩條數(shù)據(jù)線,SCLK為SPI時(shí)鐘引腳;*****為片選引腳,低電平有效,主要用于在并行總線連接時(shí)由MCU訪問W5100內(nèi)部寄存器或存儲(chǔ)器;INT為中斷輸出引腳,低電平有效,在W5100在Socket端口產(chǎn)生連接、斷開、接收數(shù)據(jù)、數(shù)據(jù)發(fā)送完成以及通信超時(shí)等情況下,該引腳將輸出信號(hào)以指示MCU。中斷將在寫入中斷寄存器IR或端口的中斷寄存器時(shí)被清除,所有中斷都可以被屏蔽。W5100的第5、6、8和9腳是以太網(wǎng)物理層信號(hào)引腳,用于與RJ45接口相連接,其中第5和第6引腳是RXIP/RXlN信號(hào)對,用于接收從介質(zhì)傳來的差分?jǐn)?shù)據(jù),第8和第9引腳是TXOP/TXON信號(hào)對,用于將差分?jǐn)?shù)據(jù)發(fā)送給介質(zhì);第66引腳是連接LED指示引腳,低電平表示10/100Mbps連接狀態(tài)正常,連接正常時(shí)輸出低電平,而在TX/RX狀態(tài)時(shí)閃爍;第72引腳是接收狀態(tài)LED指示引腳,低電平表示當(dāng)前接收數(shù)據(jù),第73引腳是發(fā)送狀態(tài)LED指示引腳,低電平表示當(dāng)前發(fā)送數(shù)據(jù),這些LED指示引腳應(yīng)與RJ45的相應(yīng)LED指示燈引腳連接,以用于指示連接狀態(tài)。除電源引腳、時(shí)鐘引腳外,W5100的其它引腳DO~D7,AO~A14及WR~RD可選擇懸空。[!--empirenews.page--]


    圖5所示是GPS模塊與STM32的連接示意圖。GPS接收模塊采用HOLUX生產(chǎn)的GPS模塊M87GPS,模塊的串行口輸出和輸入分別接到STM32的輸入與輸出,秒脈沖PPS信號(hào)連接到處理器的IO口,在秒脈沖(1PPS)同步的情況下,系統(tǒng)將實(shí)時(shí)精準(zhǔn)地通過串口把標(biāo)準(zhǔn)的UTC時(shí)間傳送給處理器STM32。

4 SNTP服務(wù)器的軟件設(shè)計(jì)
    SNTP服務(wù)器的軟件設(shè)計(jì)主要可分為兩個(gè)部分:W5100的驅(qū)動(dòng)設(shè)計(jì)和SNTP協(xié)議的軟件實(shí)現(xiàn)。其軟件流程圖如圖6所示。


    首先,利用ST公司提供的固件庫可初始化STM32的系統(tǒng)配置,把SPI接口配置為兩線單向全雙工傳輸、主模式,以8位數(shù)據(jù)幀的格式進(jìn)行傳
輸;同時(shí)配置RTC模塊產(chǎn)生秒脈沖,再與日歷算法結(jié)合得到自身的系統(tǒng)時(shí)間,然后通過GPS的秒脈沖PPS修正系統(tǒng)時(shí)間。再通過配置W5100公共
寄存器和端口寄存器來完成它的基本設(shè)置、網(wǎng)絡(luò)信息以及端口存儲(chǔ)器信息的沒置,使之為UDP服務(wù)器模式。此后,W5100處于監(jiān)聽狀態(tài),一旦
W5100的SOCKET端口有中斷事件,W5100將觸發(fā)STM32的外部中斷,STM32若檢測到SoekRecvflag發(fā)生改變,則立即開始SNTP協(xié)議的解析。
    接收SNTP協(xié)議包后,便可記錄收到報(bào)文的時(shí)間T2,然后從報(bào)文中解析出時(shí)間戳T1,再將T1、T2封裝成新的報(bào)文進(jìn)行發(fā)送,同時(shí)發(fā)送時(shí)再記錄一個(gè)發(fā)送時(shí)間T3。

5 結(jié)束語
    本文基于STM32W5100搭建了一個(gè)網(wǎng)絡(luò)服務(wù)器硬件平臺(tái),并在其上實(shí)現(xiàn)了SNTP同步時(shí)間報(bào)文。經(jīng)測試,本系統(tǒng)運(yùn)行穩(wěn)定,并可實(shí)現(xiàn)對客
戶端PC機(jī)的時(shí)鐘同步。通過該系統(tǒng)可有效解決工業(yè)控制等領(lǐng)域的時(shí)間不同步問題。
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉