第11章 USB總線模塊_第1頁
第11章 USB總線模塊_第2頁
第11章 USB總線模塊_第3頁
第11章 USB總線模塊_第4頁
第11章 USB總線模塊_第5頁
已閱讀5頁,還剩76頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第11章USB總線模塊

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

--USB總線模塊

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

--USB總線模塊

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

--USB模塊結構

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

--USB模塊結構(串行接口引擎SIE)

SIE用于處理譯碼,以及在發送和接收時,創建數據和控制包。在接收時,SIE將USB的位流解碼成USB的包;在發送時,創建USB的位流。下面給出SIE的主要特性:兼容USB2.0規范;支持1個設備地址;支持8個數據端點和1個控制端點;每個端點支持中斷;在48MHz時鐘下全速運行;在控制端點集成一個8字節緩沖區;USB總線模塊

--USB模塊結構(串行接口引擎SIE)這個模塊的寄存器主要用于配置數據端點操作和控制端點的數據緩沖,寄存器也控制每個端點可用的中斷。

SIE在每次傳輸結束后產生中斷。使用USB_SIE_INT_EN寄存器可以使能/禁止端點的中斷。通過USB_SIE_INT_SR寄存器可以得到端點的中斷狀態。USB總線模塊

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

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

--USB模塊結構(串行接口引擎SIE)

SIE也報告發送錯誤,USB_SIE_EPx_CR0寄存器的比特為“err_in_txn“表示錯誤的發生。當設置該位時,當它接收到來自主機的其它IN令牌時,硬件自動重發相同的數據。這種重發只出現在存儲轉發模式下。在直通模式下,通過固件讀取該位來確定重發數據。USB總線模塊

--USB模塊結構(仲裁器)模塊仲裁器用于處理端點對SRAM存儲器訪問。CPU和SIE都可以訪問SRAM存儲器.仲裁器負責處理CPU和SIE訪問SRAM的仲裁。仲裁器包含下面的模塊:SIE接口模塊;CPU接口模塊;存儲器接口;DMA引擎;仲裁邏輯;同步模塊;USB總線模塊

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

--USB模塊結構(仲裁器)1.SIE接口模塊該模塊負責處理和SIE模塊的所有交易。SIE從SRAM讀數據,然后發送到主機。類似的,將來自主機的數據寫到SRAM中。在SIE接口登記這些請求,模塊來處理它。2.CPU接口模塊這個模塊處理和CPU的所有交易。CPU提出為每個端點讀/寫SRAM的請求。這些請求在CPU接口模塊被登記,然后由模塊來處理。USB總線模塊

--USB模塊結構(仲裁器)

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

--USB模塊結構(仲裁器)4.DMA接口當配置DMA后,DMA接口負責在DMA和USB之間的數據來回傳輸。這個模塊支持用于每個數據端點的DMA請求。DMA的行為取決于在配置寄存器中所配置的邏輯傳輸模式。USB總線模塊

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

--USB模塊結構(仲裁器)這個模塊也處理每個端點的中斷請求,每個端點的中斷來自:DMA授權(DMAGrant)、輸入緩沖區滿、緩沖區上溢、緩沖區下溢。6.同步化模塊USB模塊使用兩個時鐘:系統時鐘和USB時鐘。仲裁器使用系統時鐘,SIE和OsClock模塊使用USB時鐘。由于這是兩個不同的時鐘,因此要求同步,這個模塊負責處理同步。USB總線模塊

--USB模塊工作條件

USB模塊的工作條件包括:工作頻率;工作電壓;收發器;下面進行詳細的說明。USB總線模塊

--USB模塊工作條件

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

USB的OsClock模塊用來確定USB包的頻率。USB總線模塊

--USB模塊工作條件

2.工作電壓標準電壓范圍4.35V-5.25V;低電壓范圍3.15V-3.45V。USB使用3.3V工作電壓。該模塊使用數字電壓Vccd。支持內部的管理器用于電壓的管理。在標準電壓圍內,電壓通過內部的管理器調整到3.3V。

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

--USB模塊工作條件

3.收發器

USB模塊包括收發器。主機和USB之間使用的是差分信號。接收器接收差分信號,然后轉換為單端信號。給到

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

--USB模塊工作條件能通過手工方式強迫發送器發送信號。寄存器USB_USBIO_CR0用于手工發送信號。下面給出一個例子:

1)當使能手工發送時,寄存器配置成發送單端0信號(即,D+和D-都為低);

2)可配置發送USB信號,USB信號有兩類:

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

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

--邏輯傳輸模式

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

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

--邏輯傳輸模式特點存儲轉發模式直通模式OUT命令在OUT命令下,整個包寫到SRAM中,當整個數據可用時,從SRAM存儲器復制到USB設備中。等待足夠的字節(取決于DMA配置)寫到SRAM存儲器。一旦有足夠的字節時,立即從SRAM存儲器復制到USB設備中數據傳輸當所有字節寫到存儲器里,則傳輸數據當足夠字節可用時,傳輸數據。不需要等待填充整個數據包DMA類型無DMA模式和手工DMA模式只有自動DMA模式支持傳輸類型適合于中斷和塊傳輸適合于同步傳輸USB傳輸模式USB總線模塊

