新聞中心

EEPW首頁 > 模擬技術 > 設計應用 > 基于USB接口的數(shù)據通信演示板的軟硬件實現(xiàn)方案

基于USB接口的數(shù)據通信演示板的軟硬件實現(xiàn)方案

——
作者:武漢理工大學信息工程學院 王騏 何嘉斌 時間:2005-12-02 來源: 收藏
前言

在開發(fā)USB設備時最難的就是固件和驅動程序的開發(fā),要想成功的開發(fā)這兩部分必須完全熟悉USB協(xié)議,而這至少需要五到六個月的時間。南京沁恒公司的CH371芯片是一塊屏蔽了USB協(xié)議的接口芯片,該芯片固化了設備驅動程序和單片機程序中的協(xié)議處理部分,因此不需要去了解復雜的設備驅動程序和USB協(xié)議,大大減少了開發(fā)周期,也降低了開發(fā)難度。本文介紹的演示板就是基于該公司的CH371和CH451芯片的一個簡單USB外設,通過這塊演示板,不僅可以了解基于USB接口的基本結構,而且還可以熟悉基于這種接口的PC和單片機通信的單片機控制程序和計算機應用程序的編寫。 


芯片介紹

USB接口芯片CH371 

CH371是一個USB 總線的通用接口芯片。在本地端,CH371 具有8位數(shù)據總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機、DSP、MCU 等控制器的系統(tǒng)總線上;在計算機系統(tǒng)中,CH371 的配套軟件提供了簡潔易用的操作接口,與本地端的單片機通訊就如同讀寫硬盤中的文件。CH371 屏蔽了USB 通訊中的所有協(xié)議,在計算機應用層與本地端控制器之間提供端對端的連接。基于CH371,不需要了解任何USB 協(xié)議或者固件程序,甚至驅動程序,就可以輕松地將并口、串口的產品升級到USB 接口。

使用時,在本地端CH371具有8位數(shù)據總線和讀、寫、片選控制線以及中斷輸出,就像操作一般外設芯片一樣方便地掛接到DSP、MCU等控制器的系統(tǒng)總線上;在計算機端,CH371的配套軟件包括通用驅動程序以及應用軟件包,提供了簡潔易用的操作接口。 

根據不同的工作方式,芯片的接口類型可以有以下幾種:被動并行接口、I2C主接口、主控方式接口。按照芯片特點,CH371芯片通過被動并行接口與本地端控制器連接,通過USB接口與計算機連接,如圖1所示。



圖1 單片機、CH371芯片以及PC連接示意圖 

鍵盤控制和數(shù)碼管驅動芯片CH451

CH451 是一個多功能外圍芯片,通過可以級聯(lián)的4 線串行接口與單片機、DSP、微處理器等控制器交換數(shù)據。CH451 包含三個功能:數(shù)碼管顯示驅動、鍵盤掃描控制、 P 監(jiān)控,三個功能之間相互獨立,控制器可以通過操作命令分別啟用、關閉、設定CH451 的任何一個功能。CH451 的串行接口是由硬件實現(xiàn)的,控制器可以頻繁地通過串行接口進行高速操作。CH451主要功能包括動態(tài)掃描功能和鍵盤掃描功能。

在計算機應用層,通過應用程序來演示CH451的各種功能。應用程序把控制命令通過CH371傳送給單片機,單片機接收到命令后再來控制CH451。CH451通過四線串行接口與單片機連接,如圖2所示。



圖2 單片機、CH451芯片和鍵盤、數(shù)碼管的連接示意圖 

USB設備配置和數(shù)據傳輸過程描述

USB即插即用的自動配置過程是由CH371 芯片和驅動程序共同完成的。將帶有CH371芯片的USB產品插入到計算機的USB插槽中,當PC機檢測到USB 插入事件,操作系統(tǒng)有選擇地復位USB 產品,并讀取USB 產品的設備描述符,在CH371 芯片返回設備描述符后,操作系統(tǒng)根據設備描述符加載CH371 驅動程序;CH371 驅動程序讀取CH371 芯片的設備描述符和配置描述符;在CH371 芯片返回設備描述符和配置描述符之后,CH371 驅動程序根據配置描述符請求操作系統(tǒng)對CH371 芯片進行配置。在完成配置后,PC機給CH371 芯片分配一個USB 設備地址,并指定一個USB 配置。以上是CH371 芯片的自動配置過程,在完成自動配置后,CH371 驅動程序向應用層開放操作接口。

