《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動(dòng)態(tài) > LonWorks-USB互聯(lián)適配器的設(shè)計(jì)開發(fā)

LonWorks-USB互聯(lián)適配器的設(shè)計(jì)開發(fā)

2008-08-04
作者:周 琦, 袁學(xué)文, 肖文華, 汪

  摘?要: LonWorks技術(shù)的核心是神經(jīng)元芯片" title="神經(jīng)元芯片">神經(jīng)元芯片,,介紹了神經(jīng)元芯片的一種I/O" title="I/O">I/O應(yīng)用模式——并行口I/O模式,,并介紹了基于此I/O模式設(shè)計(jì)開發(fā)的LonWorks協(xié)議與USB標(biāo)準(zhǔn)的互聯(lián)" title="互聯(lián)">互聯(lián)適配器,。

  關(guān)鍵詞: LonWorks? 神經(jīng)元芯片? 并行口I/O模式? EZ-USB

  

??? LonWorks技術(shù)是美國(guó)Echelon公司于上世紀(jì)90年代初推出的一種現(xiàn)場(chǎng)總線技術(shù),。LON(Local Operating Network)的意思為局部操作網(wǎng)絡(luò),,它是用于開發(fā)監(jiān)控網(wǎng)絡(luò)系統(tǒng)的一個(gè)完整的技術(shù)平臺(tái),,LonWorks現(xiàn)場(chǎng)總線在網(wǎng)絡(luò)通訊方面具有突出的優(yōu)點(diǎn),,作為現(xiàn)場(chǎng)總線中的佼佼者在國(guó)內(nèi)各個(gè)領(lǐng)域的測(cè)控系統(tǒng)中廣泛流行,。

  通用串行總線(Universal Serial Bus,,即USB)是一種快速、靈活的總線接口,。與其它通信接口相比,,USB總線接口最大的特點(diǎn)是易于使用,,這主要表現(xiàn)在成本低、適用于多種設(shè)備,、支持熱插拔等方面,,并且所有的配置過程都由系統(tǒng)自動(dòng)完成,無需用戶干預(yù),。目前,,市場(chǎng)上供應(yīng)的USB控制器主要有兩種:帶USB接口的單片機(jī)(MCU)和純粹的USB接口芯片。本文采用Cypress公司推出的帶智能USB接口的EZ-USB" title="EZ-USB">EZ-USB單片機(jī),。該單片機(jī)極大地降低了USB外設(shè)的開發(fā)難度,,為PC機(jī)外設(shè)的制造商提供了一個(gè)性能優(yōu)良、價(jià)格較低的設(shè)計(jì)方案,。采用USB接口設(shè)計(jì)開發(fā)的LON網(wǎng)互聯(lián)適配器很好地解決了傳統(tǒng)適配器由于RS-232與PC/Laptop互聯(lián)而造成的速度上的瓶頸,。

1 系統(tǒng)框圖及工作原理

1.1系統(tǒng)框圖

  系統(tǒng)框圖如圖1所示。

?

?

????互聯(lián)適配器是LON網(wǎng)與PC/Laptop的接口,,在通信過程中起著關(guān)鍵的作用,,它既完成了LON網(wǎng)與PC/Laptop的互聯(lián),又實(shí)現(xiàn)了數(shù)據(jù)的交換,?;ヂ?lián)適配器作為L(zhǎng)ON網(wǎng)的一個(gè)特殊的網(wǎng)絡(luò)節(jié)點(diǎn)——通信處理器,能按照LonTalk協(xié)議與LonWorks總線上所有分布在現(xiàn)場(chǎng)的智能節(jié)點(diǎn)進(jìn)行對(duì)等的數(shù)據(jù)通信,,起到上傳下達(dá)的橋梁作用,。當(dāng)現(xiàn)場(chǎng)的測(cè)控設(shè)備有數(shù)據(jù)送到LonWorks網(wǎng)絡(luò)上時(shí),互聯(lián)適配器負(fù)責(zé)把所有發(fā)送給它的信息接收下來,,將測(cè)控設(shè)備發(fā)送來的LonTalk顯式報(bào)文重新打包裝幀,,向PC/Laptop發(fā)送。同時(shí),,它將從PC/Laptop接收來的已解析的數(shù)據(jù)按LonWorks現(xiàn)場(chǎng)總線通信協(xié)議構(gòu)造LonTalk顯式報(bào)文,,發(fā)送給LonWorks網(wǎng)上的測(cè)控設(shè)備。

  相對(duì)USB系統(tǒng)而言,,PC/Laptop是USB主機(jī),,互聯(lián)適配器只是USB外部設(shè)備。在整個(gè)USB系統(tǒng)中只有一個(gè)主控制器,,即主機(jī)(PC/Laptop),,主機(jī)是總線控制者,USB設(shè)備響應(yīng)主機(jī)請(qǐng)求,。系統(tǒng)軟件設(shè)計(jì)部分也是針對(duì)主機(jī)和外部設(shè)備這兩部分展開的,。

