環境監測系統溫濕度傳感器自身具備A/D轉換功能,在軟件設計方面主要是完成溫濕度傳感器與主控芯片之間的數據通信,由于其自身對溫濕度的監測具有較高的靈敏性,且集成的A/D轉換具備內部校準機制,具有較高的準確性,在軟件設計方面主要注重其實時性。數據通信采用兩線雙向的串口連接方式,其一組完整的數據傳輸過程包括:啟動傳輸、指定位寫命令、等待傳輸結束、數據傳輸、CRC校驗。具體介紹如下:
1.啟動傳輸
環境監測系統啟動溫濕度傳感器數據傳輸的時序如下:在SCK時鐘為高電平期間,DATA由高電平翻轉為低電平,在SCK相鄰的下一個高電平時。DATA再由低電平翻轉為高電平,以此作為數據傳輸的啟動信號。
2.指定位寫命令
目前用到的寫命令地址為:000,溫濕度傳感器監測的溫濕度數據由同一條數據線傳輸,傳輸數據由5位命令位決定(溫度數據:00011;濕度數據:00101),例如:下圖為在地址位000寫入傳輸濕度數據命令時序圖。
3.等待監測結束
為了保證溫濕度監測的實時性,環境監測系統的編程采用交差采集的方法,即溫度與濕度的數據采集交替進行。但同時為了兼顧數據采集的完整性,在寫入監測切換命令以后,要經過至少320ms的延時,等待上一組數據監測結束。通過下拉DATA四個時鐘周期表示進入空閑模式。接下來是2B的監測數據,其傳輸時序如下圖所示。
傳輸的為濕度數據:100100110001,對應濕度75.79%RH。為確保傳輸數據的正確性,選擇8位CRC奇偶校驗碼進行校驗。此外,當溫濕度傳感器與主控芯片STM32的數據通信發生異常時,溫濕度傳感器將DATA拉高9個時鐘周期,產生復位信號。