亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2012-07-17 07:37:26陳喜春
        山西電子技術(shù) 2012年1期
        關(guān)鍵詞:枚舉固件驅(qū)動(dòng)程序

        陳喜春

        (石家莊機(jī)械化步兵學(xué)院軍事模擬訓(xùn)練中心,河北石家莊050083)

        USB接口具有傳輸速率高,體積小,可向外供電等特點(diǎn),因此使得計(jì)算機(jī)與外部硬件設(shè)備之間的連接和使用都十分方便。目前,計(jì)算機(jī)的外圍設(shè)備中,例如鼠標(biāo)、鍵盤(pán)、打印機(jī)都開(kāi)始采用USB接口實(shí)現(xiàn)。本文中,將介紹Cypress公司的USB接口芯片——CY7C68013A,并介紹基于 CY7C68013A實(shí)現(xiàn)的USB鍵盤(pán)。

        1 CY7C68013A芯片簡(jiǎn)介

        一個(gè)典型的USB應(yīng)用系統(tǒng)由USB設(shè)備、USB主機(jī)和USB電纜組成,USB主機(jī)一般指具有USB接口的計(jì)算機(jī),連接到主機(jī)USB端口的外部設(shè)備一般稱(chēng)為USB設(shè)備。

        Cypress的EZ-USB FX2系列芯片是世界上第一款集成了USB2.0協(xié)議的微處理器,EZ-USB FX2LP系列是其低功耗版本,使用比較多的是CY7C68013A。

        FX2LP芯片的內(nèi)部主要包括高性能微處理器內(nèi)核、USB2.0收發(fā)器、智能引擎(SIE)、增強(qiáng) 8051內(nèi)核、16K的RAM,4K的FIFO、IO接口、數(shù)據(jù)總線(xiàn)、地址總線(xiàn)和通用可編程接口等。EZ-USB FX2LP的CPU采用的是增強(qiáng)型8051內(nèi)核,指令集和標(biāo)準(zhǔn)的8051完全兼容,因此非常便于熟悉51單片機(jī)的用戶(hù)使用。

        根據(jù)內(nèi)部資源和引腳數(shù)量的不同,CY7C68013A芯片一共提供了三種不同的封裝。本文以CY7C68013A-56pin為例進(jìn)行說(shuō)明,該封裝提供了PA、PB、PD共3個(gè)8位并行I/O端口。

        2 開(kāi)發(fā)環(huán)境的搭建

        USB接口設(shè)備的開(kāi)發(fā)比較復(fù)雜,需要涉及USB固件程序、USB驅(qū)動(dòng)程序、上位機(jī)程序開(kāi)發(fā)和電路板設(shè)計(jì)等諸多方面。

        2.1 固件開(kāi)發(fā)環(huán)境

        USB功能設(shè)備的硬件功能主要由硬件上的微處理器來(lái)實(shí)現(xiàn),微處理器是由芯片上的固件程序控制的。由于FX2LP的CPU采取了8051內(nèi)核,因此,固件開(kāi)發(fā)環(huán)境仍然可以使用51系列單片機(jī)的常用開(kāi)發(fā)軟件——Keil μVision。

        2.2 Cypress開(kāi)發(fā)包

        Cypress公司為EZ-USB芯片提供了一個(gè)開(kāi)發(fā)包,CY3684 EZ-USB FX2LP Development Kit,里面包含了典型的固件代碼,用戶(hù)可以參考使用。另外,該開(kāi)發(fā)包還提供了通用USB驅(qū)動(dòng)程序、典型的硬件電路、上位機(jī)操作函數(shù)說(shuō)明等。

        2.3 上位機(jī)開(kāi)發(fā)環(huán)境

        USB功能設(shè)備需要連接到計(jì)算機(jī)上使用,因此需要上位機(jī)的程序開(kāi)發(fā),一般可以使用微軟的Visual Studio來(lái)實(shí)現(xiàn)。USB設(shè)備開(kāi)發(fā)的上位機(jī)程序通過(guò)USB設(shè)備的驅(qū)動(dòng)程序來(lái)和USB設(shè)備進(jìn)行通信。

        驅(qū)動(dòng)程序的開(kāi)發(fā)可以使用微軟的DDK開(kāi)發(fā)驅(qū)動(dòng)程序,也可以使用Driver Studio軟件。針對(duì)Cypress公司的EZ-USB系列芯片,也可以直接使用Cypress的通用驅(qū)動(dòng)程序,這是一種更加簡(jiǎn)單的開(kāi)發(fā)方式。

        3 USB鍵盤(pán)的設(shè)計(jì)

        3.1 電路設(shè)計(jì)

        圖1是CY7C68013A-56pin的典型連接。電壓調(diào)整芯片將USB接口的5 V電壓轉(zhuǎn)換為芯片的工作電壓3.3 V;類(lèi)似51系列單片機(jī),時(shí)鐘振蕩電路接入晶振和兩個(gè)瓷片電容;SCL與SDL引腳接上拉電阻。

        圖1 CY7C68013A端口的連接關(guān)系

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

        另外,在制作電路板的時(shí)候,注意D+和D-的走線(xiàn)盡量的短而且相等,晶振盡量靠近芯片。

        圖2 鍵盤(pán)與CY7C68013A的連接

        3.2 USB芯片的固件程序設(shè)計(jì)

        EZ-USB FX2LP芯片采用的是一種軟配置模式。也就是USB設(shè)備的各種驅(qū)動(dòng)程序都保存在上位機(jī),上電后,USB主機(jī)首先將程序下載到RAM中,然后從RAM開(kāi)始執(zhí)行。在這個(gè)過(guò)程中,有兩次“枚舉”:剛加電時(shí),USB內(nèi)核中沒(méi)有固件,將被枚舉為一個(gè)默認(rèn)的USB設(shè)備;主機(jī)下載固件程序之后,在內(nèi)核中執(zhí)行固件程序,就會(huì)重新識(shí)別并枚舉這個(gè)USB設(shè)備,這個(gè)過(guò)程被稱(chēng)為“重枚舉”。在第一次枚舉時(shí),根據(jù)芯片有沒(méi)有連接E2PROM,以及E2PROM中第一個(gè)字節(jié)的值,有不同的處理方式。當(dāng)沒(méi)有外接E2PROM時(shí),將根據(jù)驅(qū)動(dòng)程序中提供的VID,PID和DID,把主機(jī)上對(duì)應(yīng)的固件程序下載到片內(nèi)的RAM中,并執(zhí)行固件代碼。

        USB固件程序是USB設(shè)備功能的核心,通過(guò)兩次枚舉,固件程序被下載到CY7C68013A的芯片里(程序也可以放在外接的EEPROM芯片里),用于配置芯片工作在需要的狀態(tài)下。

        固件程序使用Keil μVision來(lái)編寫(xiě)。可以參考Cypress的例程。大體步驟是:

        (1)初始化休眠模式、遠(yuǎn)程喚醒等。

        (2)初始化用戶(hù)設(shè)備,主要是TD_Init()子程序。負(fù)責(zé)整個(gè)USB設(shè)備的初始化過(guò)程。

        (3)定向描述符。

        (4)把所用中斷打開(kāi),并開(kāi)啟8051全局中斷EA=1。由于EZ-USB設(shè)備啟動(dòng)需要重列舉,因而需要通過(guò)設(shè)置和判斷USBCS寄存器的RENUM和DISCON位來(lái)模擬設(shè)備物理上的斷開(kāi)和連接過(guò)程。

        (5)用戶(hù)外圍設(shè)備控制功能的實(shí)現(xiàn)放在TD_Poll()子程序中,同時(shí)主循環(huán)中的SetupCommand()子程序用于接收、分析上位機(jī)的控制信號(hào),響應(yīng)上位機(jī)請(qǐng)求(標(biāo)準(zhǔn)請(qǐng)求和用戶(hù)自定義請(qǐng)求)。

        3.3 USB通用驅(qū)動(dòng)程序的使用

        USB設(shè)備的使用需要驅(qū)動(dòng)程序的支持,Cypress提供了通用的USB驅(qū)動(dòng)程序。

        該驅(qū)動(dòng)包括兩部分:CyLoad.sys和CyUsb.sys,前者用于固件程序的下載,后者用于主機(jī)和固件程序的通信。這兩個(gè)驅(qū)動(dòng)程序提供的引導(dǎo)文件分別是CyLoad.inf和CyUSB.inf,用戶(hù)可以直接使用,也可以根據(jù)需要進(jìn)行改動(dòng)。

        為了在CyLoad.sys的幫助下實(shí)現(xiàn)固件的自動(dòng)下載,固件程序CyLoad.HEX必須轉(zhuǎn)換為適合自動(dòng)下載的CyLoad.spt文件,并且與CyLoad.sys一起放在 CyLoad文件夾下,拷貝到系統(tǒng)system32目錄下。在安裝文件CyUSB.inf中設(shè)置的PID,VID必須和描述符中的一致,使得能夠自動(dòng)加載對(duì)應(yīng)固件。

        USB設(shè)備使用時(shí),必須首先安裝驅(qū)動(dòng)程序,注意分別安裝上面提到的下載驅(qū)動(dòng)CyLoad.sys和通信驅(qū)動(dòng)CyUsb.sys。安裝驅(qū)動(dòng)之后,可以使用Cypress提供的主機(jī)控制函數(shù)庫(kù)CyAPI.lib開(kāi)發(fā)主機(jī)程序,通過(guò)驅(qū)動(dòng)程序和USB設(shè)備進(jìn)行通信。

        3.4 USB主機(jī)的應(yīng)用程序設(shè)計(jì)

        USB主機(jī)程序可以使用Cypress提供的CyAPI.lib庫(kù)來(lái)進(jìn)行編程。CyAPI.lib對(duì)應(yīng)Cypress提供的驅(qū)動(dòng)程序CyUsb.sys,為其提供了簡(jiǎn)單而且功能強(qiáng)大的C++編程接口,通過(guò)CyAPI.lib庫(kù)提供的函數(shù),可以對(duì)USB設(shè)備進(jìn)行讀寫(xiě)操作,這些函數(shù)主要是Open,Close和XferData。

        本文以VC++6.0為例,描述創(chuàng)建USB設(shè)備應(yīng)用程序的步驟。

        (1) 新建工程,并將 CyAPI.h,CyAPI.lib,cyioctl.h 三個(gè)文件加載到項(xiàng)目中。

        CyAPI.h 中定義了 CCyUSBDevice、CCyControlEndPoint等幾個(gè)重要的類(lèi);而cyioctl.h中則定義了讀取USB設(shè)備的幾個(gè)重要的結(jié)構(gòu)和宏。

        (2)在相應(yīng)的文件中(視、框架或者對(duì)話(huà)框,依具體情況),包含頭文件 CyAPI.h 和 cyioctl.h。

        然后定義USB設(shè)備全局變量和控制端點(diǎn)全局變量,并進(jìn)行初始化:

        三是創(chuàng)新技術(shù)。著力研發(fā)有益膳食平衡、降低營(yíng)養(yǎng)損失、消除有毒殘留的飲料加工新技術(shù);著力研發(fā)自動(dòng)化、智能化、信息化的飲料新裝備、新檢測(cè)技術(shù)、新零售模式;著力研發(fā)生態(tài)環(huán)保、清潔衛(wèi)生、安全可靠、質(zhì)量保障的飲料生產(chǎn)新工藝。以創(chuàng)新創(chuàng)造,大力提升中國(guó)飲料工業(yè)的整體競(jìng)爭(zhēng)力。

        CCyUSBDevice*USBDevice=new CCyUSBDevice();

        CCyControlEndPoint* ept= USBDevice- >Control EndPt;

        (3)在程序執(zhí)行時(shí),采用中斷方式,或者輪詢(xún)方式交換數(shù)據(jù)。以輪詢(xún)方式為例,則在幀循環(huán)中加入如下代碼:

        if(USBDevice- >IsOpen())

        {

        ept- >Target=TGT_DEVICE;

        ept- >ReqType=REQ_VENDOR;

        ept- >ReqCode=0xA2;

        ept- >Value=0;

        ept- >Index=0;

        PUCHAR buf=new UCHAR[6];

        ZeroMemory(buf,6);

        LONG buflen=6;

        ept- > XferData(buf,buflen);

        }

        首先判斷設(shè)備是否打開(kāi),然后指定操作碼,ept->Xfer-Data()完成傳輸,實(shí)現(xiàn)從端口讀數(shù)據(jù),或者向端口寫(xiě)數(shù)據(jù)。數(shù)據(jù)傳輸?shù)姆较蛴蒭pt->Direction來(lái)設(shè)置。

        (4)結(jié)束程序時(shí),關(guān)閉USBDevice。

        USBDevice- >Close;

        4 結(jié)論

        EZ-USB FX2芯片實(shí)現(xiàn)USB系統(tǒng),軟硬件程序設(shè)計(jì),相比較而言,簡(jiǎn)單、方便。本文介紹了設(shè)計(jì)USB系統(tǒng)的大體步驟,給出了USB鍵盤(pán)設(shè)計(jì)的實(shí)例。

        上述系統(tǒng)和程序經(jīng)過(guò)實(shí)際運(yùn)行,工作穩(wěn)定、可靠。

        [1]薛園園,趙建領(lǐng).USB應(yīng)用開(kāi)發(fā)實(shí)例詳解[M].北京:人民郵電出版社,2009.

        [2]錢(qián)峰.EZ-USB FX2單片機(jī)原理、編程及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.

        [3]Cypress Semiconductor.EZ-USB Technical Reference Manual[CP/DK].2006.3.

        猜你喜歡
        枚舉固件驅(qū)動(dòng)程序
        基于理解性教學(xué)的信息技術(shù)教學(xué)案例研究
        速讀·上旬(2022年2期)2022-04-10 16:42:14
        一種高效的概率圖上Top-K極大團(tuán)枚舉算法
        基于固件的遠(yuǎn)程身份認(rèn)證
        基于太陽(yáng)影子定位枚舉法模型的研究
        提取ROM固件中的APP
        一種通過(guò)USB接口的可靠固件升級(jí)技術(shù)
        奧林巴斯XZ—2新固件升級(jí)
        USB開(kāi)發(fā)中易混淆的概念剖析
        驅(qū)動(dòng)程序更新與推薦
        驅(qū)動(dòng)程序更新與推薦
        欧美性猛交内射兽交老熟妇| 亚洲国产91高清在线| 三级日韩视频在线观看| 成人做爰69片免费看网站野花| 色欲av亚洲一区无码少妇| 一区二区视频观看在线| 蜜桃视频网址在线观看| 亚洲av无码成h在线观看| 国产麻豆精品一区| 91在线在线啪永久地址| 亚洲综合精品在线观看中文字幕| 一区二区三区四区草逼福利视频| 鲁丝片一区二区三区免费| 欧美色aⅴ欧美综合色| 熟女系列丰满熟妇av| 日本一区二区国产精品| 无码欧美毛片一区二区三| 在线a免费观看| 亚洲伊人成综合人影院| av网站在线观看亚洲国产| 日本亚洲欧美色视频在线播放| av中文字幕综合在线| 精品少妇白浆一二三区| 黑人老外3p爽粗大免费看视频 | 亚洲天堂av在线免费观看| 精品国产青草久久久久福利| 国产96在线 | 亚洲| 久久亚洲精品国产精品婷婷| 东北女人一级内射黄片| 日韩少妇内射免费播放| 久久精品国产亚洲综合色| av一区二区三区综合网站| 亚洲日韩精品一区二区三区| 麻豆第一区MV免费观看网站| 国产成人自拍视频在线观看网站| 成人影院在线视频免费观看| 中国丰满熟妇xxxx| а的天堂网最新版在线| 日本系列有码字幕中文字幕| 亚洲 自拍 另类小说综合图区| 国产国拍亚洲精品午夜不卡17|