第11章 USB總線模塊_第1頁(yè)
第11章 USB總線模塊_第2頁(yè)
第11章 USB總線模塊_第3頁(yè)
第11章 USB總線模塊_第4頁(yè)
第11章 USB總線模塊_第5頁(yè)
已閱讀5頁(yè),還剩76頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第11章USB總線模塊

何賓2011.12本章內(nèi)容本章主要是介紹PSoC3內(nèi)的USB總線模塊,其內(nèi)容主要包括:USB總線模塊概述、USB模塊結(jié)構(gòu)、USB模塊工作條件、邏輯傳輸模式、PS/2和CMOSI/O模式、USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)。USB總線模塊是PSoC3所提供的一個(gè)重要功能單元,通過(guò)本章內(nèi)容的學(xué)習(xí),不僅能了解和掌握USB總線模塊的工作原理,還能掌握使用PSoC3實(shí)現(xiàn)USB總線模塊通信的方法。PSoC3/5數(shù)字子系統(tǒng)

--USB總線模塊

PSoCUSB作為一個(gè)USB設(shè)備和一個(gè)主機(jī)進(jìn)行通信。USB模塊作為PSoC內(nèi)的一個(gè)固定功能的設(shè)備。只支持全速通信(12Mbps),并且和USB2.0協(xié)議兼容。USB設(shè)備設(shè)計(jì)成即插即用,也支持熱插拔。PSoC3/5數(shù)字子系統(tǒng)

--USB總線模塊

USB總線模塊的特點(diǎn)有:與USB2.0規(guī)范兼容;支持全速外設(shè),最高速率到12Mbps;支持8個(gè)數(shù)據(jù)端點(diǎn)和1個(gè)控制端點(diǎn);支持四種類型的傳輸-塊(批量)數(shù)據(jù)傳輸,中斷傳輸,同步傳輸和控制傳輸;支持熱插拔;支持兩種類型的邏輯傳輸模式:存儲(chǔ)轉(zhuǎn)發(fā)模式和直通模式;差分信號(hào)(D+和D-)輸出;存儲(chǔ)轉(zhuǎn)發(fā)模式下支持最大的包為512個(gè)字節(jié),直通模式的同步傳輸支持最大的包為1023個(gè)字節(jié);支持P2/2和CMOS信號(hào);操作電壓范圍為3.3V和5V;USB總線模塊

--USB模塊結(jié)構(gòu)

下圖給出了USB模塊的結(jié)構(gòu)圖,該模塊由串行接口引擎(SerialInterfaceEngine,SIE)和仲裁器構(gòu)成。圖USB模塊的結(jié)構(gòu)圖USB總線模塊

--USB模塊結(jié)構(gòu)(串行接口引擎SIE)

SIE用于處理譯碼,以及在發(fā)送和接收時(shí),創(chuàng)建數(shù)據(jù)和控制包。在接收時(shí),SIE將USB的位流解碼成USB的包;在發(fā)送時(shí),創(chuàng)建USB的位流。下面給出SIE的主要特性:兼容USB2.0規(guī)范;支持1個(gè)設(shè)備地址;支持8個(gè)數(shù)據(jù)端點(diǎn)和1個(gè)控制端點(diǎn);每個(gè)端點(diǎn)支持中斷;在48MHz時(shí)鐘下全速運(yùn)行;在控制端點(diǎn)集成一個(gè)8字節(jié)緩沖區(qū);USB總線模塊

--USB模塊結(jié)構(gòu)(串行接口引擎SIE)這個(gè)模塊的寄存器主要用于配置數(shù)據(jù)端點(diǎn)操作和控制端點(diǎn)的數(shù)據(jù)緩沖,寄存器也控制每個(gè)端點(diǎn)可用的中斷。

SIE在每次傳輸結(jié)束后產(chǎn)生中斷。使用USB_SIE_INT_EN寄存器可以使能/禁止端點(diǎn)的中斷。通過(guò)USB_SIE_INT_SR寄存器可以得到端點(diǎn)的中斷狀態(tài)。USB總線模塊

--USB模塊結(jié)構(gòu)(串行接口引擎SIE)SIE寄存器CNT0和CNT1保持著每個(gè)端點(diǎn)的計(jì)數(shù)值,這個(gè)計(jì)數(shù)值表示USB傳輸?shù)臄?shù)據(jù)字節(jié)的個(gè)數(shù)。在輸出(OUT)端點(diǎn)情況下,固件程序確定端點(diǎn)所能接收到的最大的字節(jié)。SIE用所接收到的字節(jié)數(shù)更新寄存器。在輸入(IN)端點(diǎn)情況下,它保持將要發(fā)送數(shù)據(jù)的字節(jié)數(shù)。USB_SIE_EPx_CR0寄存器保持每個(gè)端點(diǎn)的模式值。模式值決定了USB模塊對(duì)主機(jī)的響應(yīng)。表5給出了USB_SIE_EPx_CR0寄存器MODE位域的值。USB總線模塊

