LPC2364在串口轉(zhuǎn)網(wǎng)口專用協(xié)議卡的研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
串口轉(zhuǎn)網(wǎng)口模塊是一個(gè)可以讓串口設(shè)備立即具備聯(lián)網(wǎng)能力的設(shè)備聯(lián)網(wǎng)服務(wù)器。它具有1個(gè)可選擇界面串口和1個(gè)TCP/IP網(wǎng)絡(luò)接口,可讓串口設(shè)備立即連接網(wǎng)絡(luò)。從而實(shí)現(xiàn)工業(yè)設(shè)備完全自動(dòng)化聯(lián)網(wǎng)管理。該模塊體積小,非常容易整合在系統(tǒng)或設(shè)備內(nèi),而且可以適應(yīng)復(fù)雜的網(wǎng)絡(luò)。為此,本文給出了采用LPC2364、DP83848C、SP3485和H2019等芯片構(gòu)成一個(gè)串口轉(zhuǎn)網(wǎng)口模塊的軟硬件實(shí)現(xiàn)方法。
1 uIP介紹
UIP(User Interface Process Application Block)是微軟社區(qū)開(kāi)發(fā)的眾多ApplicationBlock中的其中之一,它是開(kāi)源的。UIP是一個(gè)MVC框架,區(qū)別與其它的一些MVC框架是它不僅支持webForm(網(wǎng)頁(yè)),同樣也支持winForm,但如果要從嚴(yán)格的M-V-C三者關(guān)系上去看,UIP看來(lái)也不能稱之MVC模式的實(shí)現(xiàn),UIP最多有V-C的關(guān)系,沒(méi)有考慮進(jìn)Model.UIP單純從名字上看它只管表示層的流轉(zhuǎn),應(yīng)該是微軟在Code-behind上對(duì)MVC的一個(gè)修補(bǔ),加上Asp.Net的事件驅(qū)動(dòng)開(kāi)發(fā)和WebControl所見(jiàn)及所得的開(kāi)發(fā)模式,如果把Model也考慮在內(nèi),那這些特性將受到很大的影響(以后再講這些影響,這里先略過(guò))。所以簡(jiǎn)單的說(shuō),UIP由MVC中的V-C兩部分構(gòu)成,主要功能就是實(shí)現(xiàn)可配置的頁(yè)面(表單)導(dǎo)航。
由于uIP協(xié)議棧是專門為嵌入式系統(tǒng)而設(shè)計(jì)的。因此,uIP還具有如下優(yōu)越功能:
.良好的文檔和源代碼注釋 - 幾乎每一行代碼都有注釋。
.代碼非常少。
.占用非常少的內(nèi)存, 在編譯時(shí)候可以設(shè)置。
.支持ARP, SLIP, IP, UDP, ICMP(ping)和TCP協(xié)議。
.提供一套實(shí)例程序: web服務(wù)器, web客戶端, 電子郵件發(fā)送程序(SMTP客戶端), Telnet服務(wù)器, DNS主機(jī)名解析程序。
.同時(shí)活動(dòng)的TCP鏈接數(shù)沒(méi)有限制, 在編譯時(shí)候可以設(shè)置。
.可免費(fèi)用于商業(yè)和非商業(yè)用途。
.TCP和IP協(xié)議遵循RFC標(biāo)準(zhǔn), 包括流控制, 片斷分割和重傳超時(shí)估算。
uIP:一種用在8位嵌入式系統(tǒng)中的輕量級(jí)的TCP/IP協(xié)議棧,僅需很少的ROM和幾百B的RAM,很適合嵌入式系統(tǒng)應(yīng)用。
2 FreeRTOS介紹
在嵌入式領(lǐng)域中,嵌入式實(shí)時(shí)操作系統(tǒng)正得到越來(lái)越廣泛的應(yīng)用。采用嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)可以更合理、更有效地利用CPU的資源,簡(jiǎn)化應(yīng)用軟件的設(shè)計(jì),縮短系統(tǒng)開(kāi)發(fā)時(shí)間,更好地保證系統(tǒng)的實(shí)時(shí)性和可靠性。
作為一個(gè)輕量級(jí)的操作系統(tǒng),F(xiàn)reeRTOS提供的功能包括:任務(wù)管理、時(shí)間管理、信號(hào)量、消息隊(duì)列、內(nèi)存管理、記錄功能等,可基本滿足較小系統(tǒng)的需要。FreeRTOS內(nèi)核支持優(yōu)先級(jí)調(diào)度算法,每個(gè)任務(wù)可根據(jù)重要程度的不同被賦予一定的優(yōu)先級(jí),CPU總是讓處于就緒態(tài)的、優(yōu)先級(jí)最高的任務(wù)先運(yùn)行。FreeRT0S內(nèi)核同時(shí)支持輪換調(diào)度算法,系統(tǒng)允許不同的任務(wù)使用相同的優(yōu)先級(jí),在沒(méi)有更高優(yōu)先級(jí)任務(wù)就緒的情況下,同一優(yōu)先級(jí)的任務(wù)共享CPU的使用時(shí)間。
3 串口轉(zhuǎn)網(wǎng)口模塊的硬件實(shí)現(xiàn)
串口轉(zhuǎn)網(wǎng)口模塊使用到的芯片有LPC2364、DP83848C、SP3485和H2019,其系統(tǒng)的硬件電路圖如圖1所示。
4 串口轉(zhuǎn)網(wǎng)口模塊的軟件實(shí)現(xiàn)
本串口轉(zhuǎn)網(wǎng)口模塊的軟件需要建立兩個(gè)任務(wù),一是初始化,二是任務(wù)調(diào)度。其中初始化包括時(shí)鐘初始化,協(xié)議棧初始化,IP地址初始化,網(wǎng)關(guān)地址初始化,子網(wǎng)掩碼初始化,網(wǎng)口初始化。串口初始化等。其主函數(shù)代碼如下:
圖2所示是其主函數(shù)流程圖。主函數(shù)中可進(jìn)行uIP協(xié)議棧初始化和串口初始化的并使并設(shè)置,同時(shí)通過(guò)操作系統(tǒng)初始化來(lái)建立兩個(gè)通訊任務(wù),然后就可以開(kāi)始操作系統(tǒng)的任務(wù)調(diào)度。圖3所示是系統(tǒng)中的串口任務(wù)控制流程。
5 協(xié)議轉(zhuǎn)換卡的通訊試驗(yàn)
本文的協(xié)議轉(zhuǎn)換卡并不是通用意義上的協(xié)議轉(zhuǎn)換卡,而是基于特定串口通訊協(xié)議的轉(zhuǎn)換卡。該卡在規(guī)定的協(xié)議中,由網(wǎng)口接收到的數(shù)據(jù)可以分為兩種,一種是控制命令,一種是查詢命令。在軟件中,串口任務(wù)和網(wǎng)口任務(wù)有兩個(gè)共享的數(shù)據(jù)緩沖區(qū),通過(guò)串口任務(wù)可檢查緩沖區(qū),如果緩沖區(qū)中有數(shù)據(jù),則根據(jù)通訊協(xié)議判斷這些數(shù)據(jù)是否是正確的指令,若是正確的指令,則判斷是查詢命令還是控制命令,若是控制命令,則將此控制命令發(fā)送出去,并清空緩沖區(qū);若是查詢命令,網(wǎng)口任務(wù)則會(huì)到另一個(gè)緩沖區(qū)中取出數(shù)據(jù),并用協(xié)議棧將此數(shù)據(jù)發(fā)送出去,同時(shí)清空緩沖區(qū)。通過(guò)用TCP通訊客戶端檢測(cè)工具和串口調(diào)試助手調(diào)試可以發(fā)現(xiàn),如果TCP通訊客戶端發(fā)出的是查詢命令,則網(wǎng)口任務(wù)自動(dòng)到預(yù)定的緩沖區(qū)取出數(shù)據(jù),并發(fā)送出來(lái),同時(shí)在TCP通訊客戶端上顯示出來(lái);如果TCP通訊客戶端發(fā)出的是控制命令,則等待串口調(diào)試助手的返回?cái)?shù)據(jù)。如果有返回,則在TCP通訊客戶端上顯示出來(lái);如果串口助手沒(méi)有返回,軟件控制則一直發(fā)送控制命令,直到收到正確的回復(fù)。
6 結(jié)束語(yǔ)
本文所設(shè)計(jì)串口轉(zhuǎn)網(wǎng)口的轉(zhuǎn)換卡是具有串口通訊協(xié)議的轉(zhuǎn)換卡。協(xié)議卡對(duì)收到的數(shù)據(jù)會(huì)進(jìn)行分析和判斷,進(jìn)而決定數(shù)據(jù)的發(fā)送方式,從而實(shí)現(xiàn)FreeRTOS操作系統(tǒng)和uIP協(xié)議棧的結(jié)合。此外,由于FreeRTOS操作系統(tǒng)和uIP協(xié)議棧對(duì)用戶而言是透明的,因此,該模塊可以方便地隨時(shí)修改串口通訊速率、串口通訊格式、IP地址、網(wǎng)關(guān)、子網(wǎng)掩碼等功能。并充分利用FreeRTOS操作系統(tǒng)的穩(wěn)定性與可靠性以及實(shí)時(shí)性好等特點(diǎn),同時(shí)可發(fā)揮以太網(wǎng)通訊效率高的特點(diǎn),來(lái)為實(shí)施數(shù)據(jù)轉(zhuǎn)換提供方便。
QICK