基于STM32的SNTP授時(shí)服務(wù)器的研究與設計
圖5所示是GPS模塊與STM32的連接示意圖。GPS接收模塊采用HOLUX生產(chǎn)的GPS模塊M87GPS,模塊的串行口輸出和輸入分別接到STM32的輸入與輸出,秒脈沖PPS信號連接到處理器的IO口,在秒脈沖(1PPS)同步的情況下,系統將實(shí)時(shí)精準地通過(guò)串口把標準的UTC時(shí)間傳送給處理器STM32。
4 SNTP服務(wù)器的軟件設計
SNTP服務(wù)器的軟件設計主要可分為兩個(gè)部分:W5100的驅動(dòng)設計和SNTP協(xié)議的軟件實(shí)現。其軟件流程圖如圖6所示。
首先,利用ST公司提供的固件庫可初始化STM32的系統配置,把SPI接口配置為兩線(xiàn)單向全雙工傳輸、主模式,以8位數據幀的格式進(jìn)行傳
輸;同時(shí)配置RTC模塊產(chǎn)生秒脈沖,再與日歷算法結合得到自身的系統時(shí)間,然后通過(guò)GPS的秒脈沖PPS修正系統時(shí)間。再通過(guò)配置W5100公共
寄存器和端口寄存器來(lái)完成它的基本設置、網(wǎng)絡(luò )信息以及端口存儲器信息的沒(méi)置,使之為UDP服務(wù)器模式。此后,W5100處于監聽(tīng)狀態(tài),一旦
W5100的SOCKET端口有中斷事件,W5100將觸發(fā)STM32的外部中斷,STM32若檢測到SoekRecvflag發(fā)生改變,則立即開(kāi)始SNTP協(xié)議的解析。
接收SNTP協(xié)議包后,便可記錄收到報文的時(shí)間T2,然后從報文中解析出時(shí)間戳T1,再將T1、T2封裝成新的報文進(jìn)行發(fā)送,同時(shí)發(fā)送時(shí)再記錄一個(gè)發(fā)送時(shí)間T3。
5 結束語(yǔ)
本文基于STM32和W5100搭建了一個(gè)網(wǎng)絡(luò )服務(wù)器硬件平臺,并在其上實(shí)現了SNTP同步時(shí)間報文。經(jīng)測試,本系統運行穩定,并可實(shí)現對客
戶(hù)端PC機的時(shí)鐘同步。通過(guò)該系統可有效解決工業(yè)控制等領(lǐng)域的時(shí)間不同步問(wèn)題。
評論