版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> USB2.0接口電路設(shè)計(jì)與編程</p><p><b> 摘 要</b></p><p> 通用串行總線USB(Universal Serial Bus)是一種新型的微機(jī)總線接口規(guī)范。具有傳輸速度快、可靠性高、使用靈活等優(yōu)點(diǎn)。作為一種通信接口規(guī)范,它被廣泛地應(yīng)用在PC外設(shè)和便攜式系統(tǒng)中。隨著客戶對(duì)系統(tǒng)數(shù)據(jù)采集速度要求的不斷提高,USB以
2、其使用方便、易于擴(kuò)展、速度快等優(yōu)點(diǎn)而越來越多的應(yīng)用于數(shù)據(jù)采集系統(tǒng)中。PDIUSBD12是一種USB接口芯片,具有很高的性能價(jià)格比,可以使設(shè)計(jì)者在各種不同類型微控制器中選擇合適的微控制器,減小了開發(fā)時(shí)間、風(fēng)險(xiǎn)以及費(fèi)用,從而用快捷的方法來實(shí)現(xiàn)最經(jīng)濟(jì)的USB接口。本文對(duì)PDIUSBD12的功能作了簡要介紹,利用89S51與PDIUSBD12相連實(shí)現(xiàn)了USB接口功能,著重描述其硬件電路和接口芯片的固件程序設(shè)計(jì)。固件程序設(shè)計(jì)部分用C語言開發(fā),在本
3、文中僅給出了部分程序的流程設(shè)計(jì)。</p><p> 關(guān)鍵詞:USB,89S51,PDIUSBD12芯片</p><p> Circuit Design and Program of USB 1.1 Interface</p><p><b> Abstract</b></p><p> Universal Ser
4、ial Bus is a new specification for microcomputer bus interface. The USB has the merits of high transmission speed, high reliability, and flexibility. As a communications interface standard, this was widely used in comput
5、er and portable systems. With the advance of the clients' demand for the speed of a data collection system is continual, USB is more and more widely used in data collection system for its advantages such as convenien
6、ce, expanding port with ease and high speed and etc</p><p> Key words: USB, 89S51, PDIUSBD12 chips</p><p><b> 目 錄</b></p><p><b> 1 緒 論1</b></p>
7、;<p> 1.1 課題背景與目的1</p><p> 1.2 課題的提出1</p><p> 1.3 USB簡介2</p><p> 2 USB1.1協(xié)議簡介4</p><p> 2.1 USB系統(tǒng)構(gòu)成4</p><p> 2.2 USB設(shè)備的枚舉過程5</p&
8、gt;<p> 2.3 USB標(biāo)準(zhǔn)設(shè)備請(qǐng)求6</p><p><b> 3 芯片介紹8</b></p><p> 3.1 PDIUSBD12芯片簡介8</p><p> 3.2 AT89S51介紹12</p><p> 3.3 芯片選擇13</p><p&g
9、t; 4 硬件電路設(shè)計(jì)14</p><p> 4.1 單片機(jī)單元電路設(shè)計(jì)14</p><p> 4.2 USB接口電路設(shè)計(jì)15</p><p> 5 軟件的設(shè)計(jì)17</p><p> 5.1 軟件的開發(fā)環(huán)境17</p><p> 5.2 軟件程序開發(fā)17</p><
10、;p> 5.3 程序流程分析22</p><p> 5.4 程序模塊化思想23</p><p><b> 結(jié)論24</b></p><p><b> 致謝25</b></p><p><b> 參考文獻(xiàn)26</b></p><p
11、><b> 1 緒 論</b></p><p> 通用串行總線USB(Universal Serial Bus)是一種新型的微機(jī)總線接口規(guī)范。其傳輸速率遠(yuǎn)快于一般的串行總線接口。它最突出的特點(diǎn)是支持熱插拔、使用方便、獨(dú)立供電且能連接多個(gè)不同的設(shè)備。</p><p> 隨著客戶對(duì)系統(tǒng)數(shù)據(jù)采集速度要求的不斷提高,USB以其使用方便、易于擴(kuò)展、速度快等優(yōu)點(diǎn)而
12、越來越多的應(yīng)用于數(shù)據(jù)采集系統(tǒng)中。</p><p> 1.1 課題背景與目的</p><p> 在計(jì)算機(jī)迅速普及的今天,USB接口已經(jīng)成為了計(jì)算機(jī)中最普遍的接口,例如數(shù)碼相機(jī)、掃描儀、游戲桿、磁帶和軟驅(qū)、圖像設(shè)備、打印機(jī)、鍵盤、鼠標(biāo)等等都使用了USB接口。</p><p> Universal Serial Bus(USB)是由Compaq、IBM、Intel
13、、Microsoft等七家公司于1995年所研發(fā)與規(guī)范出來的,相對(duì)于傳統(tǒng)外圍接口,USB具有諸多特性和優(yōu)點(diǎn):統(tǒng)一了各種接口設(shè)備的連接頭、即插即用(plug and play)特性、“熱插撥”(hot attach and detach)特性、具備12Mbps的標(biāo)準(zhǔn)傳輸速率及更高的傳輸速率、最多可以連接127個(gè)設(shè)備、可由USB電纜供電而不需要附加電源、具有電源管理功能。</p><p> 由于USB具有以上的特性
14、和優(yōu)點(diǎn),許多傳統(tǒng)的外設(shè)接口已經(jīng)轉(zhuǎn)向USB接口,而傳統(tǒng)的串口將隨即被淘汰,因此在新開發(fā)的設(shè)備中使用USB接口將符合時(shí)代潮流,將使產(chǎn)品的生命力更強(qiáng),而不至于很快被淘汰。</p><p> 本次畢業(yè)設(shè)計(jì),我們就利用所學(xué)的專業(yè)知識(shí),來設(shè)計(jì)一個(gè)USB接口電路,實(shí)現(xiàn)與計(jì)算機(jī)的數(shù)據(jù)傳送。這樣,不僅加深我們對(duì)USB接口原理的理解,也能夠促進(jìn)我們專業(yè)課的學(xué)習(xí)[1]。</p><p> 1.2 課題的提
15、出</p><p> USB接口的應(yīng)用越來越廣泛,用PDIUSBD12實(shí)現(xiàn)USB1.1接口是一個(gè)典型的單片機(jī)USB應(yīng)用系統(tǒng)。該課題能夠考察學(xué)生微控制器、模擬和數(shù)字電路、輔助設(shè)計(jì)軟件、編程語言等知識(shí)的學(xué)習(xí)和掌握水平,使學(xué)生在硬件設(shè)計(jì)及實(shí)現(xiàn)、軟件編程等方面的應(yīng)用能力得到全面訓(xùn)練和提高。</p><p> 主要內(nèi)容分為硬件和軟件部分,要求設(shè)計(jì)出8051系列MCU為核心的應(yīng)用系統(tǒng),能夠用PDI
16、USBD12實(shí)現(xiàn)USB1.1接口的基本通訊功能,正確使用各種元器件(包括MCU、USB1.1接口器件等),畫出電路原理圖。軟件部分要求編制出使系統(tǒng)正確運(yùn)行的程序。</p><p> 現(xiàn)有的條件是具有8051系列MCU的開發(fā)環(huán)境(包括仿真器、相關(guān)學(xué)習(xí)實(shí)驗(yàn)板和開發(fā)軟件),電路圖設(shè)計(jì)軟件等。</p><p> 1.3 USB簡介</p><p> 通用串行總線(U
17、niversal Serial Bus,簡稱USB)是康柏、微軟、IBM,DEC等公司為了解傳統(tǒng)總線的不足推出的一種新型串行總線接口規(guī)范, 自1995年在Comdex上亮相以來至今已廣泛地為各PC廠家所支持。現(xiàn)在生產(chǎn)的PC機(jī)幾乎都配備了USB接口,Microsoft的windows98,NT以及MacOS,Linux,F(xiàn)reeBSD等流行操作系統(tǒng)都增加了對(duì)USB的支持。USB的主要特點(diǎn)如下:</p><p>
18、(1)速度快。 USB有全速和低速兩種方式,主模式為全速模式,速率為12Mbps,從而使一些要求高速數(shù)據(jù)的外設(shè),如:高速硬盤、攝像頭等,都能統(tǒng)一到同一個(gè)總線框架下。另外為了適應(yīng)一些不需要很大吞吐量但是有很高實(shí)時(shí)性要求的設(shè)備,如鼠標(biāo)、鍵盤、游戲桿等,USB還提供低速方式,速率為1.5Mbps。如表1.1所示。新推出的USB2.0協(xié)議提供最高達(dá)480Mbps的數(shù)據(jù)傳輸速率可以適應(yīng)各種不同類型的外設(shè)。</p><p>
19、 表1.1 USB使用分類表</p><p> (2) 支持熱插拔和即插即用。所有的USB設(shè)備可以隨時(shí)的插入和拔離系統(tǒng),USB主機(jī)能夠動(dòng)態(tài)的識(shí)別設(shè)備的狀態(tài),并自動(dòng)給接入的設(shè)備分配地址和配置參數(shù),添加、刪除設(shè)備完全不用關(guān)閉計(jì)算機(jī),也不必像過去那樣需要手動(dòng)跳線和撥碼開關(guān)來設(shè)置新的外設(shè)。</p><p> (3) 易于擴(kuò)展。USB使用的是一種易于擴(kuò)展的樹狀結(jié)構(gòu),通過使用USB Hub擴(kuò)展
20、可連接多達(dá)127個(gè)外設(shè)。標(biāo)準(zhǔn)USB電纜長度為3米(低速為5米)。通過Hub或中繼器可以使外設(shè)距離達(dá)到30米。</p><p> (4) 使用靈活。USB共有4種傳輸模式:控制傳輸(control),步傳輸(synchronization)、中斷傳輸(interrupt)、批量傳輸(bulk),適應(yīng)不同設(shè)備的需要。</p><p> (5) 能夠采用總線供電。普通使用串口、并口的設(shè)備都需
21、要單獨(dú)的供電系統(tǒng),而USB設(shè)備則不需要,因?yàn)閁SB接口提供了內(nèi)置電源, USB電源能向低壓設(shè)備提供最大5V, 500mA的電源,從而降低了這些設(shè)備的成本并提高了性價(jià)比。</p><p> (6) 實(shí)現(xiàn)成本低。USB對(duì)系統(tǒng)與PC的集成進(jìn)行了優(yōu)化,適合于開發(fā)低成本的外設(shè)[2]。</p><p> 2 USB1.1協(xié)議簡介</p><p> Intel公司開發(fā)的通
22、用串行總線架構(gòu)(USB)的目的主要基于以下三方面考慮:</p><p> (1)計(jì)算機(jī)與電話之間的連接:顯然用計(jì)算機(jī)來進(jìn)行計(jì)算機(jī)通信將是下一代計(jì)算機(jī)基本的應(yīng)用。機(jī)器和人們的數(shù)據(jù)交互流動(dòng)需要一個(gè)廣泛而又便宜的連通網(wǎng)絡(luò)。然而,由于目前產(chǎn)業(yè)間的相互獨(dú)立發(fā)展,尚未建立統(tǒng)一標(biāo)準(zhǔn),而USB則可以廣泛的連接計(jì)算機(jī)和電話。</p><p> (2)易用性:眾所周知,PC機(jī)的改裝是極不靈活的。對(duì)用戶友好
23、的圖形化接口和一些軟硬件機(jī)制的結(jié)合,加上新一代總線結(jié)構(gòu)使得計(jì)算機(jī)的沖突大量減少,且易于改裝。但以終端用戶的眼光來看,PC機(jī)的輸入/輸出,如串行/并行端口、鍵盤、鼠標(biāo)、操縱桿接口等,均還沒有達(dá)到即插即用的特性,USB正是在這種情況下問世的。</p><p> (3)端口擴(kuò)充:外圍設(shè)備的添加總是被相當(dāng)有限的端口數(shù)目限制著。缺少一個(gè)雙向、價(jià)廉、與外設(shè)連接的中低速的總線,限制了外圍設(shè)備(諸如電話/電傳/調(diào)制解調(diào)器的適配
24、器、掃描儀、鍵盤、PDA)的開發(fā)?,F(xiàn)有的連接只可對(duì)極少設(shè)備進(jìn)行優(yōu)化,對(duì)于PC機(jī)的新的功能部件的添加需定義一個(gè)新的接口來滿足上述需要,USB就應(yīng)運(yùn)而生。它是快速、雙向、同步、動(dòng)態(tài)連接且價(jià)格低廉的串行接口,可以滿足PC機(jī)發(fā)展的現(xiàn)在和未來的需要[3]。</p><p> 2.1 USB系統(tǒng)構(gòu)成</p><p> USB總線由以下4個(gè)主要組分構(gòu)成。</p><p>
25、 主機(jī)和設(shè)備:是指USB系統(tǒng)中的主要構(gòu)件;</p><p> 物理構(gòu)成:是指USB元件的連接方法;</p><p> 邏輯構(gòu)成:不同的USB元件所擔(dān)當(dāng)?shù)慕巧拓?zé)任,以及從主機(jī)和設(shè)備的角度出發(fā)USB總線所呈現(xiàn)的結(jié)構(gòu);</p><p> 客戶軟件與設(shè)備功能接口的關(guān)系。</p><p> USB通信的數(shù)據(jù)流的結(jié)構(gòu)。主機(jī)的每一個(gè)層次分別對(duì)應(yīng)設(shè)
26、備的相應(yīng)層次。通過邏輯通道連接起來,客戶軟件通過邏輯連接可以直接控制設(shè)備的接口模塊。這種連接使得軟件控制與接口一一對(duì)應(yīng)起來,用戶使用起來可以更加簡單、快捷[4]。</p><p> USB總線有4種數(shù)據(jù)傳輸方式,分別是控制傳輸、中斷傳輸、批量傳輸和同步傳輸。</p><p> 控制傳輸:主要用于主機(jī)把命令傳給設(shè)備及設(shè)備把狀態(tài)返回給主機(jī)。任何一個(gè)USB設(shè)備都必須支持一個(gè)與控制類型相對(duì)應(yīng)的
27、端點(diǎn)0。</p><p> 中斷傳輸:用來支持那些偶然需要少量數(shù)據(jù)通信,但服務(wù)時(shí)間受限制的設(shè)備。中斷傳輸常常用在鍵盤、鼠標(biāo)和游戲桿上。</p><p> 批量傳輸:用來傳輸大量數(shù)據(jù)而沒有周期和傳輸速率的設(shè)備上。批量傳輸方式并不能保證傳輸?shù)乃俾?,但可保證傳輸?shù)目煽啃裕?dāng)出現(xiàn)錯(cuò)誤的時(shí)候會(huì)要求發(fā)送方重發(fā)。</p><p> 同步傳輸:以一個(gè)恒定的速率進(jìn)行傳輸。同步傳
28、輸方式的發(fā)送和接收方都必須保證傳輸速率的匹配,不然會(huì)造成數(shù)據(jù)的丟失。</p><p> 2.2 USB設(shè)備的枚舉過程</p><p> 要主機(jī)識(shí)別一個(gè)USB設(shè)備必須經(jīng)過枚舉的過程,主機(jī)使用總線枚舉來識(shí)別和管理必要的設(shè)備狀態(tài)變化、總線枚舉的過程如下:</p><p> (1)設(shè)備連接。USB設(shè)備接入U(xiǎn)SB總線。</p><p> (2
29、)設(shè)備上電。USB設(shè)備可以使用USB總線供電,也可以使用外部電源供電。</p><p> (3)主機(jī)檢測到設(shè)備,發(fā)出復(fù)位。設(shè)備連接到總線后,主機(jī)通過檢測設(shè)備在總線的上拉電阻檢測到有新的設(shè)備連接,并獲釋該設(shè)備是全速設(shè)備還是低速設(shè)備,然后向該端口發(fā)送一個(gè)復(fù)位信號(hào)。</p><p> (4)設(shè)備默認(rèn)狀態(tài)。設(shè)備要從總線上接收到一個(gè)復(fù)位的信號(hào)后,才可以對(duì)總線的處理操作做出響應(yīng)。設(shè)備接收到復(fù)位信號(hào)
30、后,就使用默認(rèn)地址(00H)來對(duì)其進(jìn)行尋址。</p><p> (5)地址分配。當(dāng)主機(jī)接收到有設(shè)備對(duì)默認(rèn)地址(00H)響應(yīng)的時(shí)候,就對(duì)設(shè)備分配一個(gè)空閑的地址,以后設(shè)備就只對(duì)該地址進(jìn)行響應(yīng)。</p><p> (6)讀取USB設(shè)備描述符、主機(jī)讀取USB設(shè)備描述符,確認(rèn)USB設(shè)備的屬性。</p><p> (7)設(shè)備配置。主機(jī)依照讀取的USB設(shè)備描述符來進(jìn)行配置,
31、如果設(shè)備所需的USB資源得以滿足。就發(fā)送配置命令給USB設(shè)備,表示配置完畢。</p><p> (8)掛起。為了節(jié)省電源,當(dāng)總線保持空閑狀態(tài)超過3ms以后,設(shè)備驅(qū)動(dòng)程序就會(huì)進(jìn)入掛起狀態(tài)。在掛起狀態(tài)時(shí),設(shè)備的消耗電流不超過500μA、當(dāng)被掛起時(shí),USB設(shè)備保留了包括其地址和配置信息在內(nèi)的所有內(nèi)部狀態(tài)。</p><p> 完成以上的幾個(gè)步驟后,USB設(shè)備即可使用。在枚舉的過程中,設(shè)備不一定
32、要求進(jìn)入掛起狀態(tài)。</p><p> 2.3 USB標(biāo)準(zhǔn)設(shè)備請(qǐng)求</p><p> USB標(biāo)準(zhǔn)設(shè)備請(qǐng)求是用來完成 USB設(shè)備枚舉的命令 ;USB設(shè)備必須對(duì)標(biāo)準(zhǔn)設(shè)備請(qǐng)求做出響應(yīng),不管該設(shè)備是否己經(jīng)被分配了一個(gè)默認(rèn)的地址或該設(shè)備目前正在配置。所有的標(biāo)準(zhǔn)設(shè)備請(qǐng)求都是使用默認(rèn)管道來傳輸?shù)腫5]。</p><p> USB的設(shè)備請(qǐng)求內(nèi)8個(gè)字節(jié)組成,USB標(biāo)準(zhǔn)設(shè)備請(qǐng)求有
33、11個(gè)命令。</p><p> 可以在C51的固件程序里定義一個(gè)結(jié)構(gòu)體來記錄請(qǐng)求的內(nèi)容,方便程序的控制。結(jié)構(gòu)體定義如下:</p><p> Typedef struct_device_request</p><p><b> {</b></p><p> unsigned char bmRequestType;
34、 //請(qǐng)求類型</p><p> unsigned char bRequest; //USB請(qǐng)求</p><p> unsigned short wValue; //USB數(shù)值</p><p> unsigned short wIndex;
35、 //USB請(qǐng)求索引</p><p> unsigned char wLength; //長度</p><p> } DEVICE_REQUEST</p><p> 以上的結(jié)構(gòu)體可以記錄下一個(gè)標(biāo)準(zhǔn)請(qǐng)求的內(nèi)容,但當(dāng)請(qǐng)求是帶數(shù)據(jù)傳輸?shù)臅r(shí)候(像Set Description或一些廠商請(qǐng)求),還要再定義一個(gè)結(jié)構(gòu)圍來保
36、持請(qǐng)求的數(shù)據(jù)。</p><p> 可以定義如下的結(jié)構(gòu)體,把請(qǐng)求的內(nèi)容和傳輸?shù)臄?shù)據(jù)都放在一起。</p><p> Typedef struct_control_xfer</p><p><b> {</b></p><p> DEVICE_REQUEST DeviceRequest; //USB設(shè)備請(qǐng)求結(jié)構(gòu)體,8
37、個(gè)字節(jié)</p><p> unsigned short wLength; //傳輸數(shù)據(jù)的總字節(jié)數(shù)</p><p> unsigned short wCount; //傳輸字節(jié)數(shù)統(tǒng)計(jì)</p><p> unsigned char * pData; //傳輸數(shù)據(jù)的指針</p>&l
38、t;p> unsigned char dataBuffer[MAX_CONTROLDATA_SIZE] ; //請(qǐng)求的數(shù)據(jù)</p><p> }CONTROL_XFER;</p><p> 當(dāng)接收到廠商請(qǐng)求后,DeviceRequest的格式如下:</p><p> bmRequestType =40H //請(qǐng)求類型,表示主機(jī)向設(shè)備發(fā)送廠商請(qǐng)求
39、</p><p> bRequest =0CH //請(qǐng)求(注意,這里是廠商請(qǐng)求,并不是標(biāo)準(zhǔn)請(qǐng)求的Synch Frame)</p><p> wValue =0000H //數(shù)值</p><p> wIndex =0471H //索引,廠商請(qǐng)求引號(hào)</p><p> wLength
40、 =0006H //長度,表示后面有6個(gè)字節(jié)的數(shù)據(jù)</p><p> dataBuffer的數(shù)據(jù)為00H,00H,00H,40H,00H,80H</p><p> 在主機(jī)的枚舉過程中使用到了上述多個(gè)標(biāo)準(zhǔn)請(qǐng)求、一個(gè)設(shè)備要想讓主機(jī)識(shí)別,就必須完成對(duì)標(biāo)準(zhǔn)請(qǐng)求的響應(yīng)。</p><p><b> 3 芯片介紹</b></p&g
41、t;<p> 3.1 PDIUSBD12芯片簡介</p><p> PDIUSBD12是一款性價(jià)比很高的USB器件它通常用作微控制器系統(tǒng)中實(shí)現(xiàn)與微控制器進(jìn)行通信的高速通用并行接口。它還支持本地的DMA傳輸。</p><p> 這種實(shí)現(xiàn)USB接口的標(biāo)準(zhǔn)組件使得設(shè)計(jì)者可以在各種不同類型微控制器中選擇出最合適的微控制器。這種靈活性減小了開發(fā)的時(shí)間風(fēng)險(xiǎn)以及費(fèi)用(通過使用已有的
42、結(jié)構(gòu)和減少固件上的投資),從而用最快捷的方法實(shí)現(xiàn)最經(jīng)濟(jì)的USB外設(shè)的解決方案。</p><p> PDIUSBDI2完全符合USB1.1版的規(guī)范。它還符合大多數(shù)器件的分類規(guī)格:成像類、海量存儲(chǔ)器件、通信器件、打印設(shè)備以及人機(jī)接口設(shè)備。同樣地,PDIUSBD12理想地適用于許多外設(shè),例如:打印機(jī)、掃描儀、外部的存儲(chǔ)設(shè)備(Zip驅(qū)動(dòng)器)和數(shù)碼相機(jī)等等。它使得當(dāng)前使用SCSI的系統(tǒng)可以立即降低成本。</p>
43、;<p> PDIUSBD12所具有的低掛起功耗連同LazyClock輸出可以滿足使用ACPI,OnNOW 和USB電源管理的要求。低的操作功耗可以應(yīng)用于使用總線供電的外設(shè)。</p><p> 此外它還集成了許多特性,包括SoftConnetTM,GoodLinkTM可編程時(shí)鐘輸出、低頻晶振和終止寄存器集合。所有這些特性都為系統(tǒng)顯著節(jié)約了成本,同時(shí)使USB功能在外設(shè)上的應(yīng)用變得容易[6]。<
44、;/p><p><b> 1、主要特性如下</b></p><p> (1)符合通用串行總線USB 1.1版規(guī)范。</p><p> (2)高性能USB接口器件,集成了SIE, FIFO存儲(chǔ)器、收發(fā)器以及電壓調(diào)整器。</p><p> (3)符合大多數(shù)器件的分類規(guī)格。</p><p> (4
45、)可與任何外部微控制器/微處理實(shí)現(xiàn)高速并行接口(2M字節(jié)/秒)。</p><p> (5)完全自治的直接內(nèi)存存取(DMA)操作。</p><p> (6)集成320字節(jié)多結(jié)構(gòu)FIFO存儲(chǔ)器。</p><p> (7)主端點(diǎn)的雙緩沖配置增加了數(shù)據(jù)吞吐量并輕松實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)傳輸。</p><p> (8)在批量模式和同步模式下均可實(shí)現(xiàn)1M字
46、節(jié)/秒的數(shù)據(jù)傳輸速率。</p><p> (9)具有良好EMI特性的總線供電能力。</p><p> (10)在掛起時(shí)可控制LazyCiock輸出。</p><p> (11)可通過軟件控制與USB的連接。</p><p> (12)采用GoodLink技術(shù)的連接指示器,在通訊時(shí)使LED閃爍。</p><p>
47、 (13)可編程的時(shí)鐘頻率輸出。</p><p> (14)符合ACPI,OnNOW和USB電源管理的要求。</p><p> (15)內(nèi)部上電復(fù)位和低電壓復(fù)位電路。</p><p> (16)有S028和TSSOP28封裝。</p><p> (17)工業(yè)級(jí)操作溫度:-40℃ —+85℃。</p><p>
48、 (18)高于8kV的在片靜電防護(hù)電路,減少了額外元件的費(fèi)用。</p><p> (19)具有高錯(cuò)誤恢復(fù)率(>99%)的全掃描設(shè)計(jì)確保了高品質(zhì)。</p><p> (20)雙電源操作:3.3士0.3V或擴(kuò)展的5V電源,范圍為3.6~5.5V。</p><p> (21)多中斷模式實(shí)現(xiàn)批量和同步傳輸。</p><p> 2、PD
49、IUSBDI2的引腳詳細(xì)說明</p><p> PDIUSBDI2的引腳如圖3.1所示,引腳說明如表3.1所示。</p><p> 圖3.1 管腳排列圖</p><p> 表3.1 引腳描述</p><p> 注: O2:2mA驅(qū)動(dòng)輸出; OD4:4mA驅(qū)動(dòng)開漏輸出; </p><p> OD8:8
50、mA驅(qū)動(dòng)開漏輸出; IO2:2mA驅(qū)動(dòng)輸入和輸出; O4:4mA驅(qū)動(dòng)輸出</p><p> 3、PDIUSBD12內(nèi)部結(jié)構(gòu)如圖3.2所示。</p><p> 圖3.2 PDIUSBD12內(nèi)部結(jié)構(gòu)</p><p> 模擬收發(fā)器接口可通過終端電阻直接與USB電纜相連。3.3 V電壓調(diào)整器負(fù)責(zé)為模擬收發(fā)器供電。PHILIPS串行接口引擎(PSIE)實(shí)現(xiàn)了全部的U
51、SB協(xié)議層,完全由硬件實(shí)現(xiàn)而不需要固件的參與。D12與USB相連接時(shí),集成在片內(nèi)的1.5kΩ上拉電阻將D+置為高,主機(jī)就可檢測到有設(shè)備接入。默認(rèn)狀態(tài)下1.5kΩ上拉電阻不與內(nèi)部3.3 V電壓相連,連接的建立是通過微控制器向D12發(fā)送命令來實(shí)現(xiàn)的(SoftConnectTM技術(shù))。這就允許系統(tǒng)微控制器在決定與USB建立連接之前完成初始化時(shí)序,不需要拔出電纜就可對(duì)USB總線連接重新進(jìn)行初始化。對(duì)于微控制器而言,D12相當(dāng)于一個(gè)帶8位數(shù)據(jù)總線
52、和一個(gè)地址位(占用2個(gè)位置)的存儲(chǔ)器件。D12支持多路復(fù)用和非復(fù)用的地址和數(shù)據(jù)總線;還支持主端點(diǎn)與本地共享RAM之間直接讀取的DMA傳輸;支持單周期和突發(fā)模式的DMA傳輸[7]。</p><p> 3.2 AT89S51介紹</p><p> AT89S51是一個(gè)低功耗高性能CMOS 8位單片機(jī),片內(nèi)含4K Byte ISP(In-system programmable)的可反復(fù)擦寫
53、1000次的Flash只讀程序存儲(chǔ)器,器件采用Atmel公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MSC—51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。其引腳圖如圖3.3所示。</p><p> 圖3.3 AT89S51引腳圖</p><p> AT
54、89S51具有如下特點(diǎn):</p><p> 40個(gè)引腳,4k Bytes Flash片內(nèi)程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷源,2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,1個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。</p><p> 此外,AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz,并可通過軟
55、件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM、定時(shí)計(jì)數(shù)器、串行口、外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。</p><p><b> 主要功能特性:</b></p><p> 兼容MCS-51指令系統(tǒng);
56、 4k可反復(fù)擦寫(>1000次)ISP Flash ROM;</p><p> 32個(gè)雙向I/O口; 4.5-5.5V工作電壓;</p><p> 2個(gè)16位可編程定時(shí)/計(jì)數(shù)器; 時(shí)鐘頻率0-33MHz;</p><p> 全雙工UART串行中斷口; 128x8bit內(nèi)部RAM;</p>&
57、lt;p> 2個(gè)外部中斷源; 低功耗空閑和省電模式;</p><p> 中斷喚醒省電模式; 3級(jí)加密位;</p><p> 看門狗(WDT)電路; 軟件設(shè)置空閑和省電功能;</p><p> 靈活的ISP字節(jié)和分頁編程; 雙數(shù)據(jù)寄存器指針。</p><
58、;p><b> 3.3 芯片選擇</b></p><p> 鑒于PDIUSBD12芯片的優(yōu)良性能,并結(jié)合設(shè)計(jì)任務(wù)要求,其完全能夠滿足我們的要求,因此我們選用該芯片作為我們本次畢業(yè)設(shè)計(jì)中USB1.1接口的功能芯片。由于AT89S51片內(nèi)含4K Byte ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,其程序的燒寫非常簡單,因此
59、我們選擇Atmel公司的89S51單片機(jī)作為我們本次畢業(yè)設(shè)計(jì)的主控芯片。</p><p><b> 4 硬件電路設(shè)計(jì)</b></p><p> 4.1 單片機(jī)單元電路設(shè)計(jì)</p><p> 單片機(jī)處理與控制單元主要完成USB1.1接口電路的控制邏輯與一些相關(guān)信息的處理,而這些功能的實(shí)現(xiàn)更多的是靠軟件的設(shè)計(jì)來完成的,其硬件電路相對(duì)簡單,
60、一般情況下,單片機(jī)的最小系統(tǒng)就能完成其功能,其硬件電路如圖4.1所示。</p><p> 圖4.1 單片機(jī)最小系統(tǒng)</p><p> 對(duì)于單片機(jī)來說,時(shí)鐘信號(hào)為其正常有序的工作提供時(shí)序,單片機(jī)的所有操作都是在時(shí)鐘信號(hào)下有序進(jìn)行的,因此,對(duì)于單片機(jī)系統(tǒng)來說,時(shí)鐘電路是必需的。MCS-51單片機(jī)內(nèi)部由一個(gè)反相放大器構(gòu)成振蕩器,可以由它產(chǎn)生時(shí)鐘。時(shí)鐘可以由兩種方式產(chǎn)生,即內(nèi)部方式和外部方式。
61、</p><p> 內(nèi)部方式:在XTAL1和XTAL2端外接石英晶體作定時(shí)元件,內(nèi)部反相放大器自激振蕩,產(chǎn)生時(shí)鐘。時(shí)鐘放大器對(duì)振蕩脈沖二分頻,即若石英頻率fOSC=6MHZ,則時(shí)鐘頻率=3MHZ。因此,時(shí)鐘是一個(gè)雙相信號(hào),由P1相和P2相構(gòu)成。fOSC可在1.2~12MHZ之間選擇,小電容可以取30pF左右[8]。</p><p> 外部方式:可以通過XTAL1和XTAL2接入外部時(shí)鐘
62、。</p><p> 對(duì)單片機(jī)系統(tǒng)來說,另外一個(gè)重要的電路就是復(fù)位電路,它在剛加電時(shí)和系統(tǒng)軟件出現(xiàn)故障時(shí),使單片機(jī)復(fù)位,進(jìn)入到正常的工作狀態(tài)。</p><p> 對(duì)于51單片機(jī)來說,RST引腳是復(fù)位信號(hào)的輸入端。復(fù)位信號(hào)是高電平有效。高電平的持續(xù)時(shí)間應(yīng)為24個(gè)振蕩周期以上。若時(shí)鐘頻率為6MHZ,則復(fù)位信號(hào)至少應(yīng)持續(xù)4us以上,才可以使單片機(jī)復(fù)位。只要該引腳保持高電平,單片機(jī)便循環(huán)復(fù)位。
63、當(dāng)RST端由高變低后,51單片機(jī)由ROM的0000H開始執(zhí)行程序。</p><p> 單片機(jī)的復(fù)位方式有上電自動(dòng)復(fù)位和手動(dòng)復(fù)位兩種。只要VCC上升時(shí)間不超過1ms,通過在VCC和RST引腳之間加一個(gè)10uF的電容,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位,即打開電源就可以自動(dòng)復(fù)位。</p><p><b> USB接口電路設(shè)計(jì)</b></p><p> P
64、DIUSBD12內(nèi)部含有集成收發(fā)器接口,可通過端口電阻直接連接到USB通信電纜。片內(nèi)集成有3.3V調(diào)節(jié)器,可為模擬收發(fā)器提供電源。該電壓要么外接1.5kΩ的上拉電阻作為輸出,要么連接內(nèi)部集成的1.5kΩ上拉電阻作為SoftConnectTM的內(nèi)部電源;由于其片內(nèi)還集成了6—48MHz倍頻PLL,因此只需外接低頻晶振即可工作。而且PLL上在工作過程中不需要任何外部元件的干預(yù),當(dāng)使用6MHz晶振時(shí),EMI會(huì)相應(yīng)地降低;位時(shí)鐘恢復(fù)電路能將時(shí)鐘
65、從USB數(shù)據(jù)流中恢復(fù)出來,它還可以對(duì)頻率漂移和信號(hào)抖動(dòng)進(jìn)行跟蹤。Philips的SIE(串行接口引擎) 能完整地執(zhí)行USB協(xié)議,它已經(jīng)被完全固化在芯片內(nèi)部,因此不再需要任何固件(firmware)的干涉。這一部分包括同步識(shí)別、并行/串行轉(zhuǎn)換、CRC檢測/產(chǎn)生、PID確認(rèn)/產(chǎn)生、地址識(shí)別以及握手評(píng)定/產(chǎn)生;PDIUSBD12的USB軟件連接可通過MCU將指令發(fā)到D+ (全速設(shè)備)來實(shí)現(xiàn)。在MCU發(fā)命令之前,必須先完成PDIUSBD12的初
66、始化。在這之后,用時(shí)不需拔出USB線就能完成下一次連接。PDIUSBD12的并行接口和通用并行接口一樣具有使用方便、速</p><p> 圖4.2 PDIUSBD12和89S51的接口電路圖</p><p> 圖4.2中選用Atmel公司的AT89S51作為PDIUSBD12的控制器,此接口工作在非DMA傳輸方式,PDIUSBD12與AT89S51的數(shù)據(jù)交換采用中斷方式,其中斷可通過
67、圖中的外部中斷0(INT0)來完成。在這一方式下,89S51通過控制PDIUSBD12來使集線器與主機(jī)通信并完成USB協(xié)議的處理(即PDIUSBD12的固件),該協(xié)議的處理包括描述符請(qǐng)求、地址設(shè)置、端點(diǎn)的配置等。圖中,地址線A15(P2.7)作為PDIUSBD12的片選,A14(P2.6)作為PDIUSBD12的命令/數(shù)據(jù)選擇線,地址0X7FFF為寫命令,0X3FFF為讀寫數(shù)據(jù)。對(duì)PDIUSBD12的調(diào)試可借助調(diào)試軟件USBCheck或
68、WINRT USB Kernel Driver來完成。PDIUSBD12的輸出狀態(tài)可以通過LED進(jìn)行監(jiān)控,當(dāng)該USB設(shè)備連接建立以后,LED就會(huì)發(fā)光,數(shù)據(jù)傳輸時(shí)LED會(huì)閃爍,常亮或一直不亮說明USB接口有問題。</p><p><b> 5 軟件的設(shè)計(jì)</b></p><p> 5.1 軟件的開發(fā)環(huán)境</p><p> Keil C5
69、1是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢[9] 。
70、</p><p> Keil C51的工具包中,uVision是C51在Windows的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的H
71、ex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。</p><p> 5.2 軟件程序開發(fā)</p><p> 固件設(shè)計(jì)的目標(biāo)就是使PDIUSBD12在USB上達(dá)到最大的傳輸速率。外圍設(shè)備,例如打印機(jī)、掃描儀、外部的海量存儲(chǔ)器和數(shù)碼相機(jī)都可使用PDIUSBD12在USB上傳輸數(shù)據(jù)。這
72、些設(shè)備的CPU要忙于處理許多設(shè)備控制和數(shù)據(jù)以及圖像處理等任務(wù)。本方案的固件設(shè)計(jì)采用完全的中斷驅(qū)動(dòng)方式。當(dāng)CPU處理前臺(tái)任務(wù)時(shí),USB的傳輸在后臺(tái)進(jìn)行,中斷和主循環(huán)的數(shù)據(jù)交換通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)進(jìn)行。這就確保了最佳的傳輸速率和更好的軟件結(jié)構(gòu),同時(shí)簡化了編程和調(diào)試。</p><p> 后合ISR(中斷服務(wù)程序)和前臺(tái)主程序循環(huán)之間的數(shù)據(jù)交換可以通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來實(shí)現(xiàn)。其原理如圖5.1所示。例如,PDIU
73、SBD12的批量輸出端點(diǎn)可使用循環(huán)的數(shù)據(jù)緩沖區(qū)。當(dāng) PDIUSRD12從USB收到一個(gè)數(shù)據(jù)包,那么就對(duì)CPU產(chǎn)生一個(gè)中斷請(qǐng)求。CPU立即響應(yīng)中斷。在ISR中,固件將數(shù)據(jù)包從PDIUSBD12內(nèi)部緩沖區(qū)移到循環(huán)數(shù)據(jù)緩沖區(qū),并在隨后清零PDIUSBD12的內(nèi)部緩沖區(qū),以便接收新的數(shù)據(jù)包。CPU可以繼續(xù)當(dāng)前的前臺(tái)任務(wù)直到完成,例如打印當(dāng)前頁,然后返回到主循環(huán),檢查循環(huán)緩沖區(qū)內(nèi)是否有新的數(shù)據(jù),并開始其他的前臺(tái)任務(wù)[10] 。</p>
74、<p> 圖5.1 前后臺(tái)工作原理</p><p> 對(duì)于這種結(jié)構(gòu),主循環(huán)不關(guān)心數(shù)據(jù)是來自USB、串口還是并口,其只檢查循環(huán)緩沖區(qū)內(nèi)需要處理的新數(shù)據(jù)。這個(gè)概念很重要,主循環(huán)程序可以專注于數(shù)據(jù)的處理,而ISR能夠以最大可能的速度進(jìn)行數(shù)據(jù)的傳輸。</p><p> 控制端點(diǎn)在數(shù)據(jù)包處理時(shí)采用了同樣的概念。ISR接收和保存數(shù)據(jù)緩沖區(qū)中的控制傳輸,并設(shè)置相應(yīng)的標(biāo)志寄存器。主循
75、環(huán)向協(xié)議處理程序發(fā)出請(qǐng)求。由于所有的標(biāo)準(zhǔn)器件、級(jí)別和廠商請(qǐng)求都是在協(xié)議處理程序中進(jìn)行處理,ISR得以保持其效率,而且一旦增加新的請(qǐng)求,只需要在協(xié)議層進(jìn)行修改。固件結(jié)構(gòu)如圖5.2所示,圖中箭頭表示數(shù)據(jù)傳輸方向。</p><p> 硬件提取層是固件中的最低層代碼,直接對(duì)PDIUSBDl2訪問。相對(duì)于單片機(jī)而言,PDIUSBDl2類似于外擴(kuò)的一片RAM。</p><p> 固件中必須先定義命
76、令和數(shù)據(jù)所在的地址:</p><p> unsigned char d12_ cmd xdata_at_OxF4FF ;</p><p> unsigned char d12_data xdata_at_0xF0FF ;</p><p> 向PDIUSBD12發(fā)命令和對(duì)其進(jìn)行讀寫的子程序如下所述:</p><p> void wrt_
77、cmd(unsigned char command)</p><p> {d12_cmd=command;} //向PDIUSBD12發(fā)命令</p><p> void wrt_data(unsigned char tmp_data)</p><p> {d12_data=tmp_data ;} // 向PDIUSBD12寫數(shù)據(jù)
78、</p><p> void read_data()</p><p> {return(dl2_data);} //從PDIUSBD12讀數(shù)據(jù)</p><p> 圖5.2 固件結(jié)構(gòu)和數(shù)據(jù)流向</p><p> PDIUSBDl2命令接口包括了對(duì)PDIUSBDl2讀寫操作的所有命令,通過定義若干個(gè)子程序?qū)?yīng)于各自
79、不同的命令。當(dāng)固件中其它程序需要對(duì)PDIUSBDl2進(jìn)行讀寫時(shí),只須調(diào)用其中相應(yīng)的子程序。</p><p> USB固件程序由兩部分組成:</p><p> 1、主循環(huán)程序,其任務(wù)是可以中斷的;</p><p> 2、中斷服務(wù)程序。中斷服務(wù)程序負(fù)責(zé)從D12收集數(shù)據(jù),而主循環(huán)負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行處理。當(dāng)中斷服務(wù)程序收集了足夠的數(shù)據(jù)時(shí),即設(shè)置事件標(biāo)志位,通知主循環(huán)已經(jīng)準(zhǔn)
80、備好等待處理。主循環(huán)檢查到事件標(biāo)志位,進(jìn)入對(duì)應(yīng)的子程序進(jìn)行進(jìn)一步處理。單片機(jī)與D12的通信主要是靠單片機(jī)給D12發(fā)命令和數(shù)據(jù)來實(shí)現(xiàn)的。單片機(jī)先給D12的命令地址發(fā)命令,根據(jù)不同命令的要求再發(fā)送或讀出不同的數(shù)據(jù)。因此,可以將每種命令做成函數(shù),用函數(shù)實(shí)現(xiàn)各個(gè)命令,以后直接調(diào)用函數(shù)即可[11]。</p><p> 中斷服務(wù)程序根據(jù)USB協(xié)議,任何傳輸都是由主機(jī)(Host)開始的。單片機(jī)作它的前臺(tái)工作,等待中斷。主機(jī)首
81、先要發(fā)令牌包給USB設(shè)備(D12),D12接收到令牌包后就給單片機(jī)發(fā)中斷。單片機(jī)進(jìn)入中斷服務(wù)程序,首先讀D12的中斷寄存器,判斷USB令牌包的類型,然后進(jìn)入相應(yīng)的中斷子程序執(zhí)行相應(yīng)的操作。D12的中斷寄存器包含兩個(gè)字節(jié),共指示9個(gè)中斷來源。這些中斷來源包括控制輸入端點(diǎn)、控制輸出端點(diǎn)、端點(diǎn)1輸入、端點(diǎn)1輸出、主端點(diǎn)輸入、主端點(diǎn)輸出、總線復(fù)位、掛起改變、DMA操作結(jié)束。下面是中斷服務(wù)程序C語言代碼。</p><p>
82、 void usb— —inter(void)interrupt 0 using 0</p><p><b> (</b></p><p><b> uint int_</b></p><p><b> register:</b></p><p> EA-O;
83、 ∥關(guān)全局中斷</p><p><b> int_</b></p><p> register=read— int_</p><p> register(); ∥讀中斷寄存器,獲取中斷標(biāo)志</p><p> if(int
84、— register&0x0040)bEPPflags.bits.bus— reset=1; ∥總線復(fù)位</p><p> if(int_ register&0x000 1)portO— out O; ∥端點(diǎn)0 OUT中斷</p><p><b> if(int</b></p><p> register&0x00
85、02)portO— in 0; ∥端點(diǎn)0 IN中斷</p><p> if(int_ register&0x0004)port 1一out O; ∥端點(diǎn)1 OUT中斷</p><p> if(inLregister&0x0008)portl—in 0; ∥端點(diǎn)1 IN中斷</p><p> if(inLregister
86、&0x001 port2一outO; ∥端點(diǎn)2 OUT中斷</p><p> if(inLregister&0x0020)port2一in 0; ∥端點(diǎn)2 IN中斷</p><p> if(int_ register&0x00c0)suspend=l; ∥掛起改變</p><p> if(int_ regist
87、er&0x0100)() ∥DMA操作結(jié)束,由于沒有用到,因此為空操作</p><p> EA=1: ∥開全局中斷</p><p><b> )</b></p><p> 中斷服務(wù)程序(ISR)是固件中比較重要的部分。ISR處理由PDIUSBD12產(chǎn)生的中斷,從PDI
88、USBD12收集數(shù)據(jù),當(dāng)它收集到足夠的數(shù)據(jù)時(shí),就建立事件標(biāo)志,通知主循環(huán)已經(jīng)準(zhǔn)備好等待處理。當(dāng)PDIUSBD12產(chǎn)生一個(gè)中斷,CPU對(duì)其響應(yīng),進(jìn)入中斷服務(wù)程序。ISR先通過PDIUSBD12的中斷寄存器判斷信息包是發(fā)到普通端點(diǎn)(端點(diǎn)l和端點(diǎn)2)還是控制端點(diǎn)(端點(diǎn)0)。</p><p> 對(duì)于普通端點(diǎn)輸出中斷,處理程序首先將PDIUSBD12的中斷位清0,讀取并保存緩沖區(qū)數(shù)據(jù),然后設(shè)置收到數(shù)據(jù)標(biāo)志,最后退出程序?qū)?/p>
89、于普通端點(diǎn)輸入中斷,處理程序讀取端點(diǎn)號(hào)的最后處理狀態(tài)寄存器,以清除中斷寄存器的相應(yīng)位,并把狀態(tài)清0,然后退出程序。</p><p> 圖5.3 控制輸出處理流程</p><p> 控制端點(diǎn)(端點(diǎn)0)的處理程序,與普通端點(diǎn)相比較為復(fù)雜??刂苽鬏斂偸菑腟ETUP階段開始,然后是可選的DATA階段,又在STATUS階段結(jié)束。當(dāng)ISR已判斷出信息包是發(fā)到控制端點(diǎn),就調(diào)用相應(yīng)的處理程序。處理程
90、序流程如圖5.3所示。首先,讀取PDIUSBD l2的最后狀態(tài)寄存器,確定是否是一個(gè)SETUP包(第一個(gè)包必須是SETUP包)。如果是,處理程序就從PDIUSBD12緩沖區(qū)讀出內(nèi)容并保存。然后,發(fā)送應(yīng)答建立命令,以重新使能下一個(gè)建立階段。接下來判斷控制傳輸?shù)念愋汀H绻强刂茖?,設(shè)置標(biāo)志為接收狀態(tài),等待DATA階段。如果是控制讀,設(shè)置標(biāo)志為發(fā)送狀態(tài),指示USB設(shè)備現(xiàn)在正處于傳輸模式,即準(zhǔn)備在主機(jī)發(fā)送請(qǐng)求時(shí)發(fā)送數(shù)據(jù)。</p>
91、<p> SETUP階段結(jié)束后,主機(jī)會(huì)執(zhí)行DATA階段。如果PDIUSBDl2接收到OUT包,即要求PDIUSBDl2接收數(shù)據(jù),處理程序先判斷是否處于接收狀態(tài),如果是接收狀態(tài),則將數(shù)據(jù)從緩沖區(qū)取出并保存;如果PDIUSBD12接收到IN包,即要求PDIUSBD12發(fā)送數(shù)據(jù),控制端點(diǎn)的處理流程如圖5.4所示。首先,讀PDIUSBD12的最后處理狀態(tài)寄存器,將中斷標(biāo)志清0,接著進(jìn)行數(shù)據(jù)包的發(fā)送。由于端點(diǎn)0只有16B的FIFO,必
92、須在發(fā)送之前判斷數(shù)據(jù)大小。如果傳輸?shù)拈L度大于l6B,必須先發(fā)送16B并將發(fā)送數(shù)據(jù)長度減去l6;如果小于l6B,還要判斷是否等于0B,如果不為0B,則將數(shù)據(jù)發(fā)送出去,如果為0B,則發(fā)送一個(gè)空的包以指示主機(jī)數(shù)據(jù)已經(jīng)發(fā)送完畢。</p><p> 主循環(huán)程序首先做初始化I/O口,設(shè)置中斷等準(zhǔn)備工作,然后進(jìn)入主循環(huán),在主循環(huán)內(nèi)查詢事件標(biāo)志,并做出相應(yīng)處理。</p><p> 圖5.4 控制輸入
93、處理流程</p><p> 5.3 程序流程分析</p><p> 單片機(jī)與上位機(jī)USB接口通信過程如下:(1)主機(jī)檢測到一個(gè)連接條件,并且D+的數(shù)據(jù)被拉至Vse以上2.5 s(可通過軟連接實(shí)現(xiàn)),主機(jī)開始總線復(fù)位。(2)總線復(fù)位后主機(jī)對(duì)設(shè)備開始枚舉過程,發(fā)令牌包到端點(diǎn)0,產(chǎn)生中斷,然后單片機(jī)從端點(diǎn)0讀取枚舉要求,分析,做出回答,回答也通過端點(diǎn)0發(fā)送到主機(jī)。(3)完成枚舉后主機(jī)可以隨
94、時(shí)通過端點(diǎn)1和單片機(jī)通信。主機(jī)發(fā)數(shù)據(jù)給單片機(jī),通過中斷和端點(diǎn)1。單片機(jī)發(fā)數(shù)據(jù)給主機(jī)時(shí)直接向端點(diǎn)1寫入數(shù)據(jù)即可。由上面的過程分析得出USB單片機(jī)控制程序應(yīng)包含三部分:(1)初始化單片機(jī)和外圍電路。(2)主循環(huán)部分,發(fā)送USB請(qǐng)求,處理總線事務(wù)和用戶自己的功能,可以被中斷打斷。(3)中斷部分,接收主機(jī)的各種數(shù)據(jù)包,把數(shù)據(jù)存放到緩沖區(qū),置標(biāo)志位,等待主循環(huán)處理。</p><p> 程序流程圖如圖5.5所示。</
95、p><p> 圖5.5 程序流程圖</p><p> 5.4 程序模塊化思想</p><p> 將整個(gè)固件程序按功能分為5個(gè)模塊,每個(gè)模塊專注于一項(xiàng)功能。硬件提取層:對(duì)單片機(jī)I/O口和硬件接口進(jìn)行操作。PDIUSBD12命令接口:單片機(jī)通過總線對(duì)D12芯片命令子程序集,包含D12芯片所有命令的子函。中斷服務(wù)程序:接收主機(jī)中斷發(fā)送的數(shù)據(jù)包,將數(shù)據(jù)存入緩沖區(qū),設(shè)立
96、標(biāo)志位。標(biāo)準(zhǔn)請(qǐng)求處理程序:分析主機(jī)發(fā)送的請(qǐng)求,對(duì)各種請(qǐng)求進(jìn)行處理。主循環(huán):在收到setup包后,發(fā)送USB的請(qǐng)求,處理D12芯片總線事件和用戶自己的功能。其中硬件提取層和命令接I=1是程序的基礎(chǔ)子函數(shù)集,以后上層模塊就能脫離硬件,調(diào)用子函數(shù)對(duì)硬件進(jìn)行操作[12]。</p><p><b> 結(jié) 論</b></p><p> 在這次用PDIUSBD12芯片實(shí)現(xiàn)US
97、B接口的設(shè)計(jì)中,我們先從了解USB1.1協(xié)議開始,隨后對(duì)PDIUSBDI2芯片進(jìn)行了解。文中研究了USB總線接口的應(yīng)用,提出了一種USB總線接口的應(yīng)用方案。該方案主要利用89S51和PDIUSBD12來實(shí)現(xiàn),因而結(jié)構(gòu)簡單、性能穩(wěn)定。其中主要工作是在對(duì)單片機(jī)AT89S51和PDIUSBD12芯片的了解的基礎(chǔ)之上首先完成硬件的設(shè)計(jì),然后再通過Keil C51編程,完成對(duì)固件的設(shè)計(jì)。使整個(gè)系統(tǒng)在硬件的基礎(chǔ)上有了相應(yīng)的軟件支持,最終實(shí)現(xiàn)USB接
98、口。實(shí)事證明USB1.1這種通用串行總線接口的確給使用帶來了極大的方便!該USB接口適合于高速數(shù)據(jù)采集系統(tǒng)與主機(jī)進(jìn)行數(shù)據(jù)通信,同時(shí)也可為便攜式系統(tǒng)提供方便、可靠的接口解決方案。</p><p><b> 致 謝</b></p><p> 這次畢業(yè)設(shè)計(jì)能順利完成,除了我自身的努力以外,更少不了身邊的同學(xué)和張老師的幫助與指導(dǎo)。為此,在這里我要對(duì)那些予以我?guī)椭睦蠋熀?/p>
99、同學(xué)表示衷心的感謝。</p><p> 本文是在xx翔教授和xx老師的悉心指導(dǎo)和嚴(yán)格要求下完成的,導(dǎo)師淵博的專業(yè)知識(shí),嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,誨人不倦的學(xué)者風(fēng)范,奮進(jìn)創(chuàng)新的科研精神都給我留下了深刻的印象, 將使我終身受益。在畢業(yè)設(shè)計(jì)論文即將完成之際,還要特別感謝xx老師在他繁忙的工作中,能對(duì)我設(shè)計(jì)中的每一個(gè)環(huán)節(jié),每一個(gè)步驟和方案設(shè)計(jì)及其格式都做了一一的審查、糾正和補(bǔ)充,在此謹(jǐn)向尊敬的xx老師表示衷心的感謝。</p
100、><p> 最后,衷心感謝在百忙之中抽出時(shí)間審閱本論文的專家教授。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 胡曉軍.USB接口開發(fā)技術(shù)[M] .西安:西安電子科技大學(xué)出版社,2005:36-48.</p><p> [2] 譚永宏,李高士.USB接口硬件設(shè)計(jì)方案分析及比較[J] .湖南科
101、技學(xué)院學(xué)報(bào),2007,28(9):91-94.</p><p> [3] 王成儒.USB2.0原理與工程開發(fā)[M].北京:國防工業(yè)出版社,2005:156-170.</p><p> [4] 鄧惠君.USB接口器件PDIUSBD12及其接口電路分析[J].科技資訊,2006,2(15):131-132.</p><p> [5] 廖頎,劉良福,肖士斌.單片機(jī)A
102、T89C52擴(kuò)展USB接口實(shí)現(xiàn)[J].科技廣場,2007,70(02):109-110.</p><p> [6] 張洪波,賈先德,江海河.單片機(jī)下直接讀寫U盤的設(shè)計(jì)[J].電子設(shè)計(jì)應(yīng)用,2005,27(8):100-102.</p><p> [7] 王楠.基于PDIUSBD12的USB格式通信[J].內(nèi)蒙古科技與經(jīng)濟(jì),2004,65(02):64-66.</p>&l
103、t;p> [8] 陳啟美,丁傳鎖.計(jì)算機(jī)USB接口技術(shù)[M].南京:南京大學(xué)出版社,2003:34-54.</p><p> [9] 董友才,陳洪亮,桑倩.基于PDIUSBD12的USB接口固件程序設(shè)計(jì)[J].電子測量技術(shù),2007,30(8):120-123.</p><p> [10] 黃煌,姜義成,林力.基于PDIUSBD12的USB接口設(shè)計(jì)及應(yīng)用[J].微計(jì)算機(jī)信息,2
104、007,23(4-2):292-293.</p><p> [11] E. V. Vetvitskii,A. V. Plotnikov,D. A. Prilutskii and S. V. Selishchev.Use of the USB Universal Serial Bus in computer medical systems [J].Biomedical Engineering,2005,34(4)
105、:167-172.</p><p> [12] R. A. Maragei,A. A. Okhritskii and D. A. Prilutskii.A Semiconductor Photostimulator for Electroencephalography with USB Bus Control [J] .Biomedical Engineering, 2004,38(3):158-161.<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于usb2.0的高速串行通信接口電路設(shè)計(jì)技術(shù)研究
- 基于verilog的fpga與usb2.0接口電路的設(shè)計(jì)
- usb2.0總線接口的設(shè)計(jì)與實(shí)現(xiàn)
- 基于usb2.0的配置接口電路軟硬件設(shè)計(jì)與實(shí)現(xiàn)
- usb2.0收發(fā)器高速模擬前端的電路設(shè)計(jì)
- usb2.0接口ip核的設(shè)計(jì)與開發(fā)
- usb2.0收發(fā)器物理層芯片電路設(shè)計(jì)
- usb2.0設(shè)備接口ip核的設(shè)計(jì)
- usb2.0設(shè)備接口ip核設(shè)計(jì)研究
- usb2.0收發(fā)器接口芯片設(shè)計(jì)
- usb2.0接口控制芯片的固件設(shè)計(jì)與實(shí)現(xiàn)
- 存儲(chǔ)測試系統(tǒng)中usb2.0接口的設(shè)計(jì)
- 采用usb2.0接口的圖像采集系統(tǒng)設(shè)計(jì)
- usb2.0中物理層接口的設(shè)計(jì)
- usb2.0接口系統(tǒng)的開發(fā)與研究
- usb2.0接口dsp圖像處理系統(tǒng)的設(shè)計(jì)
- 符合usb2.0規(guī)范的串行通信接口芯片設(shè)計(jì)
- 基于usb2.0的噴墨印刷機(jī)接口設(shè)計(jì)
- 應(yīng)用于usb2.0的高速時(shí)鐘數(shù)據(jù)恢復(fù)電路設(shè)計(jì)
- 基于usb2.0接口語音采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論