![基于USB接口的單片機與PC機通信-論文_第1頁](http://file4.renrendoc.com/view/574427b64f0892f0892d88688971cd13/574427b64f0892f0892d88688971cd131.gif)
![基于USB接口的單片機與PC機通信-論文_第2頁](http://file4.renrendoc.com/view/574427b64f0892f0892d88688971cd13/574427b64f0892f0892d88688971cd132.gif)
![基于USB接口的單片機與PC機通信-論文_第3頁](http://file4.renrendoc.com/view/574427b64f0892f0892d88688971cd13/574427b64f0892f0892d88688971cd133.gif)
![基于USB接口的單片機與PC機通信-論文_第4頁](http://file4.renrendoc.com/view/574427b64f0892f0892d88688971cd13/574427b64f0892f0892d88688971cd134.gif)
![基于USB接口的單片機與PC機通信-論文_第5頁](http://file4.renrendoc.com/view/574427b64f0892f0892d88688971cd13/574427b64f0892f0892d88688971cd135.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
基于USB接口的單片機與PC機通信摘要:安裝USB設(shè)備不需要用戶自己設(shè)置硬件與軟件的選項,USB接口的傳輸速度要比計算機傳統(tǒng)的串行口和并口快的多,所以USB設(shè)備已經(jīng)廣泛應(yīng)用。由于協(xié)議的復(fù)雜性,在系統(tǒng)中實現(xiàn)USB主機功能的實例還不是很多。因此本文沒有從復(fù)雜的USB總線協(xié)議入手,而是選擇了南京沁恒公司出產(chǎn)的USB接口芯片CH375。其具有內(nèi)置固件模式和可編程的2311外部固件模式,可以根據(jù)需要任意選擇工作模式。關(guān)鍵詞:單片機;CH375;USB;協(xié)議TheDesignofthecommunicationbetweenMCUandPCwhichisbasedonUSBinterfaceAbstract:USBdevicedoesnotrequireuserstoinstalltheirownsetofhardwareandsoftwareoptions,andcomputertransmissionspeedfasterthanthetraditionalserialandparallelport,soUSBdeviceshavebeenwidelyused.Becauseofthecomplexityoftheagreement,inthesystemofUSBhostfunctionrealizationexampleisnotalot.ThereforethisarticledoesnotstartingwiththecomplexUSBagreement,butchosetheUSBinterfacechipCH375whichproducedbyNanjingQinHengcompany,theirmodelhasabuilt-infirmwareandfirmwareprogrammableof2311externalmodel,wecanchoosethemodeofoperationwithaneedforarbitrary.Keywords:SingleChipMicrocontroller;CH375;USB;Agreement
目錄TOC\o"1-4"\h\u15381前言 1144221.1題目的來源與開發(fā)意義 1184141.2系統(tǒng)功能概述 1193562系統(tǒng)硬件設(shè)計 PAGEREF_Toc193562303722.1方案論證 2110142.2系統(tǒng)硬件總體設(shè)計概述 298272.3系統(tǒng)功能概述 3327542.4系統(tǒng)各模塊的設(shè)計 PAGEREF_Toc32754442912.4.1單片機控制系統(tǒng) 4175372.4.2USB接口模塊 6314003系統(tǒng)軟件設(shè)計 1162123.1系統(tǒng)軟件總體設(shè)計思想 PAGEREF_Toc62121188733.2各功能模塊軟件程序設(shè)計 11121574系統(tǒng)調(diào)試 16173834.1硬件電路調(diào)試 16228224.2各功能模塊軟件調(diào)試 PAGEREF_Toc2282216226325結(jié)論 1814931參考文獻 1924430致謝 20 1前言1.1題目的來源與開發(fā)意義USB的低功耗,可靠性,價位低等優(yōu)點,在人們?nèi)粘I钪袘?yīng)用越來越廣泛,各種各樣的USB產(chǎn)品應(yīng)運而升[1],并且隨著技術(shù)的發(fā)展,USB的版本以發(fā)展到了3.0,傳輸速度也更快,更強,更穩(wěn)定。而單片機以其良好的普及性,易用性,穩(wěn)定的控制性不斷的出現(xiàn)在我們生活中的各個角落,并且一發(fā)不可收拾[2]。電子應(yīng)用中數(shù)據(jù)傳輸占了很大一部分。我把這幾項當(dāng)前技術(shù)融合在一起進行開發(fā),實現(xiàn)可攜帶的支持計算機熱插拔的單片機與PC機之間的數(shù)據(jù)傳輸。1.2系統(tǒng)功能概述單片機與計算機之間的通信功能實現(xiàn),這里應(yīng)用了由南京沁恒公司生產(chǎn)的CH375芯片作為單片機與計算機USB接口芯片[3]。使用10位的AD串行AD芯片TLC1549進行電壓采集,使用電位器來模擬傳感器。本次設(shè)計主要利用STC89C52RC單片機作為主要核心模塊,利用C51語言行控制,以C語言作為整合的開發(fā)環(huán)境,可大大縮短軟件設(shè)計時間。上位機采用的是VC++在VisualStudio2010上編寫的一個簡單的控制臺程序,USB驅(qū)動采用了沁恒公司的通用CH375驅(qū)動軟件。通過鍵盤給上位機(PC)輸入不同的命令可以控制下位機(單片機)的三個不同顏色的LED。同時單片機向PC發(fā)送采集到的電壓值。這里支持計算機熱插拔,挾帶方便,設(shè)備占用空間小,低功耗是本設(shè)計的創(chuàng)新之處,而且相應(yīng)的CH375接口模塊成了印刷式電路板,為以后學(xué)習(xí)和開發(fā)計算機與單片機通過U口傳輸數(shù)據(jù)的同學(xué)提供了便捷的硬件環(huán)境。2系統(tǒng)硬件設(shè)計2.1方案論證方案一:有關(guān)USB控制芯片很多但主要有兩個來源,一個是CypressSemiconductor,另一個是ScanLogic。我們可以選擇市面比較通用的CypresssenCoRe控制器芯片CY4C63743,此芯片電路設(shè)計起來比較容易。但此芯片需要固件支持。En指令相對簡單,可以使用匯編語言編譯器來實現(xiàn),但固件編程相對繁瑣,而且CY4C63743結(jié)和了單片機與USB數(shù)據(jù)傳輸?shù)墓δ芟鄬﹂_發(fā)需要了解內(nèi)部的時續(xù)與中斷控制,類似于嵌入了USB功能的單片機。方案二:用南京沁恒公司的CH375芯片,需要外接微控制器,電路稍微麻煩一點,但是我的設(shè)計只需要用到USB設(shè)備模式一塊,而我們可以讓CH375工作在內(nèi)置固件下,我們減輕了單片機方面的固件編寫負(fù)擔(dān),只需按要求讓單片機將要發(fā)送的數(shù)據(jù)傳給CH375即可,CH375自行與PC進行數(shù)據(jù)交換,這同樣節(jié)省了對復(fù)雜協(xié)議的學(xué)習(xí)時間。而單片機更可以選擇STC系列的51單片機,這種單片機可以通過串口在線編程,方便開發(fā)。由此可見方案二更有效。2.2系統(tǒng)硬件總體設(shè)計概述硬件設(shè)計相應(yīng)的分兩個模塊,一方面是控制模塊由宏晶生產(chǎn)的STC系列的51單片機為核心的單片機做控制;另一方面由CH375做為USB的通信接口芯片的接口模塊??刂颇K中主要用到了STC89C52單片機,其中的P0口與CH375的數(shù)據(jù)并口相連,所以P0口必須接10K的上拉電阻,在控制模塊上有一個與通信接口模塊相連的插座,共16個引腳其具體對應(yīng)了控制模塊與通信接口模塊之間的GND,相應(yīng)的復(fù)位引腳,還有與CH375并口模式相對應(yīng)的控制,數(shù)據(jù)引腳A0,WR,RD,CS,INT,D0-D7。TLC1549與單片機通信是串行模式,所以只需占用單片機的三個IO口。使用LED來顯示PC上的命令信息。通信接口模塊分兩個部分一個是與PC機相連的CH375部分,一個是單片機控制部分。為了方便開發(fā),單片機單獨供電,而沒有與USB模塊共用PC上的USB電源。為了保護AD芯片,設(shè)計了AD輸入保護。電路在防止干擾方面,在每個芯片的電源端添加了去耦電容。如圖2.1為硬件實物圖圖2.1硬件實物2.3系統(tǒng)功能概述如圖2.2為系統(tǒng)框圖AD模塊PC機(上位機端)USB接口通信模塊單片機控制模塊(下位機端)AD模塊PC機(上位機端)USB接口通信模塊單片機控制模塊(下位機端)圖2.2系統(tǒng)框圖該設(shè)計實現(xiàn)單片機端通過AD模塊采集數(shù)據(jù)經(jīng)USB接口模塊發(fā)送到PC機的界面上顯示,同時PC機端也可通過按鍵控制單片機端的LED亮滅,實現(xiàn)雙向通信。具體工作流程:首先進行各個模塊初始化,然后在PC機端發(fā)送一個數(shù)據(jù)包,長度為64,單片機端接收到這個數(shù)據(jù)包,根據(jù)數(shù)據(jù)包的內(nèi)容來控制LED燈的暗滅,接著AD模塊采集數(shù)據(jù),這里的數(shù)據(jù)是電壓值,可傳送2.50到5.00伏的電壓值,單片機端接收到AD模塊采集的數(shù)據(jù),再通過USB通信接口模塊傳輸?shù)诫娔X上顯示出來。2.4系統(tǒng)各模塊的設(shè)計2.4.1單片機控制系統(tǒng)如圖2.3為單片機控制模塊圖2.3單片機控制模塊STC89C52RC單片機作為硬件的核心處理器,它的工作電路分為三部分:晶振電路、復(fù)位電路、電源電路。晶振為CPU提供工作需要的高頻率、高精確的時鐘;復(fù)位電路在芯片在上電復(fù)位或者手動復(fù)位時引導(dǎo)程序從地址00H開始執(zhí)行;而電源電路為芯片提供穩(wěn)定且噪聲低的直流電源。1控制模塊原理由圖2.2的系統(tǒng)總框圖可以看出,單片機直接控制CH375,向其發(fā)送數(shù)據(jù)或者讀取數(shù)據(jù)。單片機與CH375采取系統(tǒng)總線接口,數(shù)據(jù)線為P0口,地址線為P0口(低位)和P2口(高位)。在電路中P0口連接CH375的8位并行數(shù)據(jù)接口,P2口只接了P2.0和P2.6,所以在發(fā)送地址的時候只有這兩位有效,其他的地址線全部無效(這樣接主要是為了簡化電路)。通信前需要對USB初始化,具體過程如下:單片機通過上面的數(shù)據(jù)總線,先CMD_CHECK_EXIST這個測試命令,然后發(fā)送0x55再讀取數(shù)據(jù),若讀取的數(shù)據(jù)是~0x55則說明芯片正常工作,否則將對CH375進行多次重復(fù)發(fā)命令(80次),執(zhí)行硬件復(fù)位。確定芯片正常工作后就對芯片設(shè)置USB工作模式,這里的02H表示啟用的設(shè)備方式并且使用內(nèi)置固件模式。設(shè)置模式成功后,單片機將在10到20us內(nèi)讀取到CMD_RET_SUCCESS信號以確定CH375已經(jīng)就緒。最后,單片機進行外部中斷0的初始化,以保證CH375收到數(shù)據(jù)后能向單片機發(fā)送中斷信號。單片機的對CH375進行讀寫數(shù)據(jù)都是在外部中斷0的中斷服務(wù)程序里面執(zhí)行的。進入中斷后,首先關(guān)閉總中斷,防止在中斷重入。然后發(fā)送CMD_GET_STATUS命令來讀取中斷狀態(tài),然后分別對三種不同的中斷狀態(tài)進行處理。其中在USB_INT_EP2_OUT狀態(tài)下先讀取數(shù)據(jù)包,然后AD采集數(shù)據(jù)并發(fā)送數(shù)據(jù)包。最后重新開啟外部中斷0,退出中斷服務(wù),等待下一次中斷。P0口作為與CH375交流數(shù)據(jù),命令的通信并口,INT0作為中斷服務(wù)程序中斷接口其他端口如圖接,也可以選擇其他單片機端口。2高速串行AD芯片TLC1549TLC1549是美國德州儀器公司(以下簡稱TI)的一款高速串行的10位AD芯片。它采用簡單的S通信,只使占用單片機的三根IO口,如圖2.4圖2.4AD模塊從圖2.4可以看出,TLC1549工作電路非常簡單,而不像一般AD芯片需要接上配對的電阻、電容以及晶振才能保證穩(wěn)定的工作,只需接上電源和一個103的去耦電容即能工作。在此基礎(chǔ)上,本設(shè)計添加了AD輸入保護電路。保護電路是由兩個二極管構(gòu)成,如圖所示,在AD輸入電壓超出5V或者低于0V的時候,二極管導(dǎo)通,使電壓調(diào)整到正常范圍,這樣就保護了AD輸入,防止芯片因此損壞。2.4.2USB接口模塊CH375與USB連接及自身管腳連接具體如圖2.5所示。圖2.5USB接口模塊圖J2是一個USB接口,與電腦相連接,J1是一個雙排針左邊是通信的端口與單片機的P0口連接,通過這個排針可以和單片機的各個引腳相連。1USB的簡介USB是在1994年底由英特爾、康柏、IBM、Microsoft等多家公司聯(lián)合提出的。不過直到近期,它才得到廣泛地應(yīng)用。從1994年11月11日發(fā)表了USBV0.7版本以后,USB版本經(jīng)歷了多年的發(fā)展,到現(xiàn)在已經(jīng)發(fā)展為2.0版本,成為目前電腦中的標(biāo)準(zhǔn)擴展接口。USB是一個外部總線標(biāo)準(zhǔn),用于規(guī)范電腦與外部設(shè)備的連接和通訊。USB接口支持設(shè)備的即插即用和熱插拔功能。USB接口可用于連接多達127種外設(shè),如鼠標(biāo)、調(diào)制解調(diào)器和鍵盤等。USB自從1996年推出后,已成功替代串口和并口,并成為當(dāng)今個人電腦和大量智能設(shè)備的必配的接口之一。USB2.0有高速、全速和低速三種工作速度,高速是480Mbit/s,全速是12Mbit/s,低速是1.5Mbit/s。其中全速和低速是為兼容USB1.1而設(shè)計的,因此選購USB產(chǎn)品時不能只聽商家宣傳USB2.0,還要搞清楚是高速、全速還是低速設(shè)備。USB總線是一種單向總線,主控制器在PC機上,USB設(shè)備不能主動與PC機通信。2CH375芯片簡介CH375是一個USB總線的通用接口芯片,支持USB-HOST主機和DEVICE/SLAVE從機兩種工作模式。本設(shè)計使用的是從機模式與PC進修雙向通行。USB-DEVICE/SLAVE設(shè)備方式。在本地端,CH375具有8位數(shù)據(jù)總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機/DSP/MCU/MPU等控制器的系統(tǒng)總線上。CH375的USB設(shè)備方式與CH372芯片完全兼容,CH375包含了CH372的全部功能。CH375的USB主機方式支持常用的USB全速設(shè)備,外部單片機可以通過CH375按照相應(yīng)的USB協(xié)議與USB設(shè)備通訊。CH375還內(nèi)置了處理Mass-Storage海量存儲設(shè)備的專用通訊協(xié)議的固件,外部單片機可以直接以扇區(qū)為基本單位讀寫常用的USB存儲設(shè)備(包括USB硬盤/USB閃存盤/U盤)。CH375硬件連接大致框如圖2.6圖2.6系統(tǒng)總體框圖CH375芯片特點:1.低速和全速USB-HOST主機接口,兼容USBV2.0,外圍元器件只需要晶體和電容。2.低速和全速USB設(shè)備接口,完全兼容CH372芯片,支持動態(tài)切換主機與設(shè)備方式。3.主機端點輸入和輸出緩沖區(qū)各64字節(jié),支持12Mbps全速USB設(shè)備和1.5Mbps低速設(shè)備。4.支持USB設(shè)備的控制傳輸、批量傳輸、中斷傳輸。5.自動檢測USB設(shè)備的連接和斷開,提供設(shè)備連接和斷開的事件通知。6.內(nèi)置控制傳輸?shù)膮f(xié)議處理器,簡化常用的控制傳輸。7.內(nèi)置固件處理海量存儲設(shè)備的專用通訊協(xié)議,支持Bulk-Only傳輸協(xié)議和SCSI、UFI、RBC或等效命令集的USB存儲設(shè)備(包括USB硬盤/USB閃存盤/U盤/USB讀卡器)。8.通過U盤文件級子程序庫實現(xiàn)單片機讀寫USB存儲設(shè)備中的文件。9.并行接口包含8位數(shù)據(jù)總線,4線控制:讀選通、寫選通、片選輸入、中斷輸出。10.串行接口包含串行輸入、串行輸出、中斷輸出,支持通訊波特率動態(tài)調(diào)整。引腳如圖2.7圖2.7引腳圖引腳含義如表2.2表2.2引腳含義表引腳號引腳名稱類型引腳說明28VCC電源正電源輸入端,需要外接0.1uF電源退耦電容12-23GND電源公共接地端,需要連接USB總線的地線9V3電源在3.3V電源電壓時連接VCC輸入外部電源,在5V電源電壓時外接容量為0.01uF退耦電容13XI輸入晶體振蕩的輸入端,需要外接晶體及振蕩電容14XO輸出晶體振蕩的反相輸出端,需要外接晶體及振蕩電容10UD+雙向三態(tài)USB總線的D+數(shù)據(jù)線,內(nèi)置可控的上拉電阻11UD-雙向三態(tài)USB總線的D-數(shù)據(jù)線22~15D7~D0雙向三態(tài)8位雙向數(shù)據(jù)總線,內(nèi)置上拉電阻4RD#輸入讀選通輸入,低電平有效,內(nèi)置上拉電3WR#輸入寫選通輸入,低電平有效,內(nèi)置上拉電阻27CS#輸入片選控制輸入,低電平有效,內(nèi)置上拉電阻1INT#輸出在復(fù)位完成后為中斷請求輸出,低電平有效8A0輸入地址線輸入,區(qū)分命令口與數(shù)據(jù)口,內(nèi)置上拉電阻,當(dāng)A0=1時可以寫命令,當(dāng)A0=0時可以讀寫數(shù)據(jù)24ACT#輸出在內(nèi)置固件的USB設(shè)備方式下是USB設(shè)備配置完成狀態(tài)輸出,低電平有效。對于CH375A芯片,在USB主機方式下是USB設(shè)備連接狀態(tài)輸出,低電平有效5TXD輸出僅用于USB主機方式,設(shè)備方式只支持并口,在復(fù)位期間為輸入引腳,內(nèi)置上拉電阻,如果在復(fù)位期間輸入低電平那么使能并口,否則使能串口,復(fù)位完成后為串行數(shù)據(jù)輸出6RXD輸入串行數(shù)據(jù)輸入,內(nèi)置上拉電阻2RSTI輸入外部復(fù)位輸入,高電平有效,內(nèi)置下拉電阻25RST輸出電源上電復(fù)位和外部復(fù)位輸出,高電平有效26RST#輸出電源上電復(fù)位和外部復(fù)位輸出,低電平有效7NC.空腳空腳,必須懸空命令命令是CH375與單片機進行聯(lián)絡(luò)的核心,芯片內(nèi)部的USB通行協(xié)議都要通過命令來實現(xiàn),所以了解了CH375的命令就如同在8051中的C51語言,所以這部分很重要。代碼命令名稱輸入數(shù)據(jù)輸出數(shù)據(jù)命令用途06HRESET_ALL(等40mS)執(zhí)行硬件復(fù)位06HCHECK_EXIST任意數(shù)按位取反測試工作狀態(tài)15HSET_USB_MODE模式代碼(等20uS)操作狀態(tài)設(shè)置USB工作模式22HGET_STATUS中斷狀態(tài)獲取中斷狀態(tài)并取消請求02HSET_BAUDRATE分頻系數(shù)(等1mS)操作狀態(tài)設(shè)置串口通訊波特率分頻常數(shù)28HRD_USB_DATA數(shù)據(jù)長度從當(dāng)前USB中斷的端點緩沖區(qū)讀取數(shù)據(jù)塊數(shù)據(jù)流2BHWR_USB_DATA7數(shù)據(jù)長度向USB主機端點的輸出緩沖區(qū)寫入數(shù)據(jù)塊數(shù)據(jù)流各命令意義如表2.3表2.3命令含義表中斷原因如表2.4表2.4中斷狀態(tài)表中斷狀態(tài)字節(jié)名稱中斷狀態(tài)分析說明位7~位4位3~位2位1~位0(保留位)當(dāng)前事務(wù)當(dāng)前端點總是000000=OUT事務(wù)00=端點010=IN事務(wù)01=端點111=SETUP事務(wù)10=端點211=USB總線復(fù)位表2.5是中斷狀態(tài)的分析說明。在內(nèi)置固件模式的USB設(shè)備方式下,單片機只需要處理表中標(biāo)注為灰色的中斷狀態(tài),CH372內(nèi)部自動處理了其它中斷狀態(tài)。表2.5中斷狀態(tài)表中斷狀態(tài)值狀態(tài)名稱中斷原因分析說明01HUSB_INT_EP1_OUT輔助端點/端點1接收到數(shù)據(jù),OUT成功09HUSB_INT_EP1_IN中斷端點/端點1發(fā)送完數(shù)據(jù),IN成功02HUSB_INT_EP2_OUT批量端點/端點2接收到數(shù)據(jù),OUT成功0AHUSB_INT_EP2_IN批量端點/端點2發(fā)送完數(shù)據(jù),IN成功05HUSB_INT_USB_SUSPENDUSB總線掛起事件(如果已CHK_SUSPEND)06HUSB_INT_WAKE_UP從睡眠中被喚醒事件(如果已ENTER_SLEEP)功能說明CH375芯片可以工作于USB-HOST主機方式或者USB設(shè)備方式。CH375的USB設(shè)備方式與CH372芯片完全兼容,CH375的USB主機方式支持并行接口和串行接口,本設(shè)計使用的是并行接口。在USB主機方式下,CH375支持各種常用的USB全速設(shè)備,外部單片機需要編寫固件程序按照相應(yīng)的USB協(xié)議與USB設(shè)備通訊。但是對于USB存儲設(shè)備,CH375內(nèi)置了相關(guān)協(xié)議,通常情況下,外部單片機不需要編寫固件程序,就可以直接通訊。CH375工作在并口,設(shè)備模式下(畢業(yè)設(shè)計相應(yīng)的主要應(yīng)用就是這類模式,就稍詳細介紹這部分,而串口模式只工作在主機模式下不詳細介紹了)硬件連接CH375芯片占用兩個地址位,當(dāng)A0引腳為高電平時選擇命令端口,可以寫入新的命令,或者讀出中斷標(biāo)志;當(dāng)A0引腳為低電平時選擇數(shù)據(jù)端口,可以讀寫數(shù)據(jù)。下表為并口I/O操作的真值表(表中X代表不關(guān)心此位,Z代表CH372三態(tài)禁止)。表2.6并口I/O操作的真值表CS#WR#RD#A0D7-D0對CH372芯片的實際操作1XXXX/Z未選中CH372,不進行任何操作011XX/Z雖然選中但無操作,不進行任何操作001/X1輸入向CH372的命令端口寫入命令碼001/X0輸入向CH372的數(shù)據(jù)端口寫入數(shù)據(jù)0100輸出從CH372的數(shù)據(jù)端口讀出數(shù)據(jù)0101輸出從CH372B的命令端口讀取中斷標(biāo)志,位7等效于INT#引腳3上位機功能介紹設(shè)置發(fā)送的第一個字節(jié)為0X21為約定命令,若接收方收到的不是0X21,則為錯誤數(shù)據(jù),從新請求發(fā)送。在通信的過程中,采取了半雙工的通信模式。上位機、下位機輪流發(fā)送64個字節(jié)的數(shù)據(jù)。在本設(shè)計的實際使用中,只使用了3到5個字節(jié),其他的字節(jié)都為無效信息。在上位機上實現(xiàn)了顯示下位機采集的數(shù)據(jù)信息,同時,上位機發(fā)送控制信息,下位機使用了LED來模擬控制。上位機界面如圖2.8圖2.8上位機軟件界面3系統(tǒng)軟件設(shè)計3.1系統(tǒng)軟件總體設(shè)計思想本系統(tǒng)軟件設(shè)計分兩部分,下位機部分和上位機部分。下位機部分應(yīng)用的是C51語言。上位機界面圖形編輯用的是VC++。單片機負(fù)責(zé)通過CH375上傳數(shù)據(jù),PC通過VC++程序調(diào)用USB驅(qū)動程序,查詢動態(tài)鏈接庫的數(shù)據(jù)信息,上傳的數(shù)據(jù)存儲在動態(tài)鏈接庫中。這樣最終的上傳數(shù)據(jù)經(jīng)VC++顯示在PC上。3.2各功能模塊軟件程序設(shè)計下位機模塊軟件程序設(shè)計AD采集數(shù)據(jù)的流程圖3.1開始開始使能AD芯片等待芯片轉(zhuǎn)換完成SPI讀取10位數(shù)據(jù)停止AD轉(zhuǎn)換采集30次進行濾波處理計算出實際電壓值向CH375緩存發(fā)送電壓值是否完成數(shù)據(jù)接收?CH375向PC發(fā)送數(shù)據(jù)包YN圖3.1AD采集數(shù)據(jù)的流程圖具體程序如下:/*********************************************************************/unsignedintAD_Change(void) // TLC549驅(qū)動程序{ unsignedinti,temp=0; AD_In=0; _nop_(); _nop_(); CS=0; _nop_(); _nop_(); _nop_(); _nop_(); if(AD_Out==1) temp+=1; for(i=0;i<10;i++) { AD_In=1; _nop_(); _nop_(); AD_In=0; _nop_(); _nop_(); if(i!=9) { temp=temp<<1; if(AD_Out==1)temp+=1; } } CS=1; returntemp; }CH375發(fā)送數(shù)據(jù)部分流程如圖3.2圖3.2CH375發(fā)送數(shù)據(jù)流程圖中斷程序如下:/*****************************************************************************************/voidmCh375Interrupt()interrupt0using1 //CH375中斷服務(wù)程序,使用寄存器組1{ unsignedcharInterruptStatus; unsignedchari,length; unsignedcharxdatabuffer[64]; //64字節(jié)的緩沖區(qū)存放數(shù)據(jù) EA=0; CH375_WR_CMD_PORT(CMD_GET_STATUS); //獲取中斷狀態(tài)并取消中斷請求 InterruptStatus=CH375_RD_DAT_PORT(); //讀取中斷狀態(tài) switch(InterruptStatus) //分析中斷狀態(tài)處理 { caseUSB_INT_EP2_OUT: //批量端點下傳成功 { CH375_WR_CMD_PORT(CMD_RD_USB_DATA);//從當(dāng)前USB中斷的端點緩沖區(qū)讀取數(shù)據(jù)塊并釋放緩沖區(qū) length=CH375_RD_DAT_PORT(); //首先讀取后續(xù)數(shù)據(jù)長度 for(i=0;i<length;i++) buffer[i]=CH375_RD_DAT_PORT();//讀取接收數(shù)據(jù)包 //向USB端點2或者主機端點的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 CH375_WR_CMD_PORT(CMD_WR_USB_DATA7);//向USB端點2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 CH375_WR_DAT_PORT(length); //首先寫入后續(xù)數(shù)據(jù)長度,回傳剛接收到的數(shù)據(jù)長度 LED_1=buffer[1]; LED_2=buffer[2]; LED_3=buffer[3]; temp=AD_Filter(); volt=temp/2; ////volt++;//volt=456; CH375_WR_DAT_PORT(volt/100%10+48); CH375_WR_DAT_PORT(volt/10%10+48); CH375_WR_DAT_PORT(volt/1%10+48); for(i=0;i<length-3;i++) //發(fā)送一塊數(shù)據(jù)64個字節(jié) CH375_WR_DAT_PORT(6+48); break; } caseUSB_INT_EP2_IN: //批量數(shù)據(jù)發(fā)送成功 { CH375_WR_CMD_PORT(CMD_UNLOCK_USB);//釋放當(dāng)前USB緩沖區(qū) break; } default: //其它中斷,未用到,解鎖后退出即可 { CH375_WR_CMD_PORT(CMD_UNLOCK_USB);//釋放當(dāng)前USB緩沖區(qū) break; } } EA=1;}上位機模塊軟件程序設(shè)計CH375在計算機端提供了應(yīng)用層接口,應(yīng)用層接口是由CH372動態(tài)鏈接庫DLL提供的面向功能應(yīng)用的API,所有API在調(diào)用后都有操作狀態(tài)返回[10],但不一定有應(yīng)答數(shù)據(jù)。CH375動態(tài)鏈接庫提供的API包括:設(shè)備管理API、數(shù)據(jù)傳輸API、中斷處理API。上位機中接受數(shù)據(jù)顯示具體代碼如下:/***************************************************************************************************************/ if(CH375WriteData(0,mBuffer,&mTotal))//發(fā)送,發(fā)送成功 { mLength=64; if(mTestCount==0) Sleep(200);//考慮到之前單片機準(zhǔn)備上傳的數(shù)據(jù)可能未被計算機取走,導(dǎo)致首次回傳有可能直接讀到之前的數(shù)據(jù)而不是本次數(shù)據(jù)的取反,所以首次回傳先等待單片機準(zhǔn)備好取反數(shù)據(jù) if(CH375ReadData(0,mReadBuf,&mLength))//接收成功 printf("Cnt=%4ld,Len=%2ld,Data:電壓值:%c.%c%cV\xd",mTestCount,mTotal,mReadBuf[0],mReadBuf[1],mReadBuf[2]); }4系統(tǒng)調(diào)試4.1硬件電路調(diào)試這里不僅有CH375硬件有關(guān)的調(diào)試情況,還有在設(shè)計PCB板中的規(guī)則參考,比如抗干擾的方法。我們沒用到主機模式,大部分調(diào)試都是面對該電路的USB設(shè)備模式的PCB設(shè)計要求。所有平行信號線之間要盡量留有較大的間隔[9],以減少串?dāng)_。如果有兩條相距較近的信號線,最好在兩線之間走一條接地線,這樣可以起到屏蔽作用。設(shè)計信號傳輸線時要避免急拐彎,以防傳輸線特性阻抗的突變而產(chǎn)生反射,要盡量設(shè)計成具有一定尺寸的均勻的圓弧線。對于雙面板(或六層板中走四層線).電路板兩面的線要互相垂直,以防止互相感應(yīng)產(chǎn)主串?dāng)_。注意在使用偉福仿真器進行測試時,仿真器電源要與其他電源同時上電,否則CH375將出現(xiàn)工作不正常。如果我們選擇MAX810進行復(fù)位控制的話,MAX810應(yīng)選3V多上電復(fù)位型號。因為USB信號屬于模擬信號,所在CH372、CH375、CH341等USB芯片內(nèi)部包含數(shù)字電路和一些模擬電路,另外,USB芯片中還包含時鐘振
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年山西省三晉聯(lián)盟名校高二上學(xué)期期中聯(lián)合考試歷史試卷
- 2025年互聯(lián)網(wǎng)商品交易協(xié)議范本
- 2025年養(yǎng)老護理雇傭合同標(biāo)準(zhǔn)
- 2025年倉儲合同風(fēng)險控制策略制定
- 2025年倉儲物流服務(wù)協(xié)議文本
- 2025年企業(yè)股份制改革協(xié)議合同范本
- 2025年兒童鞋類行業(yè)供需合同樣本
- 2025年船底防污漆項目申請報告
- 2025年事業(yè)單位合同采購范例
- 2025年錳氧化物項目提案報告模范
- 2024簡易租房合同下載打印
- 數(shù)字出版概論 課件 第八章 數(shù)字出版產(chǎn)品開發(fā)與分析
- 高職建筑設(shè)計專業(yè)《建筑構(gòu)造與識圖》說課課件
- 碼頭工程施工組織設(shè)計
- TBSES 001-2024 建設(shè)項目環(huán)境影響后評價技術(shù)指南 污染影響類
- 北師大版數(shù)學(xué)三年級下冊《分橘子》說課稿及反思(共二篇)
- 新能源汽車:電動壓縮機技術(shù)簡介
- 2024年醫(yī)美項目立項申請報告范文
- 阿基米德課件
- 2024年電力交易員(中級工)職業(yè)鑒定理論考試題庫-下(多選、判斷題)
- 2024年步步高高考英語大一輪復(fù)習(xí)(新人教版)基礎(chǔ)知識默寫本必修第一冊含答案
評論
0/150
提交評論