--邏輯傳輸模式(存儲轉發模式)

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

--邏輯傳輸模式(存儲轉發模式)2.手工DMA訪問這個模式要求配置DMA控制器。這個模式和非DMA訪問類似,只不過是DMA執行包的寫/讀操作。通過設置ARB_EPx_CFG寄存器的DMA_CFG位來產生一個端點的DMA請求。當DMA服務被確認和執行(DMA_GNT),可以通過編程產生一個仲裁器中斷。可以使用單或多DMA周期完成傳輸。當每個DMA周期完成后,產生仲裁器中斷。類似的,當所有的數據字節都寫到存儲器時,產生仲裁器中斷,同時設置IN_BUF_FULL位。USB總線模塊

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

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

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

在這種模式下,需要的存儲器是較少的,適合于全速同步傳輸,最多1023個字節。當主機發送IN命令時,設備使用在專用存儲器區域的數據進行響應。同時為該EP更多的數據產生一個DMA請求。這個數據填充公共區域。不需要等待填充整個數據包。只等到USB_DMA_THRES_MSB和USB_DMA_THRES寄存器指定的在SRAM內可用的數據數量,然后從公共區傳輸數據。USB總線模塊

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

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

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

--邏輯傳輸模式(控制端點的邏輯傳輸)控制端點有一個特殊的傳輸模式。該傳輸模式不需要共享512個字節的存儲器,而是有一個專用的8字節的寄存器緩沖區。如圖(a)所示,給出了控制端點邏輯傳輸的IN(CPU寫和SIE讀)交易的流程圖。如圖(b)所示,給出了控制端點邏輯傳輸的OUT(CPU讀和SIE寫)交易的流程圖。USB總線模塊

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

USB收發器能發送其它信號電平。在發送器端點使用上拉電阻,能使用而外的信號電平。配置寄存器USB_USBIO_CR1和USB_USBIO_CR2得到不同的信號電平。在USBIO_CR2寄存器的”test_res”將發送器處于上拉模式。USBIO_CR1寄存器的I/O模式將使USB處理USB模式或者驅動模式。當處于驅動模式下,禁止USB信號,DMI和DPI位用于驅動D-,D+。這兒有兩個不同的驅動模式。在CMOS驅動模式下,D+和DMI關聯,D-和DPI關聯。在開漏模式下,上拉電阻起作用。在這種狀態下,當DPI和DMI位設置為高時,D+和D-處于高阻狀態。USB總線模塊

--邏輯傳輸模式(PS/2和CMOSI/O模式)獨立于驅動模式,可以在Vdd和D+,D-之間接上拉電阻(使用p2puen位)。支持一個內部的1.5k?的上拉電阻,通過USBIO_CR1寄存器來使用這個上拉電阻。USBIO_CR1寄存器也用來輪詢D+和D-的狀態。USB人體學輸入設備的實現

--人體接口設備的原理目前,計算機上的RS232和PS2端口絕大多數都被USB端口取代。而且,越來越多的USB設備出現在市場上。對USB設備的建立、配置和使用步驟,是USB設備設計者比較頭疼的事情。但實際上USB設備是很容易配置和使用的。人體接口設備(HumanInterfaceDevice,HID)是一種和USB連接的簡單接口,有很多令人感興趣的應用。USB人體學輸入設備的實現

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

在日常生活中,經常見到HID的應用,典型的是和計算機連接的鍵盤和鼠標。正如HID這個名字所描述的那樣,它是一個設備,用來在人和設備(計算機)之間創建一個接口。由接口描述符實現將一個設備定義成HID。USB人體學輸入設備的實現

--人體接口設備的原理(人體接口概述)描述符以結構化的形式提供了,連接到主機設備的相關信息。當把一個USB設備插入計算機時,計算機(主機)通過USB描述符表要求設備的相關信息。通過接口描述符,計算機知道所連接的設備是HID。很多時候,主機要求一個設備所搜集數據的數據報告。為了理解這些信息,一個報告描述符用來定義HID報告內的數據格式,以及如何使用這些數據。USB人體學輸入設備的實現

--人體接口設備的原理(人體接口概述)下面給出的一個鼠標的工程,在這個工程中,設備報告按鍵和X/Y移動的信息。這個信息以主機能理解和使用的格式傳遞給主機。在報告描述符中,聲明了鼠標數據的結構和格式。主機周期性的輪詢設備數據;如果設備沒有準備好,它不響應(NAK)主機。如果設備準備好,則它響應(ACK)鼠標,并且通過一個中斷類型的傳輸來傳輸信息。基于前面報告描述符所發送的信息,當主機從設備接收到數據,它理解數據的含義和如何使用數據。USB人體學輸入設備的實現

--人體接口設備的原理(人體接口概述)這個過程類似于“老板”和“雇員”。“雇員”(設備)告訴他的“老板”(主機),他將以特定格式的報告,發布他所有的“發現”。這個報告也包含所有要求的信息,這些信息用于解數據,并處理它。所以,在一個指定的時間,比如每10ms,“老板”檢查報告是否準備好。如果報告準備好,則“雇員”響應(ACK)“老板”,并且向“老板”發送一個報告,這個報告的格式是先前討論的格式。由于雙方前期討論了格式,“老板”準確的知道如何處理數據。如果沒有準備好報告,則“雇員”不響應“老板”,老板轉向下一個“雇員”。由于在報告描述符中包含了很多的信息,下面將詳細介紹這個報告描述符。USB人體學輸入設備的實現

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

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

--人體接口設備的原理(報告描述符)這個報告看上去很復雜,但是非常直觀。下面將這個報告進行分解。當思考鼠標和它所讀取得信息,你將思考按鍵和光標移動。光標是由X和Y值組成。按鍵是由按下/釋放信息構成。這就是說描述符有一部分用于按鍵。另一部分用于光標。USB人體學輸入設備的實現

--人體接口設備的原理(報告描述符)圖11.7給出了描述符的詳細說明。下面將看看描述符表內的每一行的目的。通過理解每一行,來看每一行屬于按鍵還是光標移動,以及它對數據的影響。USB人體學輸入設備的實現

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

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

圖11.8用于鼠標按鍵的3位數據的輸入條目的設置圖11.8用于鼠標按鍵的3位數據的輸入條目的設置USB人體學輸入設備的實現

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

--人體接口設備的原理(報告描述符)如圖11.10所示,最后的輸入條目是X和Y軸信息。由于比特位2設置成相對的,主機接收到的信息包含X和Y數據的變化,然后主機根據這個信息相應的修改光標。圖11.10用于鼠標X和Y信息的輸入條目設置USB人體學輸入設備的實現

--人體接口設備的原理(報告描述符)下面將更深入的分析報告描述符,一個報告描述符有下面的三種條目類型:主條目類型全局條目類型本地條目類型區分這些條目類型和一個條目是非常重要的。在前面所給出的三種條目類型下,有很多不同的條目。因為條目描述符可能非常復雜,在這里只討論通用的條目。USB人體學輸入設備的實現

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

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

Collection用于將Input、Output和Feature條目分組。USB人體學輸入設備的實現

--人體接口設備的原理(報告描述符)

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

USB人體學輸入設備的實現

--人體接口設備的原理(報告描述符)一個物理集合是由一個幾何點所搜集的數據組成。一個設備在一個時刻從多個傳感器收集的數據可以在一個物理分組內分組數據。使用這個集合的一個設備例子是鼠標,它將按鍵和位置數據進行分組。一個應用集合將單設備內將服務不同或者公共目的的條目進行分組。一個例子是鍵盤,它將LED和鍵盤的按鍵進行分組。一個邏輯集合將不同條目的數據分組來構成一個結構化的數據集合。一個例子是一個數據緩沖區和緩沖數據占用的字節數之間的關系。邏輯集合建立兩者之間的連接。USB人體學輸入設備的實現

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

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

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

--人體接口設備的原理(報告描述符)(4)NoWrap/Wrap:NoWrap表示值超出設定的范圍時,報告超出限制的值。Wrap表示,當值一直增加,當到達設置的最大值時,值翻轉到最小的值。反之,當值一直減小,當到達設置的最小值時,值翻轉到最大的值。當使用Array時,不能使用Wrap。(5)Linear/Non-Linear:Linear表示測量數據,這些報告的數據之間有一個線性關系。當使用Array時,不能設置為Linear。當使用Non-Linear時,來自傳感器的非線性曲線的數據就是這樣一種情況。USB人體學輸入設備的實現

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

--人體接口設備的原理(報告描述符)(8)BitField/BufferedBytes:BitField表示字節中的每一位能表示一片具體的數據。BufferedBytes表示數據用一個或多個字節表示。鼠標或鍵盤時一個使用BitField的例子,而條碼器數據使用BufferedBytes。USB人體學輸入設備的實現

--人體接口設備的原理(報告描述符)2.全局條目和本地條目在前面的報告描述符中,可以看到這些條目,比如:usage,usagepage,logicalminimum等。全局條目用于描述數據,比如它的限制、單位、位大小和數量。本地條目用來定義數據的各種參數,比如:主機使用什么數據,然后將字符串和條目進行關聯。這里有兩個關鍵字用來區分全局和本地條目:全局條目“describe”和本地條目“define”。下面簡單的介紹本地和全局條目。USB人體學輸入設備的實現

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

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

--人體接口設備的原理(報告描述符)在一個最小值,報告必須包含下面的條目,其他條目提供了更詳細的細節:Input,Output或者FeatureUsageUsagePageLogicalMinimumandMaximumReportSizeReportCountUSB人體學輸入設備的實現

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

創建和配置工程

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

--修改系統時鐘配置2.選擇Clock標簽,出現系統時鐘樹界面。按照如圖11.11所示的界面,配置系統時鐘。圖11.11時鐘配置界面創建和配置工程

--添加并配置USB文件系統USBFS

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

創建和配置工程

--添加并配置USB文件系統USBFS圖11.12HIDDescriptor配置界面創建和配置工程

--添加并配置USB文件系統USBFS5.下一步選擇Co

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論