引言
許多測量和控制設備都是通過串口與其他設備通信,使設備間的數據交互和遠程控制受到限制。如果能把串口的數據轉換成網絡數據格式,組建一個局域網(LAN)來進行數據的交互與傳輸,則上述的限制將得到有效的改進。考慮到以太網組網技術的易于理解、實現、管理和維護,且成本低廉、網絡拓撲結構靈活的優點,應用以太網組網技術來搭建數據交互的平臺。其中的關鍵就是接口轉換器的實現。
DSP芯片作為一種特殊的嵌入式微處理器系統,具有嵌入的協處理器和用于快速數據處理的并行數據通道,而且DSP在語音圖像信號處理方面也具有強大功能。在嵌入式網絡設備中引入DSP技術,可以使嵌入式以太網變得更快,成本更低,也更容易進行功能擴充,因此選用DSP芯片作為接口轉換器的微控制器。
為提高網絡通信效率,可以采用自定義的從數據鏈路層到應用層的網絡通信協議,以適應特定場合應用的需要;如果需要,還可以編寫一個自定義協議和TCP/IP互譯的網關軟件,實現嵌入式網絡和Internet的連接。
本文介紹的接口轉換器解決了車內的數字式語音通信系統的接口轉換問題。
1、 接口轉換器的硬件設計
在設計一個嵌入式系統時,不但要考慮系統所要具備的功能,同時還要考慮價格、體積等因素。TMS320C3X系列芯片是TI公司推出的浮點運算DSP芯片。由于其較高的性價比,TMS320C3X的應用極其廣泛;由于將浮點運算與定點運算結合起來,具有更高的精度,并且不必考慮運算的溢出問題,因此浮點DSP具有更高的性能,更容易在系統的處理器上實現高級語言。TMS320C32是TMS320系列浮點數字信號處理器的新產品,在TMS320C30和TMS320C31的基礎上進行了簡化和改進。在結構上的改進主要包括:可變寬度的存儲器接口、更短的指令周期時間、可設置優先級的雙通道DMA處理器、靈活的引導程序裝入方式、可重新定位的中斷向量表以及可選的邊緣/電平觸發中斷方式等。對TMS320C32的開發可以用匯編語言,也可以用C語言。使用匯編語言的優點在于,運行速度快,可以充分利用芯片的硬件特性;但開發速度較慢,程序的可讀性差。使用C語言的優勢在于,編程容易、調試速度快、可讀性好,可以大大縮短開發周期;但C語言對于其片內沒有映射地址的特殊功能寄存器不能操作,如IF和IE、AR0~AR7等。
以太網接口芯片采用CS8900A。該芯片是Cirrus Logic公司生產的一種局域網信號處理芯片,內部集成了片上RAM,其模擬前端包括曼徹斯特編解碼器、時鐘恢復電路、10BASE2T收發器和濾波器及一個AUI(Attachment Unit Interface)接口。CS8900A的MAC(Medium Access Control,媒體訪問控制)引擎負責以太網數據幀的發送和接收、檢測和處理沖突,生成和檢測幀引導頭(Preamble),自動生成和校驗CRC(Cyclical Redundancy Check,循環冗余校驗)碼。芯片在網絡物理層符合IEEE 802.3以太網標準,支持全雙工操作,是嵌入式平臺實現10 Mbps以太網連接的很好的選擇方案。
接口轉換器的硬件框圖如圖1所示。DSP作為整個硬件模塊的CPU,SRAM用作外部數據存儲器,Flash用于存儲程序,CPLD或FPGA用于擴展DSP的對外接口控制。虛線框是可擴展的模塊。
2、 TMS320VC32與CS8900A的連接方法
CS8900A的20位地址線與TMS320VC32地址線低20位相連;CS8900A的16位數據線與TMS320VC32數據線低16位相連;數據總線高位使能端由A0控制。通過一片CPLD擴展TMS320VC32的外部控制功能,控制CS8900A的中斷請求、復位和讀寫操作。TMS320VC32與CS8900A連接關系如圖2所示。
設置以太網接口芯片CS8900A工作于I/O模式。通過對芯片各寄存器的操作可設置網絡終端接口電路的功能和讀取狀態信息。
CS8900A的主要寄存器有:
LineCTL 決定CS8900A的基本配置和物理接口,設置初始值為00D3H,選擇物理接口為10BASE2T。
RxCTL 控制CS8900A接收特定的數據報,設置RxTCL的初始值為0D05H,接收網絡上的廣播或目標地址與本地物理地址相同的正確數據報。
RxCFG 控制CS8900A接收到特定數據報后會引發接收中斷,RxCFG可設置為0103H,收到正確數據報時產生接收中斷。
BusCTL 控制芯片的I/O接口操作,設置初始值為8017H,打開CS8900A的中斷總控制位。
ISQ 中斷狀態寄存器。內部映射接收狀態寄存器和發送中斷寄存器內容。
Port0 發送和接收數據時,CPU通過Port0傳輸數據。
TxCMD 發送控制寄存器。如果寫入數據00C0H,那么網卡芯片在全部數據寫入后開始發送數據。
TxLength 發送數據長度寄存器。發送數據時,首先寫入發送數據的長度,然后將數據通過Port0寫入芯片。
系統上電時,首先對CS8900A進行初始化,寫寄存器LineCTL、RxCTL、RxCFG、BusCTL。發送數據時,寫控制寄存器TxCMD,并將發送數據長度寫入TxLength,然后將數據依次寫入Port0口,數據就可以發送出去了;接收到數據時,CS8900 A將觸發中斷,在其中斷處理程序中可以接收數據并處理。
3 、接口轉換器的軟件設計
3.1 自定義網絡協議
在嵌入式網絡系統中,可以使用TCP/IP協議,但不夠經濟。原因是TCP/IP協議過于龐大,過于復雜,以至于效率低下。一方面是嵌入式系統各單元內部CPU的處理速度受限;另一方面,在某些特定場合特定任務的應用環境中TCP/IP功能冗余,阻礙了硬件效能的最大發揮。為此,針對特定的應用,制定相應的自定義網絡協議,靈活方便,針對性強,經濟實用。
下面單從數據應用的角度,定義一個簡單、實用的以太網傳輸協議。
3.2協議層次
系統參照ISO的OSI模型,采用縮減的網絡體系結構。如圖3所示,網絡體系結構分為3層:物理層、數據鏈路層和應用層。物理層規定網絡的拓撲形式及通信信號的電氣特性;數據鏈路層實現點到點的通信規程,完全執行IEEE802.3的CSMA/CD協議。
3.3 幀結構
以太網幀結構如下:
物理層的前同步碼(即物理幀前導符+物理幀界定符)8字節由硬件自動生成。除去這8個字節,將其余字段的長度加起來,可以得到以太網幀的最大長度為1 518字節,最小長度則為64字節;加上8字節的前同步碼,即可得到最小幀長度為576位。這樣長度的幀能夠保證所有沖突都可以檢測到。這是因為IEEE 802.3標準中,兩個站點的最遠距離小于2 500 m,由4個中繼器連接而成,其沖突窗口為2倍電纜傳播延遲加上4個中繼器的雙向延遲之和,合計為51.2μs。就10 Mbps以太網而言,這個時間段內等于發送64字節(即512位)的數據。
使用CSMA/CD作為一種訪問控制方式,意味著最短數據幀長度與網絡上最長傳輸延遲時間間隔有著密切的關系。要保證在發送過程中出現沖突時,沖突域內的所有結點都應該知道發生了沖突,以便采取適當的措施。這就需要最短數據幀長度必須大于網絡上的最長傳輸延遲時間間隔,再加上阻塞附加時間和同步延遲時間等。這就是IEEE 802.3標準中最短幀長度為64字節的由來。
其中應用層幀類型分為數據幀和數據確認幀兩種,具體結構如下:
由于數據幀長度可變,又由于數據確認幀的MAC層長度僅為18字節,故在網絡控制器初始化時須設置MAC層PAD填充功能(即MAC幀長度少于64字節時,網絡控制器自動將其填充至64字節后再交給物理層)。
自定義數據幀的預留管理單元還可以制定一些簡單的控制或管理信息幀,以便更好地擴充功能和組織軟件。限于篇幅,茲不贅述。如想連入Internet,需要在系統中加入一個能夠轉換本協議和TCP/IP協議的前端網關(實質上是一個交互翻譯的軟件系統)。
3.4程序設計流程
本接口轉換器所要實現的功能是把從RS232串口接收到的串口數據轉換成以太網幀格式發送到以太網,并把從以太網上接收到的幀數據解包轉換到串口傳送。程序設計中包含初始化程序、主循環、串行接口程序和網絡通信接口程序。
程序運行首先進行初始化工作,包括初始化CS8900A、初始化串口和初始化一些參數,然后進入主循環。主循環內循環運行CS8900A中斷服務查詢程序和串口緩沖區查詢程序,若有CS8900A中斷申請,則中斷調用網絡通信接口程序;若串口緩沖區有數據,則中斷調用串行接口程序。流程如圖4所示。
(1)串行接口程序
串行接口程序是DSP通過16C2550向外部數據口進行數據接收、發送的程序,目的是進行數據傳輸。此程序包括串口發送接收程序及數據組織程序。發送和接收通過中斷并發處理。整個串口發送程序在主循環中調用。其模塊的流程為:
發送 收到網絡串口數據→打開數據口→中斷發送;
接收 中斷接收→整理串口數據→發送到網絡上去。發送和接收邏輯流程如圖5所示。
(2)網絡通信接口程序
網絡接口程序是DSP通過CS8900A對系統的其他單元發送命令和接收信息的程序,目的是與系統的其他單元通信,接收與發送數據包和信令數據包。此程序包括網絡數據接收程序、網絡數據發送程序、數據組織程序。發送與接收服務程序流程如圖6所示。
4、結語
該接口轉換器已成功地應用于車內的數字式語音通信系統之中。結果表明,本方案成功地實現了數據的實時傳輸,可以給各種應用RS232串口進行數據傳輸的嵌入式系統的聯網操作提供接口解決方案。本方案預留了升級擴展的功能。接入PCM編碼器并對程序作出相應改動,可實現語音的數字化網絡通信;接入A/D轉換器和各種傳感器可實現數據采集系統的聯網。
責任編輯:gt
評論
查看更多