<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>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > SPCE061A單片機在USB通訊中的應用

SPCE061A單片機在USB通訊中的應用

作者: 時(shí)間:2004-12-07 來(lái)源:網(wǎng)絡(luò ) 收藏
(Universal Serial Bus)是通用串行總線(xiàn)。最初是由Compaq、Digital、IBM、Intel、Microsoft、NEC以及Northern Telecom(北方電信公司)七家公司共同開(kāi)發(fā)的一種新的外設連接技術(shù)。諸家公司聯(lián)合提出這一新型總線(xiàn),是為了解決PC機外圍設備的擁擠和提高設備的傳輸速度。目前普遍采用的1.1主要應用在中低速外部設備上,它提供的傳輸速度有低速1.5Mbps和全速 12Mbps兩種??鄢糜诳偩€(xiàn)狀態(tài)、控制和錯誤監測等的數據傳輸,USB的最大理論傳輸速率仍達1.2Mb/s或9.6Mb/s,遠高于一般的串行總線(xiàn)接口?,F有的USB外設有:數字照相機、音箱、游戲桿、調制解調器、鍵盤(pán)、鼠標、掃描儀、打印機、光驅、軟驅等。1998年后隨著(zhù)微軟在Windows98中內置了對USB接口的支持模塊,加上 USB設備的日漸增多,USB逐步走進(jìn)了實(shí)用階段、以驚人的速度發(fā)展。

由于現在市面上新出一款單片機,它非常有特色。本文主要介紹,利用和USB接口芯片PDIUSBD12來(lái)開(kāi)發(fā)USB設備。單片機由臺灣凌陽(yáng)公司制造,SPCE061A單片機款式新穎,而且性?xún)r(jià)比極高。 SPCE061A在2.6V~3.6V工作電壓范圍內的工作速度范圍為0.32MHz~49.152MHz;2K字SRAM和32K字FLASH僅占一頁(yè)存儲空間;32位可編程的多功能I/O端口;兩個(gè)16位定時(shí)器/計數器;低電壓復位/監測功能;8通道10位模/數轉換輸入功能并具有內置自動(dòng)增益控制功能的麥克風(fēng)輸入方式;雙通道10位DAC方式的音頻輸出功能;指令系統提供具有較高運算速度的16位16位的乘法運算指令和內積運算指令,為其應用增添了DSP功能.....。較高的處理速度使SPCE061A能夠非常容易地、快速地處理復雜的數字信號。開(kāi)發(fā)數字聲音和語(yǔ)音識別產(chǎn)品,選擇SPCE061A是一種最經(jīng)濟的選擇。

本文所設計的USB設備系統的功能比較簡(jiǎn)單,它主要實(shí)現SPCE061A與PC機之間的簡(jiǎn)單通訊,是SPCE061A單片機的一種基本應用。這篇文章的主要目的是希望能夠給讀者起拋磚引玉的作用,開(kāi)發(fā)者可以在這個(gè)基礎上修改程序,輕松實(shí)現USB設備系統開(kāi)發(fā)。本文所設計的系統具有三種簡(jiǎn)單功能:1.檢測USB外設是否連接成功。 2.通過(guò)點(diǎn)擊PC端的應用軟件上的按鈕,可以點(diǎn)亮或熄滅與SPCE061A單片機IO口相連的LED燈。3.應用軟件發(fā)送任意字符串到SPCE061A,SPCE061A接受、回送字符串,應用軟件接受到字符串時(shí),能夠將它顯示出來(lái)。

4.1系統組成

本USB通訊系統,主要由凌陽(yáng)十六位單片機SPCE061A,Philips公司的USB接口芯片PDIUSBD12組成,系統框圖如圖3.10所示。

這個(gè)系統的基本工作流程為:PC端應用軟件,發(fā)送ID0(為了使主機和設備方能同步,該系統定義了三個(gè)握手ID:ID0,ID1,ID2。)給PDIUSBD12,PDIUSBD12接收數據,產(chǎn)生中斷通知SPCE061A單片機讀取數據。SPCE061A如果讀取的數據為ID0,那么發(fā)送ID0給PDIUSBD12;PC機端應用軟件發(fā)送完數據后,讀取外設發(fā)送的數據,如果讀到的數據為ID0,那么彈出一個(gè)提示框,提示USB外設連接成功。此后PC機端的應用軟件和USB外設之間的通訊都是通過(guò)ID來(lái)進(jìn)行的。

4.2硬件設計

系統電路原理圖如圖3.11所示。其中PDIUSBD12用作實(shí)現PC機與SPCE061A單片機進(jìn)行通信的高速通用并行接口。USB協(xié)議層的相關(guān)通訊協(xié)議通過(guò)PDIUSBD12來(lái)實(shí)現,它由硬件實(shí)現不需要固件的參與。SPCE061A單片機的主要作用:1.windows系統配置、枚舉USB外設時(shí),SPCE061A發(fā)送、接收相關(guān)的USB設備信息。2. windows系統配置、枚舉USB外設成功后,根據接收到的ID,進(jìn)行相應的操作,起控制作用。

SPCE061A內嵌32K的FLASH的存儲空間、14個(gè)中斷源,它在2.6~3.6V的工作電壓范圍內的工作速率范圍為0.32MHz~49MHz,這使得它有較高的速率和存儲空間來(lái)應付USB通訊。單片機SPCE061A與PDIUSBD12之間通訊采用中斷方式,數據交換主要是靠SPCE061A單片機給PDIUSBD12發(fā)命令和數據來(lái)實(shí)現的。