--USB模塊結(jié)構(gòu)(串行接口引擎SIE)模式編碼SETUPINOUT描述Disable0000忽略忽略忽略忽略所有USB端點(diǎn)的流量NAKIN/OUT0001接受不響應(yīng)不響應(yīng)不接收IN和OUT令牌StatusOUTonly0010接受阻止檢查設(shè)置該模式時(shí),接受一個(gè)SETUP令牌。在IN令牌的情況下,阻止;在OUT令牌的情況下,用零長(zhǎng)度的包響應(yīng)。用于控制端點(diǎn)。STALLIN/OUT0011接受阻止阻止設(shè)置該模式時(shí),接受一個(gè)SETUP令牌。在IN和OUT令牌的情況下,阻止。用于控制端點(diǎn)。Reserved0100忽略忽略忽略ISOOUT0101忽略忽略一直同步OUTStatusINonly0110接受TX0字節(jié)阻止設(shè)置該模式時(shí),接受一個(gè)SETUP令牌,在OUT令牌的情況下,阻止;在IN令牌的情況下,用零長(zhǎng)度的包響應(yīng)。用于控制端點(diǎn)。ISOIN0111忽略TX計(jì)數(shù)忽略同步INNAKOUT1000忽略忽略不響應(yīng)送NAK握手給OUT令牌ACKOUT(STALL=0)1001忽略忽略響應(yīng)向一個(gè)OUT令牌發(fā)出ACK握手時(shí),SIE修改這個(gè)模式到1000。ACKOUT(STALL=1)1001忽略忽略阻止阻止OUT傳輸Reserved1010忽略忽略忽略ACKOUT-STATUSIN1011接受TX0字節(jié)響應(yīng)響應(yīng)(ACK)OUT令牌,或者為IN令牌發(fā)送零個(gè)長(zhǎng)度的數(shù)據(jù)包。NAKIN1101忽略不響應(yīng)忽略為IN令牌送NAK握手信號(hào)ACKIN(STALL=0)1101忽略TX計(jì)數(shù)忽略當(dāng)接收到一個(gè)IN數(shù)據(jù)的ACK握手時(shí),SIE修改這個(gè)模式到1100。ACKIN(STALL=1)1101忽略阻止忽略阻止IN傳輸Reserved1110忽略忽略忽略ACKIN-StatusOUT1111接受TX計(jì)數(shù)檢查對(duì)IN數(shù)據(jù)或者狀態(tài)OUT進(jìn)行反應(yīng)。USB總線模塊

--USB模塊結(jié)構(gòu)(串行接口引擎SIE)

SIE也報(bào)告發(fā)送錯(cuò)誤,USB_SIE_EPx_CR0寄存器的比特為“err_in_txn“表示錯(cuò)誤的發(fā)生。當(dāng)設(shè)置該位時(shí),當(dāng)它接收到來(lái)自主機(jī)的其它IN令牌時(shí),硬件自動(dòng)重發(fā)相同的數(shù)據(jù)。這種重發(fā)只出現(xiàn)在存儲(chǔ)轉(zhuǎn)發(fā)模式下。在直通模式下,通過(guò)固件讀取該位來(lái)確定重發(fā)數(shù)據(jù)。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)模塊仲裁器用于處理端點(diǎn)對(duì)SRAM存儲(chǔ)器訪問。CPU和SIE都可以訪問SRAM存儲(chǔ)器.仲裁器負(fù)責(zé)處理CPU和SIE訪問SRAM的仲裁。仲裁器包含下面的模塊:SIE接口模塊;CPU接口模塊;存儲(chǔ)器接口;DMA引擎;仲裁邏輯;同步模塊;USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)仲裁器寄存器用于處理端點(diǎn)的配置,讀端點(diǎn)地址和寫端點(diǎn)地址。它也用于配置每個(gè)端點(diǎn)所要求的邏輯傳輸類型。每個(gè)端點(diǎn)支持中斷。仲裁器只有一個(gè)中斷線用于中斷控制器。仲裁器寄存器處理使能/禁止端點(diǎn)的中斷和保持中斷狀態(tài)。仲裁器也負(fù)責(zé)存儲(chǔ)器的管理(比如在數(shù)據(jù)端點(diǎn)共享512字節(jié)的SRAM)。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)1.SIE接口模塊該模塊負(fù)責(zé)處理和SIE模塊的所有交易。SIE從SRAM讀數(shù)據(jù),然后發(fā)送到主機(jī)。類似的,將來(lái)自主機(jī)的數(shù)據(jù)寫到SRAM中。在SIE接口登記這些請(qǐng)求,模塊來(lái)處理它。2.CPU接口模塊這個(gè)模塊處理和CPU的所有交易。CPU提出為每個(gè)端點(diǎn)讀/寫SRAM的請(qǐng)求。這些請(qǐng)求在CPU接口模塊被登記,然后由模塊來(lái)處理。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)

3.存儲(chǔ)器接口存儲(chǔ)器接口用于控制USB塊和SRAM存儲(chǔ)單元之間的接口。最大支持512個(gè)字節(jié)(256x16位)的存儲(chǔ)器容量。這是USB專用的存儲(chǔ)器,在USB和存儲(chǔ)器單元之間的所有的控制和數(shù)據(jù)線,包括:數(shù)據(jù)輸入線、數(shù)據(jù)輸出線和使能線,地址線和方向控制線,是由存儲(chǔ)器接口來(lái)管理的。SIE和CPU都可以請(qǐng)求訪問存儲(chǔ)器。SIE接口模塊和CPU接口模塊用來(lái)處理這些請(qǐng)求。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)4.DMA接口當(dāng)配置DMA后,DMA接口負(fù)責(zé)在DMA和USB之間的數(shù)據(jù)來(lái)回傳輸。這個(gè)模塊支持用于每個(gè)數(shù)據(jù)端點(diǎn)的DMA請(qǐng)求。DMA的行為取決于在配置寄存器中所配置的邏輯傳輸模式。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)5.仲裁器邏輯這是仲裁器的主要模塊。用于仲裁所有發(fā)生在仲裁器的交易。它仲裁CPU,DMA和SIE對(duì)存儲(chǔ)器和寄存器的訪問。這個(gè)模塊也處理存儲(chǔ)器管理。存儲(chǔ)器管理可以“手工”或者“自動(dòng)”。手工模式下,固件處理讀寫地址的操作。在自動(dòng)模式下,該模塊處理所有的存儲(chǔ)器管理。這個(gè)模塊處理緩沖區(qū)大小的分配(取決于USB_BUF_SIZE的設(shè)置)。它也處理公共存儲(chǔ)區(qū)域。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)這個(gè)模塊也處理每個(gè)端點(diǎn)的中斷請(qǐng)求,每個(gè)端點(diǎn)的中斷來(lái)自:DMA授權(quán)(DMAGrant)、輸入緩沖區(qū)滿、緩沖區(qū)上溢、緩沖區(qū)下溢。6.同步化模塊USB模塊使用兩個(gè)時(shí)鐘:系統(tǒng)時(shí)鐘和USB時(shí)鐘。仲裁器使用系統(tǒng)時(shí)鐘,SIE和OsClock模塊使用USB時(shí)鐘。由于這是兩個(gè)不同的時(shí)鐘,因此要求同步,這個(gè)模塊負(fù)責(zé)處理同步。USB總線模塊