1.2 工作原理

  互聯(lián)適配器中采用Neuron芯片預(yù)定義的并口I/O應(yīng)用模式實(shí)現(xiàn)雙CPU的通信,并行口的速率可達(dá)3.3Mbps,實(shí)現(xiàn)了高數(shù)據(jù)速率,。

  并行I/O應(yīng)用模式下利用Neuron芯片的11個(gè)I/O口進(jìn)行通信,,其中,IO0~I(xiàn)O7為雙向數(shù)據(jù)線,,IO8~I(xiàn)O10為控制信號(hào)線,,借助令牌" title="令牌">令牌傳遞/握手協(xié)議,并行I/O口可用來外接處理器,,實(shí)現(xiàn)Neuron芯片與外接各類微處理器之間的雙向數(shù)據(jù)通信,,在這里采用EZ-USB單片機(jī)與Neuron芯片互連。主機(jī)PC/Laptop控制USB外部設(shè)備,,通過互聯(lián)適配器與LON網(wǎng)各現(xiàn)場(chǎng)節(jié)點(diǎn)通信,,其實(shí)質(zhì)就是互聯(lián)適配器中EZ-USB單片機(jī)與Neuron芯片之間的通信。

 ? 并行口的工作方式有三種,,即主模式,、從A模式、從B模式,。不同的模式下,,IO8~I(xiàn)O10這三根控制信號(hào)線的意義不同,這里應(yīng)用的是從A模式,。在從A模式中,,認(rèn)為Neuron芯片為從CPU,EZ-USB單片機(jī)為主CPU,,主CPU和從CPU之間的數(shù)據(jù)傳輸通過虛擬的寫令牌傳遞協(xié)議(Virtual Write Token-Passing Protocol)得以實(shí)現(xiàn),。主CPU和從CPU交替地獲得寫令牌(Write Token),只有擁有寫令牌的一方可以寫數(shù)據(jù)(不超過255個(gè)字節(jié)),,或者不寫任何數(shù)據(jù)傳送一個(gè)空令牌,。傳送的數(shù)據(jù)要遵從一定的格式,即在要傳送的數(shù)據(jù)前面加上命令碼和傳送的數(shù)據(jù)長(zhǎng)度,,命令碼有CMD_XFER(寫數(shù)據(jù)),、CMD_NULL(傳遞空令牌)、CMD_RESYNC(要求從機(jī)同步),、CMD_ACKSYNC(確認(rèn)同步)四種,,最后以EOM字節(jié)結(jié)束。在從A方式中,,整個(gè)握手/應(yīng)答協(xié)議以及數(shù)據(jù)傳送的實(shí)現(xiàn)過程是自動(dòng)完成的,。在通信以前,主CPU和從CPU之間先建立握手信號(hào),,即HS信號(hào)有效(這由3150的固件自動(dòng)實(shí)現(xiàn))。然后,,主CPU再送一個(gè)CMD_RESYNC命令,,要求從CPU同步,,而從CPU接收到這個(gè)信號(hào)以后,則發(fā)送CMD_ACKSYNC,,表示已經(jīng)同步,、可以通信了。同步以后,,虛寫令牌就在主CPU和從CPU之間無限地,、交替地傳遞,擁有虛寫令牌的一方就可以向數(shù)據(jù)總線上寫數(shù)據(jù),,即主CPU可以往從CPU寫數(shù)據(jù),,從機(jī)也可以將數(shù)據(jù)傳往主CPU。