PDIUSBD12通過(guò)這種方式來(lái)識別命令和數據:在A(yíng)LE信號的下降沿時(shí)鎖定地址,如果是奇地址,那么它接收的是命令;如果是偶地址,那么它發(fā)送或接收的是數據。PDIUSBD12的中斷寄存器只要不為0,它的中斷輸出引腳(INT_N)就保持低電平,所以系統初始化時(shí)可將SPCE061A單片機的外部中斷(下降沿觸發(fā))引腳IOB2設置為帶上拉電阻輸入。當PDIUSBD12的中斷寄存器由零變?yōu)榉橇銜r(shí),馬上觸發(fā)SPCE061A的外部中斷,SPCE061A單片機在中斷處理時(shí),讀取PDIUSBD12芯片的狀態(tài)寄存器以清除中斷寄存器中對應位,使得中斷引腳變?yōu)楦唠娖?。這樣使得SPCE061A可以在退出中斷后,可隨時(shí)響應外部中斷。

圖3.11中的LED1燈非常有用,它是PDIUSBD12的GOODLINK指示燈,在系統枚舉時(shí)會(huì )根據通信的狀況間歇閃爍,當PDIUSBD12被枚舉和配置成功后,將一直點(diǎn)亮。隨后在USB通信時(shí)會(huì )閃爍,這對調試非常有用。

4.3軟件設計

USB設備的軟件設計主要包括兩部分:一、USB設備端的單片機軟件,主要完成USB協(xié)議處理與數據交換。二、PC端的程序,由USB驅動(dòng)程序和用戶(hù)服務(wù)程序兩部分組成,用戶(hù)服務(wù)程序通過(guò)USB驅動(dòng)程序通信,由系統完成USB協(xié)議的處理與數據傳輸。

該系統單片機端的軟件流程如圖3.12所示。SPCE061A單片機控制程序由三部分組成:第一、初始化SPCE061A和PDIUSBD12。 第二、主循環(huán)部分,主要任務(wù)是判斷標志位是否改變,如果改變則執行相應的程序,否則一直循環(huán)等待中斷。第三、中斷服務(wù)程序,主要任務(wù)是接收、發(fā)送數據,設置相應的標志位。主機首先要發(fā)令牌包給PDIUSBD12,PDIUSBD12接收到令牌包后就給單片機發(fā)中斷,單片機進(jìn)入中斷服務(wù)程序,首先讀PDIUSBD12的中斷寄存器,判斷 USB令牌包的類(lèi)型,然后執行相應的操作。因此,單片機程序主要就是中斷服務(wù)程序的編寫(xiě)。在 USB單片機程序中要完成對各種令牌包的響應,其中比較難處理的是SETUP包,主要是端點(diǎn)0的編程。

系統初始化部分包括系統時(shí)鐘,IO口,中斷設置(開(kāi)外部中斷),PDIUSBD12芯片軟件復位、初始化。該主流程的核心部分是協(xié)議層的請求處理,它關(guān)系到PC機枚舉USB外設成功與否。所以在調試單片機程序的時(shí)候,要特別注意Window對USB設備的枚舉順序。如果枚舉成功,主機將找到新的設備,提示安裝驅動(dòng)程序;否則找到未知設備,USB外設不可用。

中斷服務(wù)子程序的編寫(xiě),采用混合編程,也就是說(shuō),在匯編程序中調用C函數,這樣可以提高代碼的可讀性。中斷服務(wù)子程序的流程如圖3.13所示,有好幾個(gè)地方,只做清中斷處理,這是因為有些端點(diǎn)沒(méi)有用到。它只作為一個(gè)程序接口,為擴展系統功能用。

目前編寫(xiě)主機的USB驅動(dòng)程序主要采用三種方法。第一,使用Windows DDK來(lái)編寫(xiě)驅動(dòng)程序,難度很大,但是非常靈活;第二,使用DriverStudio開(kāi)發(fā)工具來(lái)生成驅動(dòng)程序;第三,使用Windriver開(kāi)發(fā)工具來(lái)生成驅動(dòng)程序。用后面兩種方法來(lái)開(kāi)發(fā)驅動(dòng)程序的周期短,但是不靈活。本系統的驅動(dòng)程序采用DDK編寫(xiě),用戶(hù)服務(wù)程序能夠通過(guò)驅動(dòng)程序與PDIUSBD12芯片中任意端點(diǎn)通訊,因此編寫(xiě)用戶(hù)服務(wù)程序也是非常靈活的。

4.4總結

通常在開(kāi)發(fā)USB設備產(chǎn)品,需要編寫(xiě)實(shí)時(shí)性、程序可讀性要求很高的代碼,這時(shí)就需要采用混合編程。而凌陽(yáng)的m’nSP IDE具有良好的編程環(huán)境,它可以很輕松、很容易進(jìn)行混合編程(在C程序中調用匯編程序,在匯編程序中調用C程序)。

在該系統中,只用到了SPCE061A單片機的外部中斷、IO口資源。其實(shí)SPCE061A單片機的資源很豐富,它除了具有普通單片機功能以外,還具有語(yǔ)音識別、語(yǔ)音錄放等功能。因此這個(gè)系統只是一個(gè)雛形,SPCE061A還能夠實(shí)現比較復雜的功能,比如使用SPCE061A的錄音功能進(jìn)行錄音并將語(yǔ)音數據存儲到外擴的FLASH,然后通過(guò)USB通訊,將語(yǔ)音數據送到PC機上播放,同樣也可以將PC機上壓縮后的語(yǔ)音文件下載到SPCE061A上進(jìn)行播放。這樣可以很容易使用SPCE061A可以開(kāi)發(fā)錄音筆、電話(huà)記錄儀等USB設備。因此利用SPCE061A開(kāi)發(fā)USB設備產(chǎn)品的前景是非常廣闊的。



關(guān)鍵詞: SPCE 061A USB

評論


相關(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>