數(shù)據傳輸過程是USB 產品的應用層軟件與USB 產品的控制器之間的數(shù)據進行傳輸?shù)倪^程。首先計算機應用層將數(shù)據請求發(fā)送給CH371 芯片,CH371 芯片以中斷方式通知本地端控制器,并使之進入中斷程序,查看傳輸狀態(tài)信息寄存器中的數(shù)據傳輸方向標志位,如果是上傳,則將上傳數(shù)據長度寄存器置為15,然后退出中斷程序;如果是下傳,則查看下傳數(shù)據長度寄存器,從數(shù)據下傳緩沖區(qū)中讀取數(shù)據塊,并分析接收到的數(shù)據塊,將應答數(shù)據和應答數(shù)據的長度分別寫入數(shù)據上傳緩沖區(qū)和上傳數(shù)據長度寄存器中,然后退出中斷程序。在退出中斷程序之后, CH371 芯片將應答數(shù)據返回給計算機,此時計算機應用層將會接收到應答數(shù)據。

演示板硬件電路設計

本演示板采用USB 總線接口芯片CH371、數(shù)碼管驅動和鍵盤控制芯片CH451和通用的MCS51 系列單片機構成,用于演示CH371 的USB 數(shù)據通訊功能,CH451 的數(shù)碼管驅動/鍵盤掃描功能,以及CH371 與單片機的連接,CH451 與單片機的連接。演示板通過USB 接口與PC 機進行通訊,并由PC 機控制它的執(zhí)行,演示板電路設計如圖所3示。


圖3中,元器件說明如下:

晶振X1 為標準的12MHz,晶振的金屬外殼應該接地,以減少來自外界的干擾;振蕩電容C1、C2 的容量為20pF(可以在5pF 至30pF 之間選擇);另外,建議在CH371 的XI引腳(第14 腳)前串接一個阻值為1K 的電阻(可以在200 至3K 之間選擇),即X1與C2 相連接后通過1K 電阻連接到CH371 的XI 引腳。

阻抗匹配電阻R1、R2 為100 (可以在80 至150 之間選擇),如果CH371 的工作電壓略低于5V ,則R1、R2 的阻值可以適當減少。
U4(單片機89C51)用于測試CH371 的USB 數(shù)據通信功能,本例中CH371 工作于復用地址方式,U4 的ALE 與CH371 的ALE 相連接,CH371 的INT#與U4 的INT0 相連接,U4通過CH371 的被動并行接口與CH371 進行數(shù)據交換。

U3(EEPROM 器件24C02)作為I2C 接口的目標設備,用于測試CH371 的I2C 接口功能,PC 機的應用層程序可以直接對該器件進行讀寫測試。

L1(發(fā)光二極管LED)用于測試CH371 的主控方式的功能,即使CH371 不連接任何單片機(例如在本例中取出單片機U4),PC 機的應用層程序仍然可以直接控制CH371 的A3引腳輸出低電平或者高電平,從而點亮LED 或者熄滅LED。



圖3 CH371和CH451演示板硬件電路圖 

跳線J1 用于測試CH371的片選線CS#的兩種用法,在本例中單片機沒有其它外圍器件,所以CS#引腳可以懸空,作為默認選擇,如果單片機還有其它并行接口的外圍器件,則CS#應該作為片選控制線,例如由單片機的地址線A15 驅動,從而將CH371 定位于單片機U4 的0000H-7FFFH 地址空間。

