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