--USB模塊工作條件

USB模塊的工作條件包括:工作頻率;工作電壓;收發(fā)器;下面進(jìn)行詳細(xì)的說(shuō)明。USB總線模塊

--USB模塊工作條件

1.工作頻率最小的時(shí)鐘頻率為24MHz,用于全速操作的USB時(shí)鐘48MHz(0.25%的誤差)。到USB的時(shí)鐘稱為clk_usb,這個(gè)時(shí)鐘來(lái)自IMOCLK,IMOCLK*2,PLL或者DSI時(shí)鐘。

USB的OsClock模塊用來(lái)確定USB包的頻率。USB總線模塊

--USB模塊工作條件

2.工作電壓標(biāo)準(zhǔn)電壓范圍4.35V-5.25V;低電壓范圍3.15V-3.45V。USB使用3.3V工作電壓。該模塊使用數(shù)字電壓Vccd。支持內(nèi)部的管理器用于電壓的管理。在標(biāo)準(zhǔn)電壓圍內(nèi),電壓通過(guò)內(nèi)部的管理器調(diào)整到3.3V。

USB_USB_CR1寄存器的reg_enable將用于控制電源管理器的使用。USB總線模塊

--USB模塊工作條件

3.收發(fā)器

USB模塊包括收發(fā)器。主機(jī)和USB之間使用的是差分信號(hào)。接收器接收差分信號(hào),然后轉(zhuǎn)換為單端信號(hào)。給到

USB模塊的單端信號(hào)電壓范圍為1.55V-1.95V。發(fā)送器將單端信號(hào)轉(zhuǎn)換成差分信號(hào),并且傳送給主機(jī)。差分信號(hào)給到“上游設(shè)備”,電壓范圍0V-3.3V。收發(fā)器也支持PS/2信號(hào),能在0V-5V范圍內(nèi)接收/發(fā)送PS/2信號(hào)。收發(fā)器有上拉電阻支持PS/2信號(hào)。除了PS/2信號(hào)外,收發(fā)器還支持CMOS信號(hào)。使用USB_USBIO_CR1和USB_USBIO_CR2寄存器來(lái)選擇PS/2和CMOS模式。USB總線模塊

--USB模塊工作條件能通過(guò)手工方式強(qiáng)迫發(fā)送器發(fā)送信號(hào)。寄存器USB_USBIO_CR0用于手工發(fā)送信號(hào)。下面給出一個(gè)例子:

1)當(dāng)使能手工發(fā)送時(shí),寄存器配置成發(fā)送單端0信號(hào)(即,D+和D-都為低);

2)可配置發(fā)送USB信號(hào),USB信號(hào)有兩類:

D+低,D-高=J;D+高,D-低=K;

3)寄存器有一位用于讀取信號(hào)的電平,該位能確認(rèn)D+<D-還是D+>D-USB總線模塊

--邏輯傳輸模式

PSoC的USB模塊支持兩種類型的邏輯傳輸模式,即存儲(chǔ)轉(zhuǎn)發(fā)和直通模式。邏輯傳輸使用每個(gè)端點(diǎn)的寄存器設(shè)置進(jìn)行配置。任何一種邏輯傳輸模式都支持三種數(shù)據(jù)傳輸(中斷、塊、同步)。邏輯傳輸模式是存儲(chǔ)器管理與DMA配置的結(jié)合。邏輯傳輸模式和USB模塊內(nèi)的數(shù)據(jù)傳輸有關(guān)(比如:為端點(diǎn)讀/寫SRAM存儲(chǔ)單元)。它并不代表設(shè)備和主機(jī)之間的傳輸方法。USB支持兩種基本的邏輯傳輸模式:存儲(chǔ)轉(zhuǎn)發(fā)和直通模式。表5.3給出了更詳細(xì)的USB的傳輸模式。USB總線模塊

--邏輯傳輸模式USB傳輸模式特點(diǎn)存儲(chǔ)轉(zhuǎn)發(fā)模式直通模式SRAM的使用要求更多的存儲(chǔ)器要求較少的存儲(chǔ)器SRAM的管理手工自動(dòng)SRAM的共享在端點(diǎn)間共享512字節(jié)SRAM,通過(guò)固件共享模塊自動(dòng)的為每個(gè)端點(diǎn)分配較少的共享存儲(chǔ)器。剩余的存儲(chǔ)器用于“公共區(qū)域”。這個(gè)公共區(qū)域可以用于傳輸。IN命令在收到IN命令前,完整的包出現(xiàn)在SRAM中只有收到SRAMIN命令時(shí),存儲(chǔ)器才填充數(shù)據(jù)。當(dāng)要有足夠的可用數(shù)據(jù)時(shí),數(shù)據(jù)送給主機(jī)(基于DMA傳輸),而不需要等待填充完整的數(shù)據(jù)USB總線模塊

