用于車速傳感器性能測試平臺的以太網(wǎng)橋設(shè)計
(2)RTL8019AS與微控制器的總線接口
RTL8019AS與微控制器的接口連接如圖4所示。
針對以上總線接口還有幾點說明:①由于在8位微處理器系統(tǒng)中,只需操作RTL8019AS的32個I/O端口地址,所以只需5根地址線進(jìn)行譯碼,其余15根地址線要根據(jù)I/O端口基地址接固定電平。②AEN使能端為低電平有效,而PC7的內(nèi)部邏輯方程為PC7=,所以RTL8019AS映射到外部數(shù)據(jù)區(qū)的地址范圍是8000H~FFFFH,這樣通過讀寫外部數(shù)據(jù)區(qū)的此地址范圍就能實現(xiàn)對RTL8019AS的讀寫。③由于RTL8019AS的處理速度比快很多,其內(nèi)部數(shù)據(jù)緩沖區(qū)也相對較大,為了避免RTL8019AS每收到一幀數(shù)據(jù)就發(fā)出中斷請求,從而頻繁地打斷處理器,所以以查詢而非中斷方式讀寫RTL8019AS以太網(wǎng)控制器。④RTL8019AS在復(fù)位時要進(jìn)行一系列內(nèi)部寄存器操作,所以用單片機(jī)的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)和擴(kuò)充,軟件系統(tǒng)采用模塊化方法進(jìn)行設(shè)計[2]。
3.2.1 RTL8019AS驅(qū)動模塊
此模塊設(shè)計依賴于RTL8019AS的硬件工作原理,即對RTL8019AS的驅(qū)動是通過操作其內(nèi)部寄存器組來完成的。通常,在進(jìn)行數(shù)據(jù)收發(fā)前需先向各寄存器寫入相應(yīng)的控制字,當(dāng)發(fā)送以太網(wǎng)數(shù)據(jù)幀時,微控制器通過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)志或中斷請求方式通知,再通過RTL8019AS的I/O端口將數(shù)據(jù)以遠(yuǎn)程DMA方式讀到自己的數(shù)據(jù)緩沖區(qū)并進(jìn)行下一步的拆包處理?;谝陨戏治?,RTL8019AS驅(qū)動程序分三部分設(shè)計,即芯片初始化(設(shè)置MAC地址、收發(fā)緩沖區(qū)大小、中斷等)、發(fā)送數(shù)據(jù)子程序和接收數(shù)據(jù)子程序。詳細(xì)的驅(qū)動程序見文獻(xiàn)[3]。
3.2.2 精簡TCP/IP協(xié)議棧模塊設(shè)計
此模塊負(fù)責(zé)TCP/IP協(xié)議的處理。由于以太網(wǎng)協(xié)議只規(guī)定了物理層和數(shù)據(jù)鏈路層,所以要想實現(xiàn)進(jìn)程間通信還必須實現(xiàn)上層的TCP/IP協(xié)議。但此協(xié)議非常復(fù)雜,而且很多功能都是針對PC平臺的應(yīng)用,在嵌入式系統(tǒng)中根本用不上;另外,8位微控制器的處理能力和內(nèi)存空間也使得在其上實現(xiàn)完整的TCP/IP協(xié)議根本不可能。因此,在8位機(jī)上用軟件實現(xiàn)TCP/IP協(xié)議時首先必須根據(jù)應(yīng)用需求對整個協(xié)議棧進(jìn)行裁剪[4]。在本應(yīng)用中,由于只需要在串行口和以太網(wǎng)間進(jìn)行簡單的測試數(shù)據(jù)和測試命令傳輸,所以在應(yīng)用層采用了自定義協(xié)議,在傳輸層選擇了能保證可靠性的TCP協(xié)議并進(jìn)行了有針對性的TCP協(xié)議機(jī)制裁剪,而在網(wǎng)絡(luò)層只實現(xiàn)了不提供分片和路由功能的IP協(xié)議、測試網(wǎng)絡(luò)連通性所需的ICMP協(xié)議(僅支持Ping應(yīng)答)以及提供IP地址到以太網(wǎng)地址(MAC地址)映射的ARP協(xié)議。這樣,就得到了一個能在低檔8位機(jī)上實現(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)用程序無需再進(jìn)行超時重發(fā)和回傳確認(rèn)處理,僅需要完成串行口的數(shù)據(jù)收發(fā)操作以及串行數(shù)據(jù)幀和IP分組的格式轉(zhuǎn)換。進(jì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è)備串行口的具體屬性,在管控計算機(jī)上通過以太網(wǎng)對網(wǎng)橋的各串行口收發(fā)數(shù)據(jù)緩沖區(qū)以及波特率進(jìn)行遠(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)橋具有很強(qiáng)的適應(yīng)性和很高的推廣應(yīng)用價值。
評論