基于嵌入式系統的溫室遠程監控設計
3.2 單片機控制以太網卡工作過程
系統在上電工作時首先要進行初始化,即初始化單片機C8051F020和RTL8019AS,進行工作參數和條件的設置,主要是一些寄存器的配置和內置RAM空間的分配。初始化之后,由于MCU系統中的TCP/IP是直接面向硬件的,沒有嵌入式實時操作系統的支持,程序結構一般采用順序執行和硬件中斷相結合的方式,與操作系統的多進程并發執行的方式截然不同。當所有初始化完成之后,就采用查詢方式開始工作,程序流程圖見圖2。
當系統接入以太網開始運行時,首先進行地址解析,在網絡內進行“身份識別”,當用戶通過瀏覽器發出請求時,網絡芯片驅動程序接收以太網幀形式的用戶請求,然后傳輸給上層協議逐層分離取出用戶請求,控制系統根據用戶請求調用單片機C8051F020外圍傳感器采集溫室內相應的狀態數據,再將數據逐層打包,最后交給以太網芯片RTL8019AS封裝成以太網幀發送出去。如果傳輸的數據量比較大,則重復多次數據發送過程,便可完成一個數據的完整傳輸。在終端可以以Web網頁的形式供用戶瀏覽和做出進一步的判斷控制。
溫室控制系統中單片機主要完成來自網絡數據的解包和接受溫室傳感器采集的數據的打包,當以太網有數據到達該設備時,單片機采用查詢方式讀取網絡數據并分析,先將其目的地址與系統的物理地址相比較,如果地址不相符,則將該數據丟棄,如果相符,則判斷是否是ARP數據包,是則轉入ARP處理程序,并發送RARP數據包。如果是UDP數據包且IP地址和端口號正確,則開始數據接收。當傳感器傳來的數據要發送時,單片機先將待發送的數據按UDP 協議格式打包進行封裝,需要設置以太網目的地址、源地址、協議類型,再按所設置的協議類型來設置數據段。然后給出發送緩沖區首地址和數據包長度,啟動發送命令。通過遠程DMA通道送到RTL8019AS中的發送緩沖區,即可實現RTL8019AS的發送功能,并將結果寫入狀態寄存器中。再啟動本地DMA,將數據發送到網絡上。
圖2 系統程序流程圖
4 結論
(1)提出將單片微處理器提升為具有系統軟件和TCP/IP協議的嵌入式Web服務器,并用于溫室環境控制的方案。這種嵌入TCP/IP協議的單片機系統成本低、硬件少、傳輸速度快、使用方便,可在遠程數據采集和傳輸、遠程監控等方面有廣泛應用前景。
(2)設計了系統的軟硬件,通過用單片機控制網絡接口芯片RTL8019AS,同時嵌入精簡的TCP/IP協議,將溫室控制器擴展成嵌入式Web服務器,實現溫室內各種狀態數據的采集與控制。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)tcp/ip相關文章:tcp/ip是什么
評論