--邏輯傳輸模式特點(diǎn)存儲(chǔ)轉(zhuǎn)發(fā)模式直通模式OUT命令在OUT命令下,整個(gè)包寫到SRAM中,當(dāng)整個(gè)數(shù)據(jù)可用時(shí),從SRAM存儲(chǔ)器復(fù)制到USB設(shè)備中。等待足夠的字節(jié)(取決于DMA配置)寫到SRAM存儲(chǔ)器。一旦有足夠的字節(jié)時(shí),立即從SRAM存儲(chǔ)器復(fù)制到USB設(shè)備中數(shù)據(jù)傳輸當(dāng)所有字節(jié)寫到存儲(chǔ)器里,則傳輸數(shù)據(jù)當(dāng)足夠字節(jié)可用時(shí),傳輸數(shù)據(jù)。不需要等待填充整個(gè)數(shù)據(jù)包DMA類型無(wú)DMA模式和手工DMA模式只有自動(dòng)DMA模式支持傳輸類型適合于中斷和塊傳輸適合于同步傳輸U(kuò)SB傳輸模式USB總線模塊

--邏輯傳輸模式(存儲(chǔ)轉(zhuǎn)發(fā)模式)

1.非DMA訪問如圖(a)所示,給出了非DMA訪問的IN(CPU寫和SIE讀)交易的流程圖。如圖(b)所示,給出了非DMA訪問的OUT(CPU讀和SIE寫)交易的流程圖。USB總線模塊

--邏輯傳輸模式(存儲(chǔ)轉(zhuǎn)發(fā)模式)2.手工DMA訪問這個(gè)模式要求配置DMA控制器。這個(gè)模式和非DMA訪問類似,只不過(guò)是DMA執(zhí)行包的寫/讀操作。通過(guò)設(shè)置ARB_EPx_CFG寄存器的DMA_CFG位來(lái)產(chǎn)生一個(gè)端點(diǎn)的DMA請(qǐng)求。當(dāng)DMA服務(wù)被確認(rèn)和執(zhí)行(DMA_GNT),可以通過(guò)編程產(chǎn)生一個(gè)仲裁器中斷??梢允褂脝位蚨郉MA周期完成傳輸。當(dāng)每個(gè)DMA周期完成后,產(chǎn)生仲裁器中斷。類似的,當(dāng)所有的數(shù)據(jù)字節(jié)都寫到存儲(chǔ)器時(shí),產(chǎn)生仲裁器中斷,同時(shí)設(shè)置IN_BUF_FULL位。USB總線模塊

--邏輯傳輸模式(存儲(chǔ)轉(zhuǎn)發(fā)模式)如圖(a)所示,給出了手工DMA訪問的IN(CPU寫和SIE讀)交易的流程圖。如圖(b)所示,給出了手工DMA訪問的OUT(CPU讀和SIE寫)交易的流程圖。USB總線模塊

--邏輯傳輸模式(直通模式)CPU編程初始化用于IN/OUT包所要求初始化緩沖區(qū)的大小,并且通知端點(diǎn)仲裁器模塊詳細(xì)的配置信息。塊然后控制存儲(chǔ)器的分配和處理所有存儲(chǔ)器的指針。在存儲(chǔ)器分配過(guò)程中,每個(gè)活動(dòng)的IN端點(diǎn)(EP_ACTIVE和EP_TYPE寄存器設(shè)置)分配BUF_SIZE寄存器所指定的一小塊存儲(chǔ)空間。剩余的存儲(chǔ)器留下作為“公共區(qū)域”,用于其它所有的端點(diǎn)。USB總線模塊

--邏輯傳輸模式(直通模式)

在這種模式下,需要的存儲(chǔ)器是較少的,適合于全速同步傳輸,最多1023個(gè)字節(jié)。當(dāng)主機(jī)發(fā)送IN命令時(shí),設(shè)備使用在專用存儲(chǔ)器區(qū)域的數(shù)據(jù)進(jìn)行響應(yīng)。同時(shí)為該EP更多的數(shù)據(jù)產(chǎn)生一個(gè)DMA請(qǐng)求。這個(gè)數(shù)據(jù)填充公共區(qū)域。不需要等待填充整個(gè)數(shù)據(jù)包。只等到USB_DMA_THRES_MSB和USB_DMA_THRES寄存器指定的在SRAM內(nèi)可用的數(shù)據(jù)數(shù)量,然后從公共區(qū)傳輸數(shù)據(jù)。USB總線模塊

--邏輯傳輸模式(直通模式)類似的,當(dāng)接收到一個(gè)OUT命令時(shí),用于輸出端點(diǎn)的數(shù)據(jù)寫道了公共區(qū)。一旦公共區(qū)的數(shù)據(jù)數(shù)量大于USB_DMA_THRES_MSB和USB_DMA_THRES寄存器指定的在SRAM內(nèi)可用的數(shù)據(jù)數(shù)量時(shí),仲裁器初始化到PHUB的DMA請(qǐng)求,并且數(shù)據(jù)寫道設(shè)備中。設(shè)備不需要等待填滿公共區(qū)。USB總線模塊

