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