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