--邏輯傳輸模式(直通模式)這個(gè)模式要求配置USB_DMA_THRES_MSB和USB_DMA_THRES寄存器。類似的,必須配置PHUB寄存器用于BURSCNT的值。BURSCNT的值總是和DMA_THRES寄存器中設(shè)置的值相等。當(dāng)傳輸數(shù)據(jù)包的最后一個(gè)字節(jié)時(shí),向PHUB發(fā)送Termin信號(hào)。除了DMA寄存器外,該模式還需要配置用于IN和OUT的BUF_SIZE寄存器,EP_ACTIVE和EP_TYPE寄存器。USB總線模塊

--邏輯傳輸模式(直通模式)如圖(a)所示,給出了直通模式下的IN(CPU寫和SIE讀)交易的流程圖。如圖(b)所示,給出了直通模式下OUT(CPU讀和SIE寫)交易的流程圖。USB總線模塊

--邏輯傳輸模式(控制端點(diǎn)的邏輯傳輸)控制端點(diǎn)有一個(gè)特殊的傳輸模式。該傳輸模式不需要共享512個(gè)字節(jié)的存儲(chǔ)器,而是有一個(gè)專用的8字節(jié)的寄存器緩沖區(qū)。如圖(a)所示,給出了控制端點(diǎn)邏輯傳輸?shù)腎N(CPU寫和SIE讀)交易的流程圖。如圖(b)所示,給出了控制端點(diǎn)邏輯傳輸?shù)腛UT(CPU讀和SIE寫)交易的流程圖。USB總線模塊

--邏輯傳輸模式(PS/2和CMOSI/O模式)

USB收發(fā)器能發(fā)送其它信號(hào)電平。在發(fā)送器端點(diǎn)使用上拉電阻,能使用而外的信號(hào)電平。配置寄存器USB_USBIO_CR1和USB_USBIO_CR2得到不同的信號(hào)電平。在USBIO_CR2寄存器的”test_res”將發(fā)送器處于上拉模式。USBIO_CR1寄存器的I/O模式將使USB處理USB模式或者驅(qū)動(dòng)模式。當(dāng)處于驅(qū)動(dòng)模式下,禁止USB信號(hào),DMI和DPI位用于驅(qū)動(dòng)D-,D+。這兒有兩個(gè)不同的驅(qū)動(dòng)模式。在CMOS驅(qū)動(dòng)模式下,D+和DMI關(guān)聯(lián),D-和DPI關(guān)聯(lián)。在開漏模式下,上拉電阻起作用。在這種狀態(tài)下,當(dāng)DPI和DMI位設(shè)置為高時(shí),D+和D-處于高阻狀態(tài)。USB總線模塊

--邏輯傳輸模式(PS/2和CMOSI/O模式)獨(dú)立于驅(qū)動(dòng)模式,可以在Vdd和D+,D-之間接上拉電阻(使用p2puen位)。支持一個(gè)內(nèi)部的1.5k?的上拉電阻,通過(guò)USBIO_CR1寄存器來(lái)使用這個(gè)上拉電阻。USBIO_CR1寄存器也用來(lái)輪詢D+和D-的狀態(tài)。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理目前,計(jì)算機(jī)上的RS232和PS2端口絕大多數(shù)都被USB端口取代。而且,越來(lái)越多的USB設(shè)備出現(xiàn)在市場(chǎng)上。對(duì)USB設(shè)備的建立、配置和使用步驟,是USB設(shè)備設(shè)計(jì)者比較頭疼的事情。但實(shí)際上USB設(shè)備是很容易配置和使用的。人體接口設(shè)備(HumanInterfaceDevice,HID)是一種和USB連接的簡(jiǎn)單接口,有很多令人感興趣的應(yīng)用。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(人體接口概述)

