用于車速傳感器性能測試平臺的串行口以太網(wǎng)橋設(shè)計
3.1.3 以太網(wǎng)接口設(shè)計
以太網(wǎng)接口是硬件電路設(shè)計的關(guān)鍵。因為RTL8019AS是基于ISA總線PC主板的以太網(wǎng)控制器,所以在和8位微控制器進行接口(見圖3)時其硬件電路與通用方式有很大不同。下面從RTL8019AS以太網(wǎng)控制器自身功能配置、與微控制器μPSD3254之間的總線接口及與網(wǎng)絡(luò)介質(zhì)的接口等三方面給出具體電路設(shè)計。
(1) RTL8019AS功能管腳設(shè)置
RTL8019AS提供3種工作方式:PnP即插即用方式、免跳線方式和跳線方式。由于8位微控制器μPSD3254無法支持PnP工作方式,而免跳線方式又需外加專用串行E2PROM 93C46以存放相應(yīng)的工作參數(shù),因此選擇跳線工作方式。在這種方式下RTL8019AS的中斷、I/O端口地址、網(wǎng)絡(luò)接口類型選擇等就完全取決于表1所示功能管腳的狀態(tài)。
JP腳接高電平使芯片工作于跳線方式,IOCS16B腳接低電平選8位數(shù)據(jù)總線,IRQS0~IRQS2接低電平選INT0為中斷請求源,IOS0~IOS3接低電平選芯片I/O端口基地址為300H,AUI、PL0、PL1接低電平分別選。BNC網(wǎng)絡(luò)接口和10Base-T雙絞線傳輸介質(zhì),SMEMRB/SMEMWB接高電平屏蔽BROM讀寫操作。
(2) RTL8019AS與微控制器的總線接口
RTL8019AS與微控制器的接口連接如圖4所示。
針對以上總線接口還有幾點說明:①由于在8位微處理器系統(tǒng)中,只需操作RTL8019AS的32個I/O端口地址,所以只需5根地址線進行譯碼,其余15根地址線要根據(jù)I/O端口基地址接固定電平。②AEN使能端為低電平有效,而PC7的內(nèi)部邏輯方程為PC7=A15,所以RTL8019AS映射到μPSD3254外部數(shù)據(jù)區(qū)的地址范圍是8000H~FFFFH,這樣μPSD3254通過讀寫外部數(shù)據(jù)區(qū)的此地址范圍就能實現(xiàn)對RTL8019AS的讀寫。③由于RTL8019AS的處理速度比μPSD3254快很多,其內(nèi)部數(shù)據(jù)緩沖區(qū)也相對較大,為了避免RTL8019AS每收到一幀數(shù)據(jù)就發(fā)出中斷請求,從而頻繁地打斷處理器,所以μPSD3254以查詢而非中斷方式讀寫RTL8019AS以太網(wǎng)控制器。④RTL8019AS在復(fù)位時要進行一系列內(nèi)部寄存器操作,所以用單片機的P3.7端口控制其復(fù)位,以保證有足夠的復(fù)位時間。
(3) 網(wǎng)絡(luò)介質(zhì)接口連接
由于RTL8019AS內(nèi)部已集成以太網(wǎng)收發(fā)器,而且對外提供AUI(支持粗同軸電纜)和BNC(支持細(xì)同軸電纜和雙絞線)兩種網(wǎng)絡(luò)介質(zhì)接口,所以本方案選擇較常用的BNC接口,這樣就只需再外加一個網(wǎng)絡(luò)變壓器20F001N和RJ45水晶頭插座即可解決網(wǎng)絡(luò)介質(zhì)接口問題。
3.2 軟件系統(tǒng)設(shè)計
由于整個網(wǎng)橋的底層功能(如以太網(wǎng)協(xié)議實現(xiàn))已由硬件電路完成(見圖4),所以在軟件上只需完成RTL8019AS驅(qū)動、精簡TCP/IP協(xié)議棧實現(xiàn)、用戶自定義應(yīng)用層處理以及串行口通信等功能。為了便于軟件功能的實現(xiàn)和擴充,軟件系統(tǒng)采用模塊化方法進行設(shè)計。
3.2.1 RTL8019AS驅(qū)動模塊
此模塊設(shè)計依賴于RTL8019AS的硬件工作原理,即對RTL8019AS的驅(qū)動是通過操作其內(nèi)部寄存器組來完成的。通常,在進行數(shù)據(jù)收發(fā)前需先向各寄存器寫入相應(yīng)的控制字,當(dāng)發(fā)送以太網(wǎng)數(shù)據(jù)幀時,微控制器μPSD3254通過RTL8019AS的I/O端口將打包好的數(shù)據(jù)以遠(yuǎn)程DMA方式寫入到RTL8019AS的內(nèi)部數(shù)據(jù)發(fā)送緩沖區(qū),然后啟動發(fā)送;接收以太網(wǎng)數(shù)據(jù)幀時,RTL8019AS會自動接收數(shù)據(jù)并將其存人自己的內(nèi)部數(shù)據(jù)接收緩沖區(qū),然后以寄存器標(biāo)志或中斷請求方式通知μPSD3254,μPSD3254再通過RTL8019AS的I/O端口將數(shù)據(jù)以遠(yuǎn)程DMA方式讀到自己的數(shù)據(jù)緩沖區(qū)并進行下一步的拆包處理?;谝陨戏治?,RTL8019AS驅(qū)動程序分三部分設(shè)計,即芯片初始化(設(shè)置MAC地址、收發(fā)緩沖區(qū)大小、中斷等)、發(fā)送數(shù)據(jù)子程序和接收數(shù)據(jù)子程序。詳細(xì)的驅(qū)動程序見文獻。
3.2.2 精簡TCP/IP協(xié)議棧模塊設(shè)計
此模塊負(fù)責(zé)TCP/IP協(xié)議的處理。由于以太網(wǎng)協(xié)議只規(guī)定了物理層和數(shù)據(jù)鏈路層,所以要想實現(xiàn)進程間通信還必須實現(xiàn)上層的TCP/IP協(xié)議。但此協(xié)議非常復(fù)雜,而且很多功能都是針對PC平臺的應(yīng)用,在嵌入式系統(tǒng)中根本用不上;另外,8位微控制器的處理能力和內(nèi)存空間也使得在其上實現(xiàn)完整的TCP/IP協(xié)議根本不可能。因此,在8位機上用軟件實現(xiàn)TCP/IP協(xié)議時首先必須根據(jù)應(yīng)用需求對整個協(xié)議棧進行裁剪。在本應(yīng)用中,由于只需要在串行口和以太網(wǎng)間進行簡單的測試數(shù)據(jù)和測試命令傳輸,所以在應(yīng)用層采用了自定義協(xié)議,在傳輸層選擇了能保證可靠性的TCP協(xié)議并進行了有針對性的TCP協(xié)議機制裁剪,而在網(wǎng)絡(luò)層只實現(xiàn)了不提供分片和路由功能的IP協(xié)議、測試網(wǎng)絡(luò)連通性所需的ICMP協(xié)議(僅支持Ping應(yīng)答)以及提供IP地址到以太網(wǎng)地址(MAC地址)映射的ARP協(xié)議。這樣,就得到了一個能在低檔8位機上實現(xiàn)和運行的精簡TCP/IP協(xié)議棧。此協(xié)議棧從物理層到應(yīng)用層的完整結(jié)構(gòu)如圖5所示。
3.2.3 應(yīng)用程序模塊設(shè)計
應(yīng)用程序模塊直接面向用戶需求提供相應(yīng)服務(wù)。本設(shè)計中,根據(jù)整個軟件模塊的功能劃分,應(yīng)用程序需要完成串行口通信處理及串行幀和IP分組的格式轉(zhuǎn)換。由于嵌入式串行口-以太網(wǎng)橋的TCP/IP協(xié)議棧傳輸層選擇了保證數(shù)據(jù)傳輸可靠性的TCP協(xié)議(向應(yīng)用層提供流式套接字接口),所以應(yīng)用程序無需再進行超時重發(fā)和回傳確認(rèn)處理,僅需要完成串行口的數(shù)據(jù)收發(fā)操作以及串行數(shù)據(jù)幀和IP分組的格式轉(zhuǎn)換。進行串行數(shù)據(jù)幀和IP分組的格式轉(zhuǎn)換時使用了共享數(shù)據(jù)緩沖區(qū)和指針技術(shù)以避免協(xié)議分層間的數(shù)據(jù)拷貝,不僅節(jié)省了內(nèi)存空間,而且大大提高了打包和拆包的處理速度;另外,由于串行口設(shè)備每次需傳輸?shù)臄?shù)據(jù)量很小,所以四個串行口緩沖區(qū)的數(shù)據(jù)采用集中打包、一次發(fā)送的方法減少了網(wǎng)絡(luò)訪問次數(shù),既提高了通信效率又避免了因頻繁短幀傳輸造成的網(wǎng)絡(luò)擁堵;最后應(yīng)用程序模塊還提供了嵌入式串行口-以太網(wǎng)橋的串行門屬性配置功能,用戶可根據(jù)各測試設(shè)備串行口的具體屬性,在管控計算機上通過以太網(wǎng)對網(wǎng)橋的各串行口收發(fā)數(shù)據(jù)緩沖區(qū)以及波特率進行遠(yuǎn)程動態(tài)設(shè)置,從而極大地提高了網(wǎng)橋的適應(yīng)性。
實驗證明,本文提出的嵌入式串行口-以太網(wǎng)橋應(yīng)用于車速傳感器性能測試平臺,不但能完全滿足測試平臺的通信要求,還具有成本低、體積小、可靠性高等優(yōu)點。同時在此網(wǎng)橋的硬件平臺上,只要針對具體應(yīng)用需求對應(yīng)用程序模塊稍作修改就可應(yīng)用于其他汽車傳感器性能測試平臺(如輪速傳感器性能測試平臺)以及溫室、環(huán)保、氣象等需要遠(yuǎn)程監(jiān)測的場合。因而該串行口-以太網(wǎng)橋具有很強的適應(yīng)性和很高的推廣應(yīng)用價值。
評論