侯代文,孫濤,鄧磊明
(91439部隊 遼寧 大連 116041)
TMS320VC33與主機通信的USB接口設計
侯代文,孫濤,鄧磊明
(91439部隊 遼寧 大連 116041)
通用串行總線(USB)是目前最常用的一種計算機總線。介紹了DSP芯片TMS320VC33與主機之間基于USB總線接口芯片CH372V通信的設計方案,詳細描述了TMS320VC33與CH372V的接口電路設計,并對CH372V的通信模式做了介紹,針對數(shù)據(jù)上傳和下傳通信程序以及API函數(shù)做了系統(tǒng)地說明,采用MFC實現(xiàn)了USB通信的應用程序。設計結果表明,該設計方案硬件成本低,軟件開發(fā)簡單,具有很強的實用性.
通用串行總線;CH372V;TMS320VC33;應用程序
DSP主要應用于實時和大數(shù)據(jù)量的信號處理系統(tǒng)[1]。當它與主機進行通信時,數(shù)據(jù)交換速度和接口復雜度是系統(tǒng)設計的關鍵性指標,因此需要設計一種高速、簡潔的通信方式。通用串行總線USB以其高速和內置電源等特性,在提高設備性能、降低成本以及系統(tǒng)小型化等方面得到廣泛應用。
USB的突出優(yōu)點包括以下幾點:連接靈活,熱插拔;一種接口匹配多種設備,可連接最多達127外設;自動配置,無須定位及安裝驅動程序,更無需重啟系統(tǒng);為外設提供最高達500 mA的電源;低功耗、低成本、高可靠性等[2]。
目前,USB接口芯片有很多種,主要包括以下3類。一類是帶有微控制器的USB芯片。這類芯片的微控制器有自己的結果和指令、可以從底層控制USB接口,主要有Cypress的EZ-USB/FX/FX2系列等;有些USB接口芯片微控制器選用通用芯片 (MCS51內核),如Atmel公司的AT89C513x、Intel公司的8x931等;也有一些公司的SoC芯片帶有USB接口,比如Atmel的ATC76113芯片就集成了兩種USB接口。另一類芯片需要外部微控制器控制,包括 Cypress公司的SL811HS芯片、National半導體公司的USBN9602等。還有一類單純的物理層總線接口轉換器,包括 Philips公司的PDIUSBPA等,這類芯片需要用戶自行設計USB協(xié)議,設計復雜,一般應用于控制器開發(fā)和測試。
文中所設計的TMS320VC33與計算機通信的系統(tǒng),對USB通信的速度和數(shù)據(jù)量等指標要求不高,只需選擇一款開發(fā)難度小,開發(fā)周期短的USB接口芯片,這里選擇了南京沁恒公司的USB總線接口芯片CH372V[3]。
TMS320VC33是TI公司2001年推出的性價比較高的浮點DSP芯片,它體積小、成本低、功耗低、接口方便,適用于信號處理、工業(yè)控制等應用領域[4]。在全部TMS320VC3X系列DSP芯片中,TMS320VC33不僅能夠取代該系列中現(xiàn)有的其他產(chǎn)品,而且在出現(xiàn)了TMS320VC33后,其他幾種型號的DSP的功能就顯得相形見絀。
本文主要設計了TMS320VC33與CH372V的接口電路,并給出了軟件設計流程以及具體的實現(xiàn)方法。
1.1 USB接口芯片CH 372V介紹
CH372V是用于USB總線的通用接口芯片,具有8位數(shù)據(jù)總線和讀控制、寫控制、片選控制以及中斷輸出功能,可以連接到單片機/DSP/MCU/MPU等控制器的系統(tǒng)總線上。在計算機系統(tǒng)中,CH372V的配套軟件提供簡潔易用的操作,與單片機通訊與文件讀寫同樣易于操作。
CH372V內置USB通訊中的底層協(xié)議,有簡便的內置固件模式和靈活的外置固件模式。在內置模式下,CH372V能自動處理端點0的全部事務,單片機只需負責數(shù)據(jù)交換,所以單片機程序非常簡潔。在外置模式下,由外部單片機根據(jù)需要處理各種USB請求,實現(xiàn)了符合各種USB規(guī)范的設備連接。CH372V芯片的工作原理如圖1所示。
CH372V是全速USB接口設備,可以兼容USB V2.0,即插即用,外圍元器件只需要提供晶體和電容。它提供的主端點和輔助端點,支持控制傳輸、批量傳輸、中斷傳輸?shù)裙δ?。CH372V具有易用的內置固件模式和靈活的外部固件模式。在內置固件模式下,它屏蔽了相關的USB協(xié)議,能自動完成標準的USB枚舉配置過程,不需本地端控制器處理,簡化了單片機的固件編程。CH372V是通用的Windows驅動程序設備級接口,可通過DLL提供API應用層接口。CH372V采用本地8位數(shù)據(jù)總線,支持讀選通、寫選通、片選輸入、中斷輸出等4線控制。CH372V主端點上傳下傳緩沖區(qū)均為64字節(jié),輔助端點上傳下傳緩沖區(qū)均為8字節(jié)。CH372V支持3.3 V電源電壓和低功耗模式,去掉了USB主機方式和串口通訊方式等功能,硬件成本更低。
圖1 CH372V工作原理圖Fig.1 The principle of CH372V
1.2 CH372V芯片介紹
CH372V芯片在本地端提供被動并行接口,包括8位的雙向數(shù)據(jù)總線D7~D0、讀選通輸入RD#、寫選通輸入WR#、片選輸入CS#、中斷輸出INT#以及地址輸入A0等。CH372芯片通過并行接口可以掛接到各種8位單片機、DSP、MCU的系統(tǒng)總線上,與多個外圍器件同時工作。
CH372V芯片的RD#引腳和WR#引腳可以與單片機的讀選通輸出以及寫選通輸出引腳連接,CS#引腳由地址譯碼電路驅動,當單片機具有多個外圍器件時用于設備選擇。INT#輸出的中斷請求在低電平時有效,可連接單片機的中斷輸入或普通I/O引腳,此時單片機使用中斷方式或查詢方式接收中斷請求。當WR為#高電平且CS#、RD#以及A0均為低電平時,CH372V中的數(shù)據(jù)由D7~D0輸出;當RD#為高電平且CS#、WR#以及A0均為低電平時,D7~D0上的數(shù)據(jù)可寫入CH372V芯片;當RD#和A1為高電平且CS#以及WR#為低電平時,作為命令碼,D7~D0上的數(shù)據(jù)能夠寫入CH372V芯片。
CH372V芯片正常工作時需要外部提供12 MHz的時鐘信號。一般地,時鐘信號由CH372V芯片內置的反相器通過晶體的穩(wěn)頻振蕩產(chǎn)生。外圍電路只需要XI和XO引腳之間連接標稱頻率為12 MHz的晶體,而且需要在XI和XO引腳接地端分別連接一個高頻振蕩電容。如果從外部直接輸入12 MHz時鐘信號,那么需要從XI引腳輸入,而XO引腳需要懸空。
CH372V芯片支持3.3 V電源供電。當使用3.3 V的工作電壓時,CH372V芯片的V3引腳應與VCC引腳連接,同時輸入3.3 V的外部電源,此時與CH372V芯片相連接的其他電路,其工作電壓不能超過3.3 V。
CH372V芯片內置5個物理端點:
1)端點0為默認端點,支持上傳和下傳功能,上傳和下傳緩沖區(qū)均為8字節(jié)長度;
2)端點1包括上傳和下傳兩個端點,上傳和下傳緩沖區(qū)均為8字節(jié)長度,上傳端點號是81H,下傳端點號是01H;
3)端點2也包括上傳和下傳兩個端點,上傳和下傳緩沖區(qū)均為64字節(jié)長度,上傳端點號是82H,下傳端點號是02H。
在內置固件模式下工作時,端點2的上傳端點為批量數(shù)據(jù)發(fā)送端點,而端點2的下傳端點為批量數(shù)據(jù)接收端點,同時端點1的上傳端點為中斷端點,而端點1的下傳端點作為輔助端點。
在外部固件模式下工作時,端點0為默認端點,可根據(jù)USB產(chǎn)品的需要選擇使用端點1或端點2,也可以由外部固件定義其用途。一般情況下,端點2作為數(shù)據(jù)傳輸?shù)闹鞫它c適用;根據(jù)需要,也可以將端點1作為輔助端點適用。
為了產(chǎn)品開發(fā)方便,在設計中本系統(tǒng)采用了內置固定模式。
1.3 CH372V與TMS320VC33的接口電路設計
CH372V外圍電路設計如圖2所示。圖中,芯片74AC11032是四路或門芯片,它實現(xiàn)邏輯關系CS#=+ A21+,即當=1,A21=0且=1時,CH372V的CS#引腳有效,TMS320VC33才能對 CH372V進行操作。USB_PORT是USB芯片的端口,圖中,USB總線包括了一對+ 3.3 V電源線和一對數(shù)據(jù)線。USB總線提供的電源的最大輸出電流可達500 mA,電壓約為5 V。為保護電路,用兩個二極管組成鉗位電路,并使用兩個電感來減少相互間的干擾。在印刷線路板PCB設計中,需注意以下事項:退耦電容C2和C3盡可能地靠近CH372V的連接引腳,縮短X1和X0引腳相關信號線的長度,D+和D-信號線需平行布線,最好在兩側提供地線或覆銅,以減少來自外界的干擾信號。為減少高頻時鐘信號對外界的干擾,也可在元器件周邊環(huán)繞地線或覆銅。
CH372V與TMS320VC33二者之間的通信接口設計是整個系統(tǒng)中較重要的一部分,只有當這兩部分之間能夠可靠、快速地數(shù)據(jù)通信時,所設計的通信系統(tǒng)才能夠實現(xiàn)其整體功能。TMS320VC33的I/O的邏輯電平是3.3 V[5-6],因此在進行DSP系統(tǒng)設計時,除了DSP芯片外,還涉及DSP芯片與其他外圍芯片的接口??紤]到3.3VDSP芯片與其他芯片的安全接口問題,以及CH372V芯片的設計,TMS320VC33采用3.3 V的TLL電平轉換標準,CH372V芯片也采用3.3 V電壓供電,表1對TMS320VC33與CH372V的電氣特性進行了對比。
圖2 CH372V與TMS320VC33接口設計電路圖Fig.2 CH372V-TMS320VC33 interface circuit
表1 TSM 320VC33與CH372V的電氣特性Tab.1 The electrical characteristics of TSM 320VC33 and CH 372V
當數(shù)據(jù)傳輸方向為 TMS320VC33到 CH372V時,CH372V端口的輸入低電平的范圍為-0.5~0.7 V,端口輸入高電平的范圍為2.0~3.8 V,TMS320VC33端口的輸出低電平的最大值為0.4 V,端口輸出高電平的最小值為2.4 V。可以看出CH372V和TMS320VC33在高電平和低電平均有相互交迭的部分,可以滿足信號的傳輸要求。因此TMS320VC33到CH372V方向的數(shù)據(jù)傳輸能夠正常進行。當數(shù)據(jù)傳輸方向為CH372V到TMS320VC33時,CH372V的端口輸出高電平的最小值為2.8 V,低電平的最大值為0.5 V;TMS320VC33的端口能夠識別的輸入高電平的最小值是2.1 V,端口輸入低電平的最大值是0.9 V,可以看出CH372V到TMS320VC33方向的數(shù)據(jù)也能夠正常進行。
由上面的分析可以知:TMS320VC33與CH372V的端口可以直接連接。
CH372V芯片為計算機應用層與本地端DSP提供了端對端的連接,在此基礎上,設計人員可以選用兩種USB通訊方式:單向數(shù)據(jù)流方式和請求加應答方式。前者使用了兩個方向相反的單向數(shù)據(jù)流通訊,數(shù)據(jù)傳輸速率相對較高,但數(shù)據(jù)不易同步;后者使用查詢方式進行通訊,數(shù)據(jù)自動同步,交互性和可控性較好,但數(shù)據(jù)傳輸速率較低。
1)單向數(shù)據(jù)流工作方式
單向數(shù)據(jù)流方式使用上傳數(shù)據(jù)流和下傳數(shù)據(jù)流完成雙向數(shù)據(jù)通訊,兩個數(shù)據(jù)流之間完全獨立。
下傳數(shù)據(jù)流由計算機應用層通過數(shù)據(jù)下傳API發(fā)起,CH372V芯片64個字節(jié)一組,將較大的數(shù)據(jù)塊分為多組提交單片機。如果應用層發(fā)送150個字節(jié),則單片機會中斷3次,前兩次各獲取64字節(jié),最后一次獲取22字節(jié)。
上傳數(shù)據(jù)流有兩種發(fā)起方式:一種為查詢方式,由計算機應用層定期以查詢方式發(fā)起;另一種為偽中斷方式,由單片機以中斷數(shù)據(jù)通知計算機應用層,再通過計算機應用層發(fā)起。由于USB總線是主從式結構,計算機必須主動聯(lián)系USB設備,USB設備才向計算機上傳數(shù)據(jù)。
在上傳數(shù)據(jù)流以查詢方式工作的系統(tǒng)中,計算機應用層通過數(shù)據(jù)上傳API讀取數(shù)據(jù)。當沒有數(shù)據(jù)需要單片機上傳時,計算機應用層會一直等待,此時該應用層程序的線程會被掛起。當單片機上傳數(shù)據(jù)時,需要將數(shù)據(jù)寫入CH372V的上傳緩沖區(qū),計算機應用層自動取走數(shù)據(jù),然后CH372V以中斷方式通知單片機上傳結束,以便上傳后續(xù)數(shù)據(jù)。在使用這種方式時,建議用CH375的SetBufUpload控制內部緩沖上傳。
對以偽中斷方式發(fā)起上傳的系統(tǒng),計算機應用層在初始化時設置了一個偽中斷服務程序,以后應用層就不需要再控制上傳數(shù)據(jù)流。單片機上傳數(shù)據(jù)時,先將數(shù)據(jù)寫入上傳緩沖區(qū)中,再將中斷特征數(shù)據(jù)寫入中斷端點上傳緩沖區(qū)中。1毫秒之內與中斷特征數(shù)據(jù)對應的偽中斷服務程序就會被激活,偽中斷服務程序會通知主程序調用數(shù)據(jù)上傳API接收上傳數(shù)據(jù)塊。在此過程中,單片機會收到CH372V芯片發(fā)出的兩次中斷,先是中斷端點上傳成功中斷,接著是批量端點上傳成功中斷。
2)請求加應答工作方式
請求加應答方式通過使用下傳的主動請求和上傳的被動應答完成交互式雙向數(shù)據(jù)通訊,下傳與上傳相互對應,相互關聯(lián)。
主動請求指由應用層下傳給單片機的數(shù)據(jù)請求,而被動應答指在單片機收到數(shù)據(jù)請求后,上傳給機應用層的應答數(shù)據(jù)。全部通訊均由計算機應用層發(fā)起,再以接收到單片機的應答結束,整個過程包括:
①計算機應用層將數(shù)據(jù)請求發(fā)送給CH372V芯片;
②CH372V向單片機以中斷方式發(fā)出通知;
③單片機運行中斷服務程序,獲取CH372V中斷狀態(tài)并分析;
④如果為上傳過程,則釋放USB緩沖區(qū),退出中斷程序;
⑤如果為下傳過程,則由數(shù)據(jù)下傳緩沖區(qū)讀取數(shù)據(jù)塊;
⑥分析所接收到的數(shù)據(jù)塊,組織應答數(shù)據(jù),此過程也可在退出中斷程序后進行;
⑦單片機將應答數(shù)據(jù)寫入上傳緩沖區(qū),退出中斷程序;
⑧CH372V將應答數(shù)據(jù)發(fā)送給計算機;
⑨計算機應用層接收應答數(shù)據(jù)。
考慮開發(fā)成本及本系統(tǒng)的實際需要,我們采用了請求加應答的方式實現(xiàn)了點對點USB的傳輸方式。
2.1 基于CH372V的DSP芯片軟件設計
TI的 TMS320VC33集成開發(fā)環(huán)境 Code Composer對 C語言支持較好,為縮短開發(fā)周期、提高系統(tǒng)可移植性,下位機采用C語言進行程序編譯,其程序流程圖如圖3所示。
圖3 下位機程序流程圖Fig.3 The flow of slave computer
CH372V芯片通過兩個地址位進行控制,當A0為高電平時選擇命令端口,寫入命令;當A0為低電平時選擇數(shù)據(jù)端口,讀寫數(shù)據(jù)。DSP芯片通過8位并口對CH372V芯片進行讀寫操作,所有操作均由一個命令碼、若干個輸入數(shù)據(jù)或若干個輸出數(shù)據(jù)構成,也有些命令沒有輸入數(shù)據(jù)或輸出數(shù)據(jù)。命令操作主要包括以下步驟:
1)A0=1時,向命令端口寫命令代碼;
2)如果該命令包括輸入數(shù)據(jù),當A0=0時,寫入輸入數(shù)據(jù),每次寫入一個字節(jié);
3)如果該命令包括輸出數(shù)據(jù),當A0=0時,讀取輸出數(shù)據(jù),每次一個字節(jié);
4)命令完成后,可暫?;蛘咿D到步驟1)繼續(xù)執(zhí)行下一命令。
CH372V芯片專門用于處理USB的通訊過程,在接收到數(shù)據(jù)或發(fā)送完數(shù)據(jù)后,CH372V通過中斷通知DSP芯片處理。
DSP芯片通過CH372V接收數(shù)據(jù)的處理步驟如下:
1)CH372V接收到USB主機發(fā)來的數(shù)據(jù)時,首先鎖定當前USB緩沖區(qū),然后將INT#引腳設置為低,向DSP芯片請求中斷;
2)DSP芯片進入中斷服務程序,執(zhí)行GET_STATUS命令獲取中斷狀態(tài);
3)GET_STATUS命令完成后,CH372V將INT#引腳恢復為高電平,取消中斷請求過程;
4)DSP芯片執(zhí)行RD_USB_DATA命令,從CH372V讀取接數(shù)據(jù);
5)RD_USB_DATA命令完成后,CH372V釋放當前緩沖區(qū),繼續(xù)USB通訊;
6)DSP芯片退出中斷服務。
DSP芯片通過CH372V發(fā)送數(shù)據(jù)主要包括以下步驟:
1)DSP芯片執(zhí)行WR_USB_DATA命令,向CH372V寫入需發(fā)送的數(shù)據(jù);
2)CH372V等待,直至USB主機在需要時取走數(shù)據(jù);
3)USB主機取走數(shù)據(jù)后,CH372V鎖定當前 USB緩沖區(qū),將INT#引腳設置為低電平,同時向DSP芯片請求中斷;
4)DSP芯片運行中斷服務程序,執(zhí)行GET_STATUS命令獲取中斷狀態(tài);
5)GET_STATUS命令完成后,CH372V將INT#引腳恢復為高電平并取消中斷請求;
6)DSP芯片執(zhí)行WR_USB_DATA命令,向CH372V寫入要發(fā)送的數(shù)據(jù),若沒有后續(xù)數(shù)據(jù)需要發(fā)送,則DSP芯片不執(zhí)行WR_USB_DATA命令;
7)DSP芯片執(zhí)行命令UNLOCK_USB;
8)CH372V在完成UNLOCK_USB命令后,釋放當前緩沖區(qū),繼續(xù)US通訊;
9)DSP芯片退出中斷服務;
10)若DSP芯片已經(jīng)寫入另一組要發(fā)送的數(shù)據(jù),轉到2),否則程序結束。
2.2 上位機應用程序設計
本系統(tǒng)的上位機應用程序界面采用MFC編寫[7-8],使用了 Visual C++6.0環(huán)境下編寫的 PC機與 USB總線芯片CH372V通信的Windows應用程序。為滿足系統(tǒng)設計要求,PC機端的應用程序流程圖如圖4所示。
CH372V芯片在計算機端提供了應用層接口,它由CH372動態(tài)鏈接庫DLL提供的面向功能應用的API實現(xiàn),所有API在調用后都返回操作狀態(tài),但未必應答數(shù)據(jù)。CH372的動態(tài)鏈接庫提供的API包括設備管理API、數(shù)據(jù)傳輸API以及中斷處理API。
圖4 上位機程序流程圖Fig.4 The flow of host computer
設備管理API包括:
1)打開與關閉設備:CH375OpenDevice,CH375 Close Device;
2)獲取USB設備配置的描述符:CH375GetDeviceDescr,CH375GetConfigDescr;
3)復位USB的設備:CH375ResetDevice;
數(shù)據(jù)傳輸API包括:
1)讀取數(shù)據(jù)模塊:CH375ReadData;
2)寫出數(shù)據(jù)模塊:CH375WriteData;
中斷處理API包括:
1)讀取中斷數(shù)據(jù)程序:CH375ReadInter;
2)設定中斷服務:CH375SetIntRoutine;
圖5 PC機應用程序界面Fig.5 GUI of application
PC機端的應用程序界面如圖5所示。PC機端的應用程序用于接收用戶輸入的指令,并通過USB傳送指令至硬件系統(tǒng);通過PESQ給出客觀語音評價的分數(shù)再通過USB傳送給上位PC機,在應用程序中以跳點的形式表現(xiàn),感覺比較直觀。模擬測試結果顯示方式如圖6所示。
圖6 模擬測試結果Fig.6 The simulation of test results
設計結果表明,所設計的系統(tǒng)能實現(xiàn)對TMS320VC33與CH372V接口的連接與控制,實現(xiàn)人機交互。
本文對CH372V作了簡要介紹,設計了TMS320VC33與CH372V的接口電路,實現(xiàn)了TMS320VC33與主機通信的應用程序??梢钥闯觯肅H372V實現(xiàn)USB通信,開發(fā)簡單,成本較低,能夠滿足大部分系統(tǒng)對USB通信的要求,具有廣泛的應用前景。
[1]王念旭.DSP基礎與應用系統(tǒng)設計[M].北京:北京航空航天大學出版社,2001.
[2]胡曉軍,張愛成.USB接口開發(fā)技術[M].西安:西安電子科技大學出版社,2005.
[3]南京沁恒電子有限公司.USB總線接口芯片CH372V中文手冊.[EB/OL].[2012-05-20].http://mag.ieechina.com/ Upload/Park/7d6f2961-f50d-46ce-a8aa-ce5c5e58d71b.pdf.
[4]Texas Instrument products.TMS320VC33 Digital Signal Processor Datasheet[EB/OL].[2012-10-07].http://www.ti. com.cn/cn/lit/ds/sym link/tms320vc33.pdf.
[5]黨瑞榮,謝雁,李利品.TMS320C3x DSP原理與應用[M].西安:陜西科學技術出版社,2006.
[6]Texas Instrument products.TMS320C3x/C4x Optimizing C Compiler User's Guide[EB/OL].[2012-11-16].http://www.ti. com.cn/cn/lit/ug/spru034h/spru034h.pdf.
[7]David,J.Kruglinski著.潘愛民,王國印譯.Visual C++技術內幕[M].4版.北京:清華大學出版社,1999.
[8]仁哲等.MFC Windows應用程序設計[M].北京:清華大學出版社,2004.
Design of communication interface between host and TMS320VC33 based on USB
HOU Dai-wen,SUN Tao,DENG Lei-ming
(Unit 91439,PLA,Dalian 116041,China)
USB is one of the most popular interfaces connecting peripheral devices to the host system.In this paper,the design of communication between TMS320VC33 and host is introduced based on CH372V.Not only the design of TMS320VC33-ch372V interface circuit is introduced in detail,but also the communication mode of the CH372V is mentioned.The communication program in up-data and down-data are also expounded.API function is explained in system as well.The application of communication is developed with MFC.The practice proves that this design project reduces the cost of hardware,simplifies the software development and is full of common use.
universal serial bus;CH372V;TMS320VC33;application
TN91
A
1674-6236(2015)07-0166-05
2014-06-14 稿件編號:201406103
國家自然科學基金項目資助(61303192)
侯代文(1972—),男,山東嘉祥人,博士,高級工程師。研究方向:單片機開發(fā)、陣列信號處理、跟蹤與定位技術等。