在日常生活中,經(jīng)常見到HID的應(yīng)用,典型的是和計(jì)算機(jī)連接的鍵盤和鼠標(biāo)。正如HID這個(gè)名字所描述的那樣,它是一個(gè)設(shè)備,用來(lái)在人和設(shè)備(計(jì)算機(jī))之間創(chuàng)建一個(gè)接口。由接口描述符實(shí)現(xiàn)將一個(gè)設(shè)備定義成HID。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(人體接口概述)描述符以結(jié)構(gòu)化的形式提供了,連接到主機(jī)設(shè)備的相關(guān)信息。當(dāng)把一個(gè)USB設(shè)備插入計(jì)算機(jī)時(shí),計(jì)算機(jī)(主機(jī))通過(guò)USB描述符表要求設(shè)備的相關(guān)信息。通過(guò)接口描述符,計(jì)算機(jī)知道所連接的設(shè)備是HID。很多時(shí)候,主機(jī)要求一個(gè)設(shè)備所搜集數(shù)據(jù)的數(shù)據(jù)報(bào)告。為了理解這些信息,一個(gè)報(bào)告描述符用來(lái)定義HID報(bào)告內(nèi)的數(shù)據(jù)格式,以及如何使用這些數(shù)據(jù)。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(人體接口概述)下面給出的一個(gè)鼠標(biāo)的工程,在這個(gè)工程中,設(shè)備報(bào)告按鍵和X/Y移動(dòng)的信息。這個(gè)信息以主機(jī)能理解和使用的格式傳遞給主機(jī)。在報(bào)告描述符中,聲明了鼠標(biāo)數(shù)據(jù)的結(jié)構(gòu)和格式。主機(jī)周期性的輪詢?cè)O(shè)備數(shù)據(jù);如果設(shè)備沒有準(zhǔn)備好,它不響應(yīng)(NAK)主機(jī)。如果設(shè)備準(zhǔn)備好,則它響應(yīng)(ACK)鼠標(biāo),并且通過(guò)一個(gè)中斷類型的傳輸來(lái)傳輸信息?;谇懊鎴?bào)告描述符所發(fā)送的信息,當(dāng)主機(jī)從設(shè)備接收到數(shù)據(jù),它理解數(shù)據(jù)的含義和如何使用數(shù)據(jù)。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(人體接口概述)這個(gè)過(guò)程類似于“老板”和“雇員”?!肮蛦T”(設(shè)備)告訴他的“老板”(主機(jī)),他將以特定格式的報(bào)告,發(fā)布他所有的“發(fā)現(xiàn)”。這個(gè)報(bào)告也包含所有要求的信息,這些信息用于解數(shù)據(jù),并處理它。所以,在一個(gè)指定的時(shí)間,比如每10ms,“老板”檢查報(bào)告是否準(zhǔn)備好。如果報(bào)告準(zhǔn)備好,則“雇員”響應(yīng)(ACK)“老板”,并且向“老板”發(fā)送一個(gè)報(bào)告,這個(gè)報(bào)告的格式是先前討論的格式。由于雙方前期討論了格式,“老板”準(zhǔn)確的知道如何處理數(shù)據(jù)。如果沒有準(zhǔn)備好報(bào)告,則“雇員”不響應(yīng)“老板”,老板轉(zhuǎn)向下一個(gè)“雇員”。由于在報(bào)告描述符中包含了很多的信息,下面將詳細(xì)介紹這個(gè)報(bào)告描述符。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)HID報(bào)告描述符的一個(gè)重要的特性是,對(duì)于一個(gè)相同的設(shè)備有幾百種方法建立和組織報(bào)告。它能包含設(shè)備所支持的各種特性的信息,指定了設(shè)備數(shù)據(jù)的組織結(jié)構(gòu),識(shí)別數(shù)據(jù)是否有一個(gè)指數(shù)(比如10-3,103),或者指定數(shù)據(jù)所跟的單位,比如:大小、時(shí)間、電流等。最后,報(bào)告描述符的目的是報(bào)告主機(jī)所希望接收和發(fā)送的設(shè)備和數(shù)據(jù)信息。報(bào)告描述符可以復(fù)雜也可以非常簡(jiǎn)單。在很多情況下,并不能區(qū)分出復(fù)雜描述符設(shè)備和簡(jiǎn)單描述符設(shè)備的區(qū)別。雖然表面上看上去非常令人“恐懼”,但是“本質(zhì)”是很容易理解的。一旦理解了報(bào)告描述符,則很容易的創(chuàng)建描述符,并且開始設(shè)計(jì)自己的HID。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)理解HID報(bào)告最容易的方法是分開查看其中的內(nèi)容。本章給出的例子是建立一個(gè)三按鍵的鼠標(biāo)。圖11.6給出了三按鍵鼠標(biāo)的報(bào)告描述符。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)這個(gè)報(bào)告看上去很復(fù)雜,但是非常直觀。下面將這個(gè)報(bào)告進(jìn)行分解。當(dāng)思考鼠標(biāo)和它所讀取得信息,你將思考按鍵和光標(biāo)移動(dòng)。光標(biāo)是由X和Y值組成。按鍵是由按下/釋放信息構(gòu)成。這就是說(shuō)描述符有一部分用于按鍵。另一部分用于光標(biāo)。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)圖11.7給出了描述符的詳細(xì)說(shuō)明。下面將看看描述符表內(nèi)的每一行的目的。通過(guò)理解每一行,來(lái)看每一行屬于按鍵還是光標(biāo)移動(dòng),以及它對(duì)數(shù)據(jù)的影響。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)在HID報(bào)告描述符中,這里有多個(gè)輸入條目(Input)。每個(gè)輸入條目是一個(gè)數(shù)據(jù)位域,用于告訴逐句將要從鼠標(biāo)發(fā)送的數(shù)據(jù)。圖11.8,11.9和11.10給出了輸入條目的配置和每個(gè)位域的設(shè)置。后面將詳細(xì)討論這些位域的設(shè)置。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)圖11.8給出了輸入條目的設(shè)置,該設(shè)置用于鼠標(biāo)按鍵的3位數(shù)據(jù)。

圖11.8用于鼠標(biāo)按鍵的3位數(shù)據(jù)的輸入條目的設(shè)置圖11.8用于鼠標(biāo)按鍵的3位數(shù)據(jù)的輸入條目的設(shè)置USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)如圖11.9所示,為了保留字節(jié)剩下的5位,在鼠標(biāo)按鍵的高5位補(bǔ)零。由于不想改變數(shù)據(jù),因此除了設(shè)置比特0位常數(shù)外,使用相同的輸入條目設(shè)置作為按鍵的設(shè)置。圖11.9用于鼠標(biāo)按鍵的3位數(shù)據(jù)的輸入條目的設(shè)置USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)如圖11.10所示,最后的輸入條目是X和Y軸信息。由于比特位2設(shè)置成相對(duì)的,主機(jī)接收到的信息包含X和Y數(shù)據(jù)的變化,然后主機(jī)根據(jù)這個(gè)信息相應(yīng)的修改光標(biāo)。圖11.10用于鼠標(biāo)X和Y信息的輸入條目設(shè)置USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)下面將更深入的分析報(bào)告描述符,一個(gè)報(bào)告描述符有下面的三種條目類型:主條目類型全局條目類型本地條目類型區(qū)分這些條目類型和一個(gè)條目是非常重要的。在前面所給出的三種條目類型下,有很多不同的條目。因?yàn)闂l目描述符可能非常復(fù)雜,在這里只討論通用的條目。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)1.主條目主條目用于定義數(shù)據(jù)所包含的東西或者將數(shù)據(jù)分組。主條目中有5種不同的條目,包括:Input、Output、Feature、Collection和EndCollection。Input、Output和Feature用于定義條目Collection和EndCollection用于分組目的。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)一個(gè)Input條目指設(shè)備發(fā)送到主機(jī)的數(shù)據(jù)(比如:點(diǎn)擊鼠標(biāo)按鍵);一個(gè)Ouput條目指主機(jī)發(fā)送設(shè)備的數(shù)據(jù)(比如:鍵盤上的CapsLockLED燈)。一個(gè)Feature條目是一個(gè)信息,這個(gè)信息是主機(jī)可以發(fā)送到設(shè)備,并且可以從設(shè)備讀回。Feature條目包含設(shè)備配置信息,修改這個(gè)信息將改變?cè)O(shè)備的行為。PC接口應(yīng)用程序經(jīng)常使用Feature報(bào)告,在GUI上點(diǎn)擊按鍵將修改設(shè)備的操作。

