時間:2012-06-14 09:19:57來源:張英菊
摘 要:本文針對現(xiàn)有與計算機通信的高速接口存在的問題,以STC89C58為核心,基于USB接口芯片CH372設計了一個高速接口,詳細介紹了硬件電路設計,下位機固件程序設計和上位機應用程序設計。結果表明,該接口能很好完成高速通信,有較高的可靠性,可用于檢測測量控制系統(tǒng)的高速數(shù)據(jù)采集和監(jiān)控調試等場合,具有很大的應用價值。
關鍵詞:USB;高速接口;CH372;固件編程;數(shù)據(jù)采集
0 引言
在現(xiàn)代科學研究和工業(yè)現(xiàn)場應用中,信號采集和圖像處理等諸多領域,對高速的數(shù)據(jù)通信要求越來越高。傳統(tǒng)的高速數(shù)據(jù)通信多是基于PCI,ISA等接口的數(shù)據(jù)卡,存在過多占用系統(tǒng)資源、設計復雜、不便攜帶、價格較高和擴展性差等缺點。因此提出一種基于USB接口芯片CH372實現(xiàn)的高速接口。USB(Universal Serial Bus,通用串行總線)是在1995年被提出來的,并由Compaq,Digital Equipment Corp,IBM,Intel,Microsoft,NEC和Northern Telecom等7家公司定義和推廣[1]。由于其具有的易擴展,支持熱插拔,價格低廉,使用方便等優(yōu)點,應用廣泛,已成為計算機外設的主流必備接口之一,具有低速和高速兩種模式,在USB2.0高速模式下,速率可達480Mbps,滿足大部分高速通信的要求。
1 CH372芯片介紹
CH372是沁恒公司生產的USB總線的通用設備接口芯片。在本地端,CH372具有8位數(shù)據(jù)總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機/DSP/MCU/MPU等控制器的系統(tǒng)總線上;在計算機系統(tǒng)中,CH372的配套軟件提供了簡潔易用的操作接口,與本地端的單片機通訊就如同讀寫文件。同時,CH372內置了USB通訊中的底層協(xié)議,具有省事的內置固件模式和靈活的外置固件模式。在內置固件模式下,CH372自動處理默認端點0的所有事務,本地端單片機只要負責數(shù)據(jù)交換,所以單片機程序非常簡潔。在外置固件模式下,由外部單片機根據(jù)需要自行處理各種USB請求,從而可以實現(xiàn)符合各種USB 類規(guī)范的設備[2]。
CH372為全速USB,兼容USB2.0,即插即用,外圍元器件簡單,只需要晶體和電容。提供一對主端點和一對輔助端點,支持控制傳輸、批量傳輸、中斷傳輸?shù)榷喾N傳輸模式。通用Windows驅動程序提供設備級接口,通過DLL提供API應用層接口。可以自定義廠商標識( Vendor ID) 和產品標識( Product ID) 。主端點上傳下傳緩沖區(qū)各64 字節(jié),輔助端點上傳下傳緩沖區(qū)各8字節(jié)[2]。由于CH372內置了USB底層通訊協(xié)議,且提供驅動程序,大大節(jié)省了開發(fā)者的開發(fā)時間,提高效率,降低了成本。
2 硬件設計
CH372與單片機連接可選擇總線擴展或非總線擴展的方式,在本設計中,AT89C58和CH375采用地址/數(shù)據(jù)復用的總線擴展方式連接。其硬件接口電路圖如圖1所示。
圖1 硬件接口電路
Fig.1 Hardware Interface Circuit
CH372芯片的八位數(shù)據(jù)線與單片機P0口連接,RD#和WR#則分別連接到單片機的讀選通輸出引腳和寫選通輸出引腳,片選信號CS#為低時選中芯片,INT#用于接單片機中斷引腳INT0,中斷請求為低電平有效。當A0引腳為高電平時選擇命令端口,可以寫入新的命令,或者讀出中斷標志;當A0引腳為低電平時選擇數(shù)據(jù)端口,可以讀寫數(shù)據(jù)[3]。
CH372的UD+和UD-引腳直接連接到USB總線上。R1是為了芯片安全而串接保險電阻,大小為1Ω。CH 372芯片內置了電源上電復位電路,一般情況下,不需要外部提供復位。CH372的VCC接+5V電源,在VCC和GND之間的0.1μF電解電容C2用于外部電源退耦,電容C1選用獨石電容或者高頻瓷片電容,用于CH372內部電源節(jié)點退耦。在設計PCB時,退耦電容C1和C2要盡量靠近CH372的相連引腳;使D+和D-信號線盡量平行布線,盡量在兩側提供地線或者覆銅,減少來自外界的信號干擾;盡量縮短XI和XO引腳相關信號線的長度,為了減少高頻時鐘對外界的干擾,可以在相關元器件周邊環(huán)繞地線或者覆銅。
3 軟件設計
3.1 下位機固件程序設計
下位機固件程序是與CH372相連的單片機中執(zhí)行的代碼,配合相應上位機應用程序,實現(xiàn)數(shù)據(jù)通信。其程序流程圖如圖2所示。
圖2 程序流程圖
Fig.2 Program Flow Chart
固件程序主要分為初始化程序模塊和中斷程序模塊,下面分別介紹:
初始化程序模塊:初始化程序首先向CH372發(fā)送測試工作狀態(tài)的命令,檢查CH372是否正常工作,如不正常,重復發(fā)送硬件復位命令多次。然后設置外部自定義的USB設備VID和PID,此項操作為可選,不執(zhí)行該命令則使用默認的VID和PID。接下來設置USB的工作模式,這是必須要有的操作。最后,置外部信號為低電平觸發(fā),清中斷標志,允許CH372中斷。
中斷程序模塊:USB協(xié)議規(guī)定,任何傳輸都必須由主機發(fā)起。上位機發(fā)送命令給CH372后,CH372通過中斷的方式通知單片機。CH372支持所有的四種USB數(shù)據(jù)傳輸方式??筛鶕?jù)具體應用使用相應傳輸方式。進入中斷后,首先獲取中斷狀態(tài)并情中斷標志,然后根據(jù)讀取的中斷狀態(tài)進行對應操作。如果是端點下傳,則從當前USB中斷的端點緩沖區(qū)讀取數(shù)據(jù)塊,根據(jù)與上位機應用層約定的命令進行操作,并釋放緩沖區(qū)。如果是數(shù)據(jù)發(fā)送,則從下位機的指定地址緩沖區(qū)中讀取數(shù)據(jù)塊,上傳數(shù)據(jù)。
3.2 上位機固件程序設計
上位機程序由設備驅動程序和應用程序組成[4],CH372已經提供了設備驅動程序,開發(fā)者可以直接使用。CH372在計算機端還提供了應用層接口,應用層接口是由CH372動態(tài)鏈接庫DLL提供的面向功能應用的API。CH372動態(tài)鏈接庫提供的API包括:設備管理API、數(shù)據(jù)傳輸API和中斷處理API。開發(fā)者只需要調用相應的接口函數(shù),就可以方便實現(xiàn)對CH372的操作,大大提高了開發(fā)效率。
上位機程序采用Visual Studio 2010編寫,DLL負責與內核態(tài)的USB功能驅動程序通信。對上位機程序來說,CH372是一個擁有設備名稱的文件。程序提供對設備打開、關閉,對參數(shù)的設置以及通信數(shù)據(jù)的顯示等功能。上位機程序與下位機程序約定命令結構,識別命令與數(shù)據(jù)包,方便分析。上位機首先加載動態(tài)鏈接庫CH372DLL.DLL,然后調用OpenDevice函數(shù)打開設備,采用定時查詢的方式,發(fā)送命令給CH372,獲取采集數(shù)據(jù),進而對數(shù)據(jù)做相應處理。
4 測試和結論
通過上位機程序測試了數(shù)據(jù)傳輸準確性和速度,具體結果如圖3所示。在STC89C58,24M晶振條件下,上傳和下傳速度均已達到1MBps,同時具有較高準確性。本文詳細介紹了基于CH372的高速接口的硬件和軟件實現(xiàn),實現(xiàn)了高速的數(shù)據(jù)通信,該設計硬件電路簡單,使用方便,有很好的可靠性和穩(wěn)定性,采用獨立的USB接口芯片,便于替換升級各領域系統(tǒng)的接口,可以方便地移植到其它控制器中,在工業(yè)領域具有廣泛的應用前景。
圖3 測試數(shù)據(jù)傳輸準確性和速度的結果
Fig.3 Results of Test Data Correctness and USB Speed
標簽:
上一篇:臺達并條機自調勻整解決方案...
中國傳動網(wǎng)版權與免責聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(wǎng)(www.connectcrack.com)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。
本網(wǎng)轉載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-05-19
2025-04-30
性能躍升20%!維宏NK300CX Plus數(shù)控系統(tǒng)...
2025-04-11
2025-04-08
2025-03-31
應用案例 | 使用宏集TELE監(jiān)控繼電器監(jiān)控...
2025-03-26