跳線J3 用于測試CH371 的USB 帶電下線功能,當單片機U4 的P1.4 引腳輸出高電平時,可以控制CH371 模擬從USB 總線上斷開,當單片機U4 的P1.4 引腳輸出低電平時,可以控制CH371 模擬連接到USB 總線。
跳線J2 用于選擇單片機U4 上電復位信號的來源,CH371 和CH451 都具有上電復位和看門狗功能,由J2 可以分別測試兩個芯片的上電復位功能。電阻R4 用于調節(jié)CH451的上電復位門限,阻值為200K 時上電復位門限約為4V,測試時請注意防止干擾。

電阻R5 為數(shù)碼管的限流電阻,阻值可以在60 至500 之間選擇,阻值為200 時限定段電流為13mA 左右;電阻R6 為按鍵掃描的限流電阻,阻值可以在1K 至10K 之間選擇,本例中為2K ,如果不使用CH451 的按鍵掃描功能,則電阻R6 可以省去。

CH451的SEG0~SEG7引腳和DIG0~ DIG7引腳相互配合,可以最大擴展8個共陰數(shù)碼管和64個輕觸按鈕。這部分擴展電路比較容易,由于版面所限,以上電路圖省去了這部分。 程序的軟件設計一般USB設備的開發(fā),USB接口程序設計包括三部分:單片機程序開發(fā),USB設備驅動程序開發(fā),主機應用程序開發(fā)。由于CH371接口芯片固化了設備驅動程序和單片機程序中的協(xié)議處理部分,因此軟件設計僅僅包括兩部分,即單片機中的數(shù)據交換部分和主機的應用程序。


單片機控制程序

應用程序和單片機控制程序之間有這樣的協(xié)議約定:應用程序發(fā)送給單片機的數(shù)據中的第一個字節(jié)是命令,單片機接收到PC發(fā)送過來的數(shù)據后,先對第一個字節(jié)做出響應,根據命令的不同進入不同的子程序。例如:定義DEMOTESTDATA EQU 90H,這表示90H這個十六進制數(shù)據代表測試命令,當單片機接收到來自PC的數(shù)據的第一個字節(jié)是90H時,就會進入將PC 發(fā)來的數(shù)據取反的子程序,并將取反后的數(shù)據返回。

在整個方案中單片機控制程序的作用主要有:(1)當評估板上的按鍵按下時,CH451通過中斷通知單片機,然后單片機從CH451的緩沖區(qū)中讀取鍵碼值,單片機再通過中斷通知PC機,PC進入相應的中斷程序進行處理;2)當PC發(fā)送命令時,CH371通過中斷通知單片機,單片機對該命令做出響應,或控制CH451,或返回應答數(shù)據,流程圖如圖4所示。



圖4 單片機控制程序流程圖 

PC端應用程序設計

為了檢驗硬件設計和單片機控制程序編寫的可行性,需要在PC端用VB編寫一個測試程序,用以測試硬件電路在數(shù)據通信方面是否暢通。程序用到了4個窗體,2個模塊。其中兩個模塊主要是定義一些全局變量、函數(shù),以及API函數(shù)的聲明(因為這些函數(shù)只有在聲明以后才能調用),設計4個窗體是為了更好地完成演示板的各項功能。

(1)主界面設計

演示主界面如圖5所示。



圖5 主界面 

功能說明:在電路板上有三個按鍵,對應這三個按鍵有三個不同的演示程序。根據該界面的提示,每按下一個按鍵就進入相應的演示程序,而演示完一個程序后可以退回該界面進行另外演示程序的選擇。 2)同步可調實時時鐘演示程序

界面設計如圖6所示。



圖6 與真實時間同步的可調時鐘演示界面 

功能說明:進入該演示程序后,PC會通過命令使數(shù)碼管上顯示當前時間,但時鐘不走動。

“啟動時鐘”:單擊該命令按鈕時鐘開始走動。

“校準時鐘”:單擊該命令按鈕后,文本框下的六個命令按鈕會被激活,它們分別對應六個數(shù)碼管。單擊修改時間對應的按鈕,會彈出對話框,要求輸入要修改的時間。 

“校時確定”:當時間校準好以后,單擊命令按鈕,這時會彈出對話框提示是否已經校準時間,否則可以繼續(xù)修改。若確定以后,時鐘又可以正常走動。 

