<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

——
作者:武漢理工大學(xué)信息工程學(xué)院 王騏 何嘉斌 時(shí)間:2005-12-02 來(lái)源: 收藏
前言

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


芯片介紹

USB接口芯片CH371 

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

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

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



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

鍵盤(pán)控制和數碼管驅動(dòng)芯片CH451

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

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



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

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

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

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

演示板硬件電路設計

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


圖3中,元器件說(shuō)明如下:

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

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

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

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



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

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

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

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

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


單片機控制程序

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

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



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

PC端應用程序設計

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

(1)主界面設計

演示主界面如圖5所示。



圖5 主界面 

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

界面設計如圖6所示。



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

功能說(shuō)明:進(jìn)入該演示程序后,PC會(huì )通過(guò)命令使數碼管上顯示當前時(shí)間,但時(shí)鐘不走動(dòng)。

“啟動(dòng)時(shí)鐘”:?jiǎn)螕粼撁畎粹o時(shí)鐘開(kāi)始走動(dòng)。

“校準時(shí)鐘”:?jiǎn)螕粼撁畎粹o后,文本框下的六個(gè)命令按鈕會(huì )被激活,它們分別對應六個(gè)數碼管。單擊修改時(shí)間對應的按鈕,會(huì )彈出對話(huà)框,要求輸入要修改的時(shí)間。 

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

“返回主窗體”:?jiǎn)螕粼撁畎粹o回到窗體一,以便繼續進(jìn)行其他程序的演示。 

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



圖7 鍵盤(pán)控制和數碼管驅動(dòng)芯片CH451各項功能演示界面 

功能說(shuō)明:當進(jìn)入該演示程序后,會(huì )自動(dòng)在數碼管上加在字數據“HELPHELP”。

“右(左)移位”:?jiǎn)螕裘畎粹o,數碼管上的字會(huì )向右(左)移動(dòng),左(右)邊移出的空位會(huì )加0。

“右(左)循環(huán)移位”:?jiǎn)螕裘畎粹o會(huì )使數碼管的數據分別向右(左)循環(huán)移位。

“加載字數據”:?jiǎn)螕粼撁畎粹o后,會(huì )彈出對話(huà)框提示“要加載字數據請單擊相應的文本框”。此時(shí)文本框會(huì )被激活,當單擊文本框后,會(huì )再次彈出對話(huà)框,要求輸入要加載的字數據。輸入完并確定后,數碼管上就會(huì )顯示加載的字數據了。 “閃爍”:?jiǎn)螕粼撁畎粹o后,會(huì )彈出對話(huà)框提示“要是數碼管閃爍請單擊對應的單選按鈕”,同時(shí)8個(gè)單選按鈕會(huì )被激活。每個(gè)單選按鈕對應一個(gè)數碼管,選中相應的單選按鈕后,對應的數碼管就會(huì )閃爍。當再選中另外的單選按鈕后,前一個(gè)就會(huì )停止閃爍。

“亮度控制按鈕”:?jiǎn)螕粼撁畎粹o后,彈出對話(huà)框提示“請單擊相應的單選按鈕進(jìn)行亮度的選擇”,同時(shí),十六個(gè)單選按鈕會(huì )被激活,它們對應控制數碼管的十六級亮度顯示,當選中第一個(gè)按鈕時(shí),數碼管會(huì )變的最暗,當依次選中其他的按鈕時(shí),亮度會(huì )依次遞增。

“DEFAULT”:?jiǎn)螕粼撁畎粹o后,會(huì )回到默認狀態(tài)。即:字數據顯示為“HELPHELP”;閃爍的數碼管會(huì )停止閃爍;數碼管的亮度會(huì )變?yōu)?6級亮度。

“熄滅數碼管”:?jiǎn)螕粼撁畎粹o后,數碼管會(huì )熄滅。

“退出”:?jiǎn)螕粼撁畎粹o后,會(huì )返回主窗體。


批量數據傳輸演示程序

界面設計如圖8所示。



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

功能說(shuō)明:

“發(fā)送數據”:?jiǎn)螕粼撁畎粹o后,會(huì )彈出對話(huà)框,首先要求輸入要發(fā)送的數據的個(gè)數,然后會(huì )彈出對話(huà)框要求輸入要發(fā)送的數據。同時(shí)發(fā)送的數據會(huì )在文本框中顯示,以便和接收到的數據進(jìn)行比較,看單片機是否做出了正確的應答。

“接收數據”:?jiǎn)螕粼撁畎粹o后,PC會(huì )首先發(fā)送一個(gè)命令給單片機,要求單片機對剛才發(fā)送的命令做出響應。單片機接收到此命令后會(huì )對接收到的數據按位取反,然后返回給計算機。當計算機接收到返回的數據后會(huì )在文本框中顯示出來(lái)。

“退出”:?jiǎn)螕粼摪粹o后會(huì )返回主窗體。


程序調試的體會(huì )

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

數字通信相關(guān)文章:數字通信原理


通信相關(guān)文章:通信原理


晶振相關(guān)文章:晶振原理


關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>