Collection用于將Input、Output和Feature條目分組。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)

在HID規(guī)范中,有三種不同類型預(yù)定義的集合(Collection),包括:物理(Physical);應(yīng)用(Application);邏輯(Logic);

USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)一個(gè)物理集合是由一個(gè)幾何點(diǎn)所搜集的數(shù)據(jù)組成。一個(gè)設(shè)備在一個(gè)時(shí)刻從多個(gè)傳感器收集的數(shù)據(jù)可以在一個(gè)物理分組內(nèi)分組數(shù)據(jù)。使用這個(gè)集合的一個(gè)設(shè)備例子是鼠標(biāo),它將按鍵和位置數(shù)據(jù)進(jìn)行分組。一個(gè)應(yīng)用集合將單設(shè)備內(nèi)將服務(wù)不同或者公共目的的條目進(jìn)行分組。一個(gè)例子是鍵盤,它將LED和鍵盤的按鍵進(jìn)行分組。一個(gè)邏輯集合將不同條目的數(shù)據(jù)分組來(lái)構(gòu)成一個(gè)結(jié)構(gòu)化的數(shù)據(jù)集合。一個(gè)例子是一個(gè)數(shù)據(jù)緩沖區(qū)和緩沖數(shù)據(jù)占用的字節(jié)數(shù)之間的關(guān)系。邏輯集合建立兩者之間的連接。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)每個(gè)輸入、輸出和特性條目都有一個(gè)PSoCCreator軟件設(shè)置的8位前綴。一個(gè)輸入條目有一個(gè)前綴’100000nn’,nn是跟隨字節(jié)的個(gè)數(shù)。’10100nn’表示一個(gè)輸出條目,’101100nn’表示一個(gè)特性條目。跟隨前綴的是最多9個(gè)額外的比特位,這是固件開發(fā)人員必須設(shè)置的,用于描述條目數(shù)據(jù)。這還有23個(gè)額外的比特位,現(xiàn)在保留,用戶不可以訪問。在這個(gè)例子中,在輸入條目中,前綴后只有一個(gè)字節(jié)(8位)。所以輸入條目的前綴是0x81。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)注意:這里有9位數(shù)據(jù),大于8位數(shù)據(jù)。如果用戶在第8比特位選擇“BufferedBytes”,則要求這個(gè)額外的位,這將使這位的值為‘1’。前綴變成了0x82,添加一個(gè)額外的字節(jié)提供額外的數(shù)據(jù)。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)下面將詳細(xì)說(shuō)明條目設(shè)置中,每位的設(shè)置含義:(1)Data/Constant:Data表示數(shù)據(jù)是讀/寫。Constant表示數(shù)據(jù)是只讀的,不能被主機(jī)修改。(2)Array/Variable:Array表示只報(bào)告當(dāng)前活動(dòng)的控制,比如正在按下按鍵。Variable表示報(bào)告每個(gè)控制的當(dāng)前狀態(tài),而不考慮按鈕是否按下。(3)Absolute/Relative:Absolute表示值基于一個(gè)固定的區(qū)域。Relative表示值是對(duì)于最后一次所讀取值的變化。鼠標(biāo)是一個(gè)例子,提供相對(duì)的數(shù)據(jù)。而游戲桿提供的是絕對(duì)的數(shù)據(jù)。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)(4)NoWrap/Wrap:NoWrap表示值超出設(shè)定的范圍時(shí),報(bào)告超出限制的值。Wrap表示,當(dāng)值一直增加,當(dāng)?shù)竭_(dá)設(shè)置的最大值時(shí),值翻轉(zhuǎn)到最小的值。反之,當(dāng)值一直減小,當(dāng)?shù)竭_(dá)設(shè)置的最小值時(shí),值翻轉(zhuǎn)到最大的值。當(dāng)使用Array時(shí),不能使用Wrap。(5)Linear/Non-Linear:Linear表示測(cè)量數(shù)據(jù),這些報(bào)告的數(shù)據(jù)之間有一個(gè)線性關(guān)系。當(dāng)使用Array時(shí),不能設(shè)置為L(zhǎng)inear。當(dāng)使用Non-Linear時(shí),來(lái)自傳感器的非線性曲線的數(shù)據(jù)就是這樣一種情況。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)(6)NoNullPosition/NullState:NoNullPosition表示由控制所發(fā)送的任何數(shù)據(jù)都包含有意義的數(shù)據(jù)。NullState表示控制可以發(fā)送無(wú)意義的數(shù)據(jù),這個(gè)數(shù)據(jù)由超出所設(shè)置的最小和最大范圍的值表示。(7)Nonvolatile/Volatile:Nonvolatile表示只有和主機(jī)互動(dòng),設(shè)備才能修改值。Volatile表示設(shè)備不需要主機(jī)的驗(yàn)證就可以修改值。這位只應(yīng)用到輸出和特性條目。當(dāng)使用Array時(shí),不能使用Volatile。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)(8)BitField/BufferedBytes:BitField表示字節(jié)中的每一位能表示一片具體的數(shù)據(jù)。BufferedBytes表示數(shù)據(jù)用一個(gè)或多個(gè)字節(jié)表示。鼠標(biāo)或鍵盤時(shí)一個(gè)使用BitField的例子,而條碼器數(shù)據(jù)使用BufferedBytes。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)2.全局條目和本地條目在前面的報(bào)告描述符中,可以看到這些條目,比如:usage,usagepage,logicalminimum等。全局條目用于描述數(shù)據(jù),比如它的限制、單位、位大小和數(shù)量。本地條目用來(lái)定義數(shù)據(jù)的各種參數(shù),比如:主機(jī)使用什么數(shù)據(jù),然后將字符串和條目進(jìn)行關(guān)聯(lián)。這里有兩個(gè)關(guān)鍵字用來(lái)區(qū)分全局和本地條目:全局條目“describe”和本地條目“define”。下面簡(jiǎn)單的介紹本地和全局條目。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)(1)全局條目UsagePage:32位的值用于識(shí)別設(shè)備執(zhí)行的一個(gè)功能,比如:控制設(shè)備或者游戲控制器。高16位是全局UsagePage條目,低16位是本地Usagepage條目。LogicalMaximumandMinimum:定義了在Array或者Variable內(nèi),用于報(bào)告值的限制。比如:一個(gè)鼠標(biāo)報(bào)告位置的值從127到-127,有一個(gè)邏輯最大值127和邏輯最小值-127。另一個(gè)例子是單狀態(tài)的按鍵,或者確認(rèn)或者釋放,有一個(gè)邏輯的最小值‘0’和一個(gè)邏輯最大值‘1’。ReportSize:確認(rèn)在輸入、輸出或者特性條目?jī)?nèi)位域的大小。ReportCount:確認(rèn)用于一個(gè)輸入、輸出或者特性條目的數(shù)據(jù)域的大小。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)(2)本地條目Usage:用于條目或者集合的一個(gè)索引,表示它的使用或者功能。一個(gè)Usage和一個(gè)UsagePage表示低16位。UsageMinimumandMaximum:用于鏈接UsageID和一個(gè)數(shù)組或者比特映射的數(shù)據(jù)UsageMinimum定義了開始點(diǎn),UsageMaximum定義了結(jié)束點(diǎn)。在鼠標(biāo)工程中,有三個(gè)按鍵,UsageMinimum和UsageMaximum分配ID到按鍵1(0x01),按鍵2(0x02)和按鍵3(0x03)。USB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--人體接口設(shè)備的原理(報(bào)告描述符)在一個(gè)最小值,報(bào)告必須包含下面的條目,其他條目提供了更詳細(xì)的細(xì)節(jié):Input,Output或者FeatureUsageUsagePageLogicalMinimumandMaximumReportSizeReportCountUSB人體學(xué)輸入設(shè)備的實(shí)現(xiàn)