“返回主窗體”:單擊該命令按鈕回到窗體一,以便繼續(xù)進行其他程序的演示。 

(3)CH451各項功能演示程序 
界面設計如圖7所示。



圖7 鍵盤控制和數(shù)碼管驅動芯片CH451各項功能演示界面 

功能說明:當進入該演示程序后,會自動在數(shù)碼管上加在字數(shù)據“HELPHELP”。

“右(左)移位”:單擊命令按鈕,數(shù)碼管上的字會向右(左)移動,左(右)邊移出的空位會加0。

“右(左)循環(huán)移位”:單擊命令按鈕會使數(shù)碼管的數(shù)據分別向右(左)循環(huán)移位。

“加載字數(shù)據”:單擊該命令按鈕后,會彈出對話框提示“要加載字數(shù)據請單擊相應的文本框”。此時文本框會被激活,當單擊文本框后,會再次彈出對話框,要求輸入要加載的字數(shù)據。輸入完并確定后,數(shù)碼管上就會顯示加載的字數(shù)據了。 “閃爍”:單擊該命令按鈕后,會彈出對話框提示“要是數(shù)碼管閃爍請單擊對應的單選按鈕”,同時8個單選按鈕會被激活。每個單選按鈕對應一個數(shù)碼管,選中相應的單選按鈕后,對應的數(shù)碼管就會閃爍。當再選中另外的單選按鈕后,前一個就會停止閃爍。

“亮度控制按鈕”:單擊該命令按鈕后,彈出對話框提示“請單擊相應的單選按鈕進行亮度的選擇”,同時,十六個單選按鈕會被激活,它們對應控制數(shù)碼管的十六級亮度顯示,當選中第一個按鈕時,數(shù)碼管會變的最暗,當依次選中其他的按鈕時,亮度會依次遞增。

“DEFAULT”:單擊該命令按鈕后,會回到默認狀態(tài)。即:字數(shù)據顯示為“HELPHELP”;閃爍的數(shù)碼管會停止閃爍;數(shù)碼管的亮度會變?yōu)?6級亮度。

“熄滅數(shù)碼管”:單擊該命令按鈕后,數(shù)碼管會熄滅。

“退出”:單擊該命令按鈕后,會返回主窗體。


批量數(shù)據傳輸演示程序

界面設計如圖8所示。



圖8 PC和AT89C51之間通過USB接口芯片CH371的數(shù)據塊傳輸界面 

功能說明:

“發(fā)送數(shù)據”:單擊該命令按鈕后,會彈出對話框,首先要求輸入要發(fā)送的數(shù)據的個數(shù),然后會彈出對話框要求輸入要發(fā)送的數(shù)據。同時發(fā)送的數(shù)據會在文本框中顯示,以便和接收到的數(shù)據進行比較,看單片機是否做出了正確的應答。

“接收數(shù)據”:單擊該命令按鈕后,PC會首先發(fā)送一個命令給單片機,要求單片機對剛才發(fā)送的命令做出響應。單片機接收到此命令后會對接收到的數(shù)據按位取反,然后返回給計算機。當計算機接收到返回的數(shù)據后會在文本框中顯示出來。

“退出”:單擊該按鈕后會返回主窗體。


程序調試的體會

該演示程序最關鍵的就是要使得PC和單片機之間能夠通過CH371接口芯片進行通信,這必須用到該公司提供的API函數(shù)。調試時需要事先理解這些函數(shù)的作用以及各個參數(shù)的具體意義。PC的命令和數(shù)據能夠很容易就傳給單片機,但單片機得到的按鍵值卻無法傳到PC機。后來筆者在查閱了一本關于在Visual Basic中調用API函數(shù)的書后終于找到了問題的原因所在,通過修改一下API函數(shù)的中的參數(shù),終于使得PC和單片機之間能夠進行雙向的通信,這一步成功后其余的調試就比較容易進行了。

數(shù)字通信相關文章:數(shù)字通信原理


通信相關文章:通信原理


晶振相關文章:晶振原理


關鍵詞:

評論


相關推薦

技術專區(qū)

關閉