??? 需要特別說明的是,,Neuron芯片的握手及令牌傳遞的實(shí)現(xiàn)是自動(dòng)的,,但是對(duì)于非Neuron芯片的微處理器( EZ-USB),就要求編程人員通過編程使非Neuron芯片的微處理器能夠執(zhí)行Neuron芯片的握手/令牌傳遞算法,,也即是復(fù)制Neuron芯片的行為,,從而實(shí)現(xiàn)雙方的通信。

2 硬件設(shè)計(jì)

??? 互聯(lián)適配器的結(jié)構(gòu)框圖如圖2所示,,主要由神經(jīng)元芯片和EZ-USB單片機(jī)組成,。

?

??? 神經(jīng)元芯片(Neuron Chip)是LonWorks技術(shù)的核心, 芯片中含有Lontalk協(xié)議的固態(tài)軟件(簡(jiǎn)稱固件),,使其能可靠地通信,。神經(jīng)元芯片主要包含TMPN3150和TMPN3120兩大系列,由日本東芝公司生產(chǎn),。TMPN3150支持外部存儲(chǔ)器,,適合更為復(fù)雜的應(yīng)用,而TMPN3120則不支持外部存儲(chǔ)器,,它本身帶ROM,。所以,在互聯(lián)適配器的設(shè)計(jì)中選用的是TMPN3150,,該芯片內(nèi)有三個(gè)微處理器,,即MAC處理器、網(wǎng)絡(luò)處理器和應(yīng)用處理器,。對(duì)神經(jīng)元芯片進(jìn)行外圍電路的設(shè)計(jì)和擴(kuò)展,,使之成為L(zhǎng)onWorks網(wǎng)上的一個(gè)特殊的LON節(jié)點(diǎn),這樣它不僅可以與LonWorks網(wǎng)絡(luò)上的LON節(jié)點(diǎn)進(jìn)行通信,,還可以作為適配器的協(xié)通信處理器,。

??? TMPN3150片內(nèi)存儲(chǔ)器的地址范圍是E800H~FFFFH,包括2KB的RAM、0.5KB的EEPROM,、2.5KB保留空間和1KB的用于存儲(chǔ)器映象I/O的空間,。TMPN3150有16根地址線,可尋址64K空間,,可以外接存儲(chǔ)器,,如RAM、ROM,、EEPROM或FLASH等,。由于開發(fā)Neuron芯片時(shí)采用Neuron C語言,內(nèi)存占用大,,另外其作為通信協(xié)議處理器使用要求有大量的數(shù)據(jù)緩沖區(qū)進(jìn)行數(shù)據(jù)交換,,而僅僅利用3150內(nèi)部的2KRAM空間是遠(yuǎn)遠(yuǎn)不夠的,因此擴(kuò)展了外部存儲(chǔ)器FLASH和RAM,。FLASH選用AT29C512,,其地址范圍是0000H~7FFFH;RAM選用IS61C256AH-15N,其地址范圍是8000H~DFFFH,。AT29C512和IS61C256AH-15N的地址范圍由Neuron芯片的地址線和控制線E及相關(guān)的邏輯門電路來確定,。神經(jīng)元芯片的晶振為10MHz。Neuron芯片與LON的網(wǎng)絡(luò)介質(zhì)的接口采用上海工業(yè)自動(dòng)化儀表研究所生產(chǎn)的雙絞線收發(fā)器,。收發(fā)器按其傳輸速率可以分為TPT/XF-78(傳輸速率為78kbps),、TPT/XF-1250(傳輸速率為1.25Mkbps)兩種型號(hào),用于滿足不同的通訊要求,。這里選用的是TPT/XF-1250,。

??? EZ-USB單片機(jī)采用的是EZ-USB2100系列中具有44個(gè)引腳的AN2131S。AN2131S是互聯(lián)適配器的主CPU,,利用其I/O端口足以完成所需的功能,。EZ-USB芯片中包含內(nèi)部程序/數(shù)據(jù)RAM共8KB,不再需要ROM或其它非易失性存儲(chǔ)器,。主CPU與輔CPU的連接很簡(jiǎn)單,,即與輔CPU的11個(gè)I/O口進(jìn)行連接。單片機(jī)的PB口接上輔CPU的IO0~IO7,,為兩個(gè)CPU的并行通訊數(shù)據(jù)端口,。單片機(jī)的PC0~PC2分別接神經(jīng)元芯片IO8~I(xiàn)O10,完成控制功能,。AN2131S再通過引腳USBD+和USBD-與主機(jī)PC/Laptop互聯(lián),。

