久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于USB總線通信數據采集器的設計與實現

基于USB總線通信數據采集器的設計與實現

作者: 時間:2012-11-29 來源:網絡 收藏

AT89C52的控制程序分為初始化、主循環和中斷服務3部分。初始化部分完成單片機和所有外圍電路(包括PDIUSBD12)的初始化;主循環部分等待來自上位機的命令或來自終端設備的數據;中斷服務程序完成相應的中斷處理功能。下面列出了中斷服務程序的處理過程:
usb_isr( )interrupt( )
{DISABLE
fn_usb_isr( );
ENABLE
}
void fn_usb_isr( )
{unsigned int i_st
bEPPflags.bits.in_isr=1;
i_st=D12_ReadInterruptRegister( );//讀中斷寄存器
if(i_st !=0)
{ if(i_stD12_INT_BUSRESET)
{ bus_reset( );//總線復位處理
bEPPflags.bits.bus_reset=1;
}
if(i_stD12_INT_EOT)
dma_eot( );//DMA結束處理
if(i_st Dl2_INT_SUSPENDCHANGE)
bEPPflags.bits.suspend=1;
if(i_st Dl2_INT_ENDPOIN)
ep0-txdone( );//控制端點0輸入
if(i_stD12_INT_ENDPOOUT)
ep0-rxdone( );//控制端點0輸出
if(i_stD12_INT_ENDPlIN)
epl_txdone( );//端點1輸入
if(i_stD12_INT_ENDPlOUT)
epl_rxdone( );//端點1輸出
if(i_stDl2_INT_ENDP2IN)
main_txdone( );//主端點2輸入
if(i_stD12_INT_ENDP20UT)
main-rxdone( );//主端點2輸出
}
bEPPflags.bits.in_isr=0;
}
設備安裝完后準備運行前,操作人員可利用上位機管理軟件提供的用戶界面初始化一些系統參數,如總線類型、終端類型等。在執行對終端單元的時,MCU首先接收一個上位機客戶服務軟件下傳的指令幀,經過確認是協議識別指令后,上傳一個表示就緒的狀態幀。然后,接收識別用的數據幀,經過檢驗,如果數據幀有錯就返回相應的狀態幀并等待上位機重新發出數據,如果數據正確則先返回狀態幀,然后開始對終端單元的識別與數據采集。
對一個固定的終端而言,MCU發出握手信號,遠方終端返回相應的信息,數據經RS232/RS485接收,經過MCU的協議解析后得到所需的純數據,將其暫存入RAM62256中的指定地址;當上位機發出讀取數據的命令后MCU將數據經PDIUSBD12傳給上位機。
4.2 上位機的程序設計
從上位機來看,通信為它的一個USB外設,因此上位機必須提供USB外設的驅動程序。上位機的管理軟件包括客戶服務程序和USB驅動程序。USB驅動程序(USBD)是駐留在上位機的為客戶提供通用服務的軟件實體,它管理主控制器上的一個或多個功能。它通過調用適當的主控制器驅動程序(HCD)將用戶I/O請求包(IRP)中的數據轉化為設備端點的數據,或通過回調適當的HCD將設備端點的數據轉化為客戶IRP中的數據。
客戶服務程序是用VC++6.0編寫的,主要完成數據的分析顯示功能。MCU上傳的數據信息經過相應的校驗,如有誤,則通知終端重傳;如無誤,則將校驗后的信息轉存人計算機指定的內存,并備份到相應的文檔,供其他的客戶服務程序使用。
USB驅動程序的編寫往往是USB設備開發過程中最困難的,通常采用Windows DDK來實現。目前有許多軟件廠商提供各種各樣的驅動程序生成工具,如Computer ware的Driver Studio,Blue Waters的Driver Wizard等。本設計是采用Driver Studio軟件生成的程序框架,添加了適當的用戶代碼,完成了適合于通信的驅動程序的編寫。
5 通信與傳統數據采集方式通信效率的比較
以采集歐姆龍公司的可編程邏輯控制器(PLC)為例,一次采集30個通道,每個通道16個開關量(即4個十六進制數),則有120個十六進制數需要采集和傳輸,加上通信協議中的其它位,一幀共有131個字符,每一個字符又按串行通信中的一幀11位來發送,則共有1441位ASCII碼有待傳輸。若波特率設為9600b/s,則每采集一次需要用時150ms,在此期間每一幀的接收、效驗工作都需CPU的介入。若以傳統的方式進行數據的采集和通信,那么主機CPU在這段時間就被串行通信的事務占用而不能處理其它工作,這很耽誤時間。而采用通信數據采集器代替主機來完成這一費時的工作后,數據的采集、傳輸以及協議的解析都不需占用主機的時間,解析后的純數據經過PDIUS-BDl2上傳也僅需很短時間即可完成(大約為0.12ms,PDIUSBD12在同步模式下的數據傳輸率為1Mb/s),通信效率比傳統方式提高了很多倍,這樣就把主機從通信瓶頸中解放出來,為主機節省了大量的時間去完成其它工作。
6 結論
本文提出的基于的智能通信數據采集器具有數據采集和通信的效率高,結構簡單,運行可靠,使用方便等優點,在實際應用中取得了良好的效果。它適用于實時監控、數據采集等場合,也可以增強協議識別和協議解析功能,因而在有標準通信協議和規范化的數據格式而缺少詳細技術資料的終端設備的通信中具有廣泛的使用價值。
光電開關相關文章:光電開關原理

上一頁 1 2 下一頁

評論


相關推薦

技術專區

關閉