基于CH375多通道USB接口與PC機通信的實(shí)現
關(guān)鍵詞:USB接口,加速器,核輻射監測系統,多通道
正離子靜電加速器在運轉過(guò)程中會(huì )產(chǎn)生能量較高的γpX和快中子等多種放射性輻射,對周?chē)沫h(huán)境造成污染,對生命造成危害[1]。由于其體積龐大,輻射范圍廣,需設計一個(gè)多探測端的多通道同步核輻射監測系統,針對加速器周?chē)h(huán)境進(jìn)行輻射防護監測。每個(gè)探測端屬于一個(gè)探測通道,它們相互獨立。各通道將采集到的數據傳輸給上位機(主控計算機)。上位機進(jìn)行數據處理并顯示各個(gè)探測端的輻射強度及吸收劑量。
若采用串口(RS232)實(shí)現多通道傳輸,各通道每次向上位機傳輸的數據容量大(16K),而串口傳輸速度慢,花費的時(shí)間長(cháng)。在通信過(guò)程中,相應通道進(jìn)入中斷服務(wù)程序后,不能夠再采集新的信號,更加嚴重地影響了系統的探測效率。于是就采用CH375構成的USB接口進(jìn)行數據傳輸。速率可提高到1Mbit/s以上。同時(shí)USB所具有的即插即用、通用性強、易擴展、可靠性好等優(yōu)點(diǎn)[2,3]也極大地改善了接口的使用性能。
1 CH375模塊[4]簡(jiǎn)介
USB模塊CH375是一個(gè)USB總線(xiàn)的通用設備接口芯片,用戶(hù)無(wú)需編寫(xiě)驅動(dòng)程序,內置有USB通訊中的底層協(xié)議,完全滿(mǎn)足USB1.1標準。具有8位數據總線(xiàn)(D0~D7)、地址輸入(A0)、讀(RD#)、 寫(xiě)(WR#)、片選控制線(xiàn)(CS#)以及中斷輸出(INT#),可以方便地掛接到單片機的數據總線(xiàn)上。當A0為低電平時(shí)選擇數據端口,單片機通過(guò)8位并口對CH375進(jìn)行讀寫(xiě)數據;為高電平時(shí)選擇命令端口,可以向其寫(xiě)入命令。
在本地端,單片機對CH375的操作是采用命令加數據的I/O操作方式,任何操作都是先發(fā)命令(其命令格式參考文獻3)給CH375,然后執行數據輸入輸出。CH375接收到上位機發(fā)送的數據或者發(fā)送完給上位機的數據后,以中斷方式通知單片機。
將CH375芯片的驅動(dòng)程序、動(dòng)態(tài)鏈接庫拷貝到上位機中,利用CH375動(dòng)態(tài)鏈接庫DLL提供的API函數對其進(jìn)行操作,對USB設備的通信就幾乎和訪(fǎng)問(wèn)本地硬盤(pán)中的文件差不多了。
2 具有多個(gè)USB接口的多通道數據采集系統
圖1是加速器的核輻射監測系統。是個(gè)具有多個(gè)USB接口的多通道數據采集系統。該系統可安裝連接多個(gè)探測端(最多128個(gè))。監測不同的放射性輻射時(shí),裝配相應的探測器。每個(gè)探測通道的工作原理及電子線(xiàn)路都相同,分別連接到USB擴展卡上。多道分析器采用高性能AVR單片機ATmega128作為控制器。ATmega128運用Harvard結構概念,具有預取指令功能,機器周期為1個(gè)時(shí)鐘周期,絕大多數指令為單周期指令,工作頻率為16MHz時(shí)可達到16MIPS的性能[5]。用其控制高速模數轉換電路,把探測器輸出的模擬量轉換成計算機可接收的數字量,進(jìn)行存儲,等待上位機的讀取。
圖1加速器多通道核輻射監測系統結構圖
單一探測通道,用CH375構成的USB接口電路原理如圖2所示。各通道接收到上位機發(fā)出讀取數據命令后,由ATmega128控制將所有探測數據通過(guò)USB接口電路傳輸給上位機。
圖2 CH375構成的USB接口電路原理圖
3 多個(gè)通道USB接口的軟件設計
各通道的USB模塊CH375在計算機應用層與其本地端單片機ATmega128之間提供了端對端的連接。統一采用數據加應答方式進(jìn)行通信,所有的通信都由計算機應用層發(fā)起,然后以接收到單片機的應答結束。單一通道完整的通信過(guò)程包括:
① 計算機應用層按事先約定的格式將數據請求發(fā)送給CH375;
② CH375以中斷方式通知單片機。
③ 單片機進(jìn)入中斷服務(wù)程序,獲取CH375的中斷狀態(tài)并分析;
④ 如果是上傳(上傳緩沖區的數據被計算機成功讀?。?,則釋放當前USB緩沖區,然后退出中斷程序;
⑤ 如果是下傳(下傳緩沖區成功接收到計算機發(fā)送的數據),則從數據下傳緩沖區讀取數據塊;
⑥ 分析接收到的數據塊,如果是數據請求上傳命令,準備應答數據(采集數據);
⑦ 單片機將采集數據寫(xiě)入數據上傳緩沖區中,然后退出中斷程序;
⑧ CH375將采集數據返回給計算機;
⑨ 計算機應用層接收到應答數據,傳輸結束;
該通訊方式具有數據自動(dòng)同步、程序設計簡(jiǎn)單、較好的交互性和可控性等優(yōu)點(diǎn)。計算機定時(shí)以此方式順次訪(fǎng)問(wèn)各通道,獲取各通道采集到的數據。
3.1 單片機端的程序設計
各通道單片機端程序設計相同。ATmega128中斷1(INT1)作為USB的中斷入口(參考圖2),采用數據加應答方式,其中斷1服務(wù)處理程序設計流程圖如圖3所示。
圖3 單片機端ATmega128中斷服務(wù)處理程序流程圖
采用C語(yǔ)言編程,編寫(xiě)單片機端ATmega128中斷1服務(wù)處理程序的基本框架如下所示:
void int1_isr (void) //USB中斷入口程序
{
CH375_WR_CMD_PORT(CMD_GET_STATUS); //向CH375發(fā)送中斷狀態(tài)獲取命令
InterruptStatus = CH375_RD_DAT_PORT();//獲取中斷狀態(tài),并通知CH375取消中斷請求
// 分析中斷狀態(tài),并做相應處理
if ( InterruptStatus= =USB_INT_EP2_OUT) // 數據下傳
{
CH375_WR_CMD_PORT( CMD_RD_USB_DATA );// 向CH375發(fā)送讀數據命令
RD_Data =CH375_RD_DAT_PORT( );//從CH375下傳緩沖區讀取數據塊
……… //分析接收到的數據塊
CH375_WR_CMD_PORT(CMD_WR_USB_DATA7); // 向CH375發(fā)送寫(xiě)數據命令
CH375_WR_DAT_PORT( DATA);// 將采集數據DATA寫(xiě)入CH375數據上傳緩沖區
return;
}
If(InterruptStatus= = USB_INT_EP2_IN) // 數據上傳
{
CH375_WR_CMD_PORT( CMD_UNLOCK_USB );// 釋放當前USB緩沖區
return;
}
}
3.2 計算機端的程序設計
采用Visual C++作為計算機端應用軟件的開(kāi)發(fā)平臺,以實(shí)現兩通道USB數據傳輸為例,計算機端程序設計流程圖如圖4所示。USB設備1即指通道1;USB設備2即指通道2。
圖4 計算機端兩通道USB數據傳輸程序設計流程圖
利用MFC(微軟基礎類(lèi))定時(shí)器函數[6],計算機定時(shí)順序訪(fǎng)問(wèn)兩通道,獲取采集數據。編寫(xiě)計算機端定時(shí)中斷處理程序的基本框架如下所示:
OnTimer(UINT nIDEvent) //定時(shí)函數入口
{
if (CH375OpenDevice(0 )= =INVALID_HANDLE_VALUE) // 打開(kāi)USB設備1(通道1 USB模塊CH375),返回句柄,出錯無(wú)效
………
if (CH375OpenDevice(1 )= =INVALID_HANDLE_VALUE) //打開(kāi)USB設備2
………
if ( CH375WriteData( 0, WriteBuf, length) ) //發(fā)送數據請求命令給USB設備1,成功發(fā)送后返回真。WriteBuf指向放置準備寫(xiě)出數據的緩沖區。Length指向長(cháng)度單元,輸入時(shí)為準備寫(xiě)出的長(cháng)度,返回后為實(shí)際寫(xiě)出的長(cháng)度。
………
if ( CH375ReadData( 0, ReadBuf, length) ) //從USB設備1讀取采集數據,成功讀取后返回真。ReadBuf為指向用于保存讀取數據的緩沖區。Length指向長(cháng)度單元,輸入時(shí)為準備讀取得長(cháng)度,返回后為實(shí)際讀取得長(cháng)度。
………
CH375CloseDevice( 0 ); //關(guān)閉USB設備1
if ( CH375WriteData( 1, WriteBuf, length) ) //發(fā)送數據請求命令給USB設備2
………
if ( CH375ReadData( 1, ReadBuf, length) ) //從USB設備2讀取采集數據
………
CH375CloseDevice( 1 ); //關(guān)閉USB設備2
}
4 結束語(yǔ)
采用CH375進(jìn)行USB數據傳輸速率高,達到1Mbit/s以上。而且無(wú)需編寫(xiě)復雜的USB驅動(dòng)程序,利用其動(dòng)態(tài)鏈接庫即可實(shí)現多通道USB接口與PC機通信。研發(fā)簡(jiǎn)單,易于實(shí)現,可以使數據傳輸系統非常方便的從RS232總線(xiàn)轉向USB總線(xiàn),彌補其速度慢的缺點(diǎn),進(jìn)行系統升級。并且USB所具有的各種優(yōu)越性能,也必將使這種接口電路在數據傳輸中得到更廣泛的應用。
參考文獻
[1]謝一岡,陳昌,王曼,等. 粒子探測器與數據獲取[M]. 北京:科學(xué)出版社, 2003. 529-532.
[2]周建斌,黃錦華. USB接口技術(shù)在核譜測量系統中的應用研究[J]. 核電子學(xué)與探測技術(shù). 2004, 24(5). -506 -510
[3]胡榮強,郝艷杰. USB接口在數據采集系統中的應用[J]. 微計算機信息. 2005,21(1).-51-52
[4]南京沁恒電子有限公司. USB總線(xiàn)接口芯片CH375. http://www.Winchiphead.com, 2005
[5]宋建國. AVR單片機原理及應用[M]. 北京:北京航空航天大學(xué)出版社, 2000. 22-26
[6]David Simon, 周瑜萍,等. Visual C++ 6編程寶典[M].電子工業(yè)出版社, 2005.314-317
評論