3 軟件設(shè)計(jì)

??? 適配器的軟件程序設(shè)計(jì)分為兩大塊。一塊為對(duì)主機(jī)PC/Laptop程序的軟件設(shè)計(jì),,另一塊為對(duì)外圍USB設(shè)備——互聯(lián)適配器程序的軟件設(shè)計(jì),。

3.1 USB主機(jī)的軟件設(shè)計(jì)

??? 主機(jī)的軟件設(shè)計(jì)主要包括兩部分:一是基于USB的互聯(lián)適配器的驅(qū)動(dòng)程序,。如圖3所示,USB通信使用分層驅(qū)動(dòng)模型,,每層處理一部分通信過程,,這樣可以使不同設(shè)備在一些任務(wù)上使用相同的驅(qū)動(dòng)。這里使用Microsoft WDM DDK和Microsoft Visual C++6.0來完成,。

?

??? 二是USB通信程序和用戶服務(wù)程序。用戶服務(wù)程序通過USB通信程序與系統(tǒng)USBDI(USB Device Interface)通信,,由系統(tǒng)完成USB協(xié)議的處理與數(shù)據(jù)傳輸,。從邏輯上講,USB數(shù)據(jù)的傳輸是通過管道進(jìn)行的,。USB系統(tǒng)軟件通過缺省管道(與端點(diǎn)0相對(duì)應(yīng))管理設(shè)備,,設(shè)備驅(qū)動(dòng)程序通過其它的管道來管理設(shè)備的功能接口。為了滿足不同外設(shè)和用戶的要求,,USB提供了四種傳輸方式:控制傳輸,、同步傳輸、中斷傳輸和塊傳輸,。本系統(tǒng)使用的是塊傳輸,。EZ-USB提供了16個(gè)用于塊傳輸?shù)亩它c(diǎn),包括7個(gè)IN端點(diǎn)(EP1_IN~EP7_IN)和7個(gè)OUT端點(diǎn)(EP1_ OUT~EP7_OUT),。每個(gè)端點(diǎn)都有一個(gè)64字節(jié)的緩沖區(qū),。塊端點(diǎn)無方向控制,一個(gè)端點(diǎn)地址對(duì)應(yīng)一個(gè)方向,,所以端點(diǎn)IN1的地址不同于端點(diǎn)OUT1的地址,,本適配器就采用這對(duì)端點(diǎn)傳輸數(shù)據(jù)。其中,,端點(diǎn)0在USB系統(tǒng)中有特定含義,,它是EZ-USB芯片中唯一的控制端點(diǎn),用于傳輸控制信息,。

??? 開發(fā)可以訪問互聯(lián)適配器的應(yīng)用程序,,可使用任何一個(gè)支持win32函數(shù)CreateFile()和DeviceIoControl()的編譯器。首先調(diào)用CreateFile()函數(shù),,來取得訪問設(shè)備驅(qū)動(dòng)程序的句柄,,CreateFile()使用設(shè)備的鏈接符作為函數(shù)參數(shù)。然后調(diào)用DeviceIoControl()函數(shù)來提交I/O控制碼,,并且為CreateFile()函數(shù)返回的設(shè)備句柄設(shè)置 I/O緩沖區(qū),。最后,還要調(diào)用CloseHandle()關(guān)閉設(shè)備,。其中,,最重要的函數(shù)是DeviceIoControl(),,它的功能是完成應(yīng)用程序與驅(qū)動(dòng)程序之間數(shù)據(jù)的交換。DeviceIoControl()函數(shù)的具體格式為:

??? BOOL DeviceIoControl(

?????? HANDLE hDevice,,???????? ??????? //外設(shè)句柄

?????? DWORD dwIoControlCode,,??????????//I/O操作控制代碼

?????? LPVOID? IpInBuffer,?????????????//輸入緩沖區(qū)指針

?????? DWORD nInBufferSize,, ?????????? //輸入緩沖區(qū)大小

?????? LPVOID? IpOutBuffer,,????????????//輸出緩沖區(qū)指針

?????? DWORD nOutBufferSize,???????????//輸出緩沖區(qū)大小

?????? LPDWORD??? IpBytesReturned,,?????//實(shí)際返回的字節(jié)數(shù)

?????? LPOVERLAPPED? IpOverLapped???????//用于異步操作的結(jié)構(gòu)指針

??? );

3.2 外圍USB設(shè)備——互聯(lián)適配器的軟件設(shè)計(jì)

??? 這一部分的軟件編寫也包括兩部分,。一部分為對(duì)主CPU(EZ-USB)的編寫。USB內(nèi)核功能強(qiáng)大,,可以自動(dòng)完成USB協(xié)議的轉(zhuǎn)換,,從而大大簡(jiǎn)化了8051的代碼。采用C51語言,,并使用EZ-USB的固件函數(shù)庫和程序框架,。框架完成了一個(gè)簡(jiǎn)單的任務(wù)循環(huán),,用戶函數(shù)TD_Poll()能夠?qū)崿F(xiàn)USB外設(shè)的功能,。因?yàn)閺腃PU(Neuron Chip)的并行模式是芯片內(nèi)部定義的,遵從虛擬的寫令牌傳遞協(xié)議,,所以需要編寫芯片EZ-USB的程序來模擬3150的I/O并行口的從A模式,。所以TD_Poll()函數(shù)主要完成四項(xiàng)工作:與輔CPU同步、握手,、令牌的傳送以及并行口數(shù)據(jù)的讀寫,。

??? 另一部分為從CPU的軟件程序的編寫,用神經(jīng)元的編程語言即Neuron C語言完成,。從CPU主要完成將并口得到的報(bào)文解析,,再利用Neuron C的消息傳送機(jī)制,將解析的消息傳送給適配器下層的應(yīng)用節(jié)點(diǎn);同時(shí),,還將從適配器下層的應(yīng)用節(jié)點(diǎn)以消息形式傳送上來的數(shù)據(jù)或信息構(gòu)造成EZ-USB可識(shí)別的報(bào)文,,通過并口傳送給EZ-USB。由從機(jī)內(nèi)部定義的與并行I/O對(duì)象有關(guān)的函數(shù)主要有:

??? io_in_ready():當(dāng)并口上有數(shù)據(jù)傳送到來時(shí),,此函數(shù)值為TRUE,。此時(shí)可調(diào)用io_in()函數(shù)接收數(shù)據(jù)。

??? io_out_request():此函數(shù)用來向并口總線發(fā)出請(qǐng)求以獲取令牌,。

??? io_out_ready():當(dāng)并口總線處于可寫狀態(tài)即3150獲取到令牌后,,此函數(shù)值為TRUE,此時(shí)可調(diào)用io_out()函數(shù)將數(shù)據(jù)發(fā)送到并口,。在調(diào)用此函數(shù)之前應(yīng)先調(diào)用io_out_request(),。

??? io_in(): 將并口上的數(shù)據(jù)接收到緩沖區(qū),。

??? io_out():將緩沖區(qū)的數(shù)據(jù)發(fā)送到并口總線上。

??? 本文設(shè)計(jì)的互聯(lián)適配器在結(jié)構(gòu)上采用雙CPU設(shè)計(jì),,具有結(jié)構(gòu)簡(jiǎn)單,、小型化的特點(diǎn),非常適合用于測(cè)控系統(tǒng),。在軟件設(shè)計(jì)中,,突出模塊的靈活性,并且USB內(nèi)核可以自動(dòng)完成USB協(xié)議的轉(zhuǎn)換,,大大簡(jiǎn)化了8051的代碼,。總之,,本適配器具有組態(tài)靈活、成本低,、可靠性好,、通信能力強(qiáng)等優(yōu)點(diǎn),在工業(yè)控制,、樓宇自動(dòng)化等諸多領(lǐng)域有廣闊的應(yīng)用前景,。

?

參考文獻(xiàn)

1 Neuron C Programmer’s Guide. ECHELON公司,1995

2 Neuron C Reference Guide.ECHELON公司,,1995

3 Neuron Chip Data Book.ECHELON公司,,1995

4 楊育紅.LON網(wǎng)絡(luò)控制技術(shù)及應(yīng)用.西安:西安電子科技大學(xué)出版社,1999

5 楊育紅. LON網(wǎng)絡(luò)程序設(shè)計(jì).西安: 西安電子科技大學(xué)出版社,,2001

6 顏榮江. EZ-USB2100系列單片機(jī)原理,、編程及應(yīng)用.北京:北京航空航天大學(xué)出版社,2002

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。