--創(chuàng)建和配置工程1.在計(jì)算機(jī)上的桌面上,選擇開始->所有程序->Cypress->PSoCCreator2.0->PsoCCreator2.0。打開PSoCCreator軟件;2.在PSoCCreator2.0軟件的主界面下,選擇File->New->Project...;3.在NewProject窗口,選擇EmptyPSoC3Design模板,并將工程命命名為SquareMouse。選擇工程保存路徑,點(diǎn)擊“OK”按鈕;

創(chuàng)建和配置工程

--修改系統(tǒng)時(shí)鐘配置在該設(shè)計(jì)中,對(duì)于USB操作,設(shè)備的USB塊要求48MHz的時(shí)鐘,ILO為100kHz。為了得到48MHz的時(shí)鐘,設(shè)置IMO為24MHz,USB時(shí)鐘為IMO*2。調(diào)整PLL,USB和IMO的設(shè)置。下面給出配置系統(tǒng)時(shí)鐘的步驟:1.在WorkspaceExplorer窗口下的Source標(biāo)簽欄下,選擇SquareMouse.cydwr,并打開該文件。創(chuàng)建和配置工程

--修改系統(tǒng)時(shí)鐘配置2.選擇Clock標(biāo)簽,出現(xiàn)系統(tǒng)時(shí)鐘樹界面。按照如圖11.11所示的界面,配置系統(tǒng)時(shí)鐘。圖11.11時(shí)鐘配置界面創(chuàng)建和配置工程

--添加并配置USB文件系統(tǒng)USBFS

下面給出添加并配置USBFS的步驟,主要步驟包括:1.拖動(dòng)并且放置USBFS元件到原理圖內(nèi)(ComponentsCatalog->Communcation->USBFS)。2.雙擊器件原理圖內(nèi)的USBFS_1打開配置窗口。3.將器件命名為USBFS_1。4.如圖11.12,選擇HIDDescriptor標(biāo)簽。

創(chuàng)建和配置工程

--添加并配置USB文件系統(tǒng)USBFS圖11.12HIDDescriptor配置界面創(chuàng)建和配置工程

--添加并配置USB文件系統(tǒng)USBFS5.下一步選擇Co

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論