<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>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于CY7C68013A芯片的USB鍵盤(pán)的設計

基于CY7C68013A芯片的USB鍵盤(pán)的設計

作者: 時(shí)間:2012-04-09 來(lái)源:網(wǎng)絡(luò ) 收藏

十分簡(jiǎn)單,CYTC68013A-56pin有PA、PB、PD三組24個(gè)IO端口,利用這些IO端口,就可常用的矩陣,如圖2所示,鍵的數目可達12*12個(gè)。和51單片機實(shí)現的一樣,固件程序需要對行和列進(jìn)行掃描,采用輪詢(xún)或中斷的方式,對按下的鍵值進(jìn)行判斷。

本文引用地址:http://dyxdggzs.com/article/177579.htm

b.JPG


另外,在制作電路板的時(shí)候,注意D+和D-的走線(xiàn)盡量的短而且相等,晶振盡量靠近。
3.2 的固件程序
EZ- FX2LP采用的是一種軟配置模式。也就是設備的各種驅動(dòng)程序都保存在上位機,上電后,USB主機首先將程序下載到RAM中,然后從RAM開(kāi)始執行。在這個(gè)過(guò)程中,有兩次“枚舉”:剛加電時(shí),USB內核中沒(méi)有固件,將被枚舉為一個(gè)默認的USB設備;主機下載固件程序之后,在內核中執行固件程序,就會(huì )重新識別并枚舉這個(gè)USB設備,這個(gè)過(guò)程被稱(chēng)為“重枚舉”。在第一次枚舉時(shí),根據芯片有沒(méi)有連接E2PROM,以及E2PROM中第一個(gè)字節的值,有不同的處理方式。當沒(méi)有外接E2PROM時(shí),將根據驅動(dòng)程序中提供的VID,PID和DID,把主機上對應的固件程序下載到片內的RAM中,并執行固件代碼。
USB固件程序是USB設備功能的核心,通過(guò)兩次枚舉,固件程序被下載到的芯片里(程序也可以放在外接的EEPROM芯片里),用于配置芯片工作在需要的狀態(tài)下。
固件程序使用Keil μVision來(lái)編寫(xiě)??梢詤⒖糃ypress的例程。大體步驟是:
(1)初始化休眠模式、遠程喚醒等。
(2)初始化用戶(hù)設備,主要是‘TD_Init()子程序。負責整個(gè)USB設備的初始化過(guò)程。
(3)定向描述符。
(4)把所用中斷打開(kāi),并開(kāi)啟8051全局中斷EA=1。由于EZ-USB設備啟動(dòng)需要重列舉,因而需要通過(guò)設置和判斷USBCS寄存器的RENUM和DISCON位來(lái)模擬設備物理上的斷開(kāi)和連接過(guò)程。
(5)用戶(hù)外圍設備控制功能的實(shí)現放在TD_Poll()子程序中,同時(shí)主循環(huán)中的SetupCommand()子程序用于接收、分析上位機的控制信號,響應上位機請求(標準請求和用戶(hù)自定義請求)。
3.3 USB通用驅動(dòng)程序的使用
USB設備的使用需要驅動(dòng)程序的支持,Cypress提供了通用的USB驅動(dòng)程序。
該驅動(dòng)包括兩部分:CyLoad.sys和CyUsb.sys,前者用于固件程序的下載,后者用于主機和固件程序的通信。這兩個(gè)驅動(dòng)程序提供的引導文件分別是CyLoad.inf和CyUSB.inf,用戶(hù)可以直接使用,也可以根據需要進(jìn)行改動(dòng)。
為了在CyLoad.sys的幫助下實(shí)現固件的自動(dòng)下載,固件程序CyLoad.HEX必須轉換為適合自動(dòng)下載的CyLoad.spt文件,并且與CyLoa d.sys一起放在CyLoad文件夾下,拷貝到系統system32目錄下。在安裝文件CyUSB.inf中設置的PID,VID必須和描述符中的一致,使得能夠自動(dòng)加載對應固件。
USB設備使用時(shí),必須首先安裝驅動(dòng)程序,注意分別安裝上面提到的下載驅動(dòng)CyLoad.sys和通信驅動(dòng)CyUsb.sys。安裝驅動(dòng)之后,可以使用Cypress提供的主機控制函數庫CyAPI.lib開(kāi)發(fā)主機程序,通過(guò)驅動(dòng)程序和USB設備進(jìn)行通信。
3.4 USB主機的應用程序設計
USB主機程序可以使用Cypress提供的CyAPI.lib庫來(lái)進(jìn)行編程。CyAPI.lib對應Cypress提供的驅動(dòng)程序CyUsb.sys,為其提供了簡(jiǎn)單而且功能強大的C++編程接口,通過(guò)CyAPI.lib庫提供的函數,可以對USB設備進(jìn)行讀寫(xiě)操作,這些函數主要是Open,Close和XferData。
本文以VC++6.0為例,描述創(chuàng )建USB設備應用程序的步驟。
(1)新建工程,并將CyAPI.h,CyAPI.lib,cyioctl.h三個(gè)文件加載到項目中。
CyAPI.h中定義了CCyUSBDevice、CCyControlEndPoint等幾個(gè)重要的類(lèi);而cyioctl.h中則定義了讀取USB設備的幾個(gè)重要的結構和宏。
(2)在相應的文件中(視、框架或者對話(huà)框,依具體情況),包含頭文件CyAPI.h和cyioefl.h。
然后定義USB設備全局變量和控制端點(diǎn)全局變量,并進(jìn)行初始化:
CCyUSBDevice*USBDevice=new CCyUSBDevice();
CCyControlEndPoint*ept=USBDevice->ControlEndPt;
(3)在程序執行時(shí),采用中斷方式,或者輪詢(xún)方式交換數據。以輪詢(xún)方式為例,則在幀循環(huán)中加入如下代碼:
c.JPG
首先判斷設備是否打開(kāi),然后指定操作碼,ept->XferData()完成傳輸,實(shí)現從端口讀數據,或者向端口寫(xiě)數據。數據傳輸的方向由ept->Direction來(lái)設置。
(4)結束程序時(shí),關(guān)閉USBDevice。
USBDevice->Close;

4 結論
EZ-USB FX2芯片實(shí)現USB系統,軟硬件程序設計,相比較而言,簡(jiǎn)單、方便。本文介紹了設計USB系統的大體步驟,給出了USB鍵盤(pán)設計的實(shí)例。
上述系統和程序經(jīng)過(guò)實(shí)際運行,工作穩定、可靠。

DIY機械鍵盤(pán)相關(guān)社區:機械鍵盤(pán)DIY


pid控制相關(guān)文章:pid控制原理


51單片機相關(guān)文章:51單片機教程


c++相關(guān)文章:c++教程



上一頁(yè) 1 2 下一頁(yè)

評論


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