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

        ?

        一種用于嵌入式系統(tǒng)的USB鍵盤控制接口電路設(shè)計(jì)

        2015-10-08 14:57:41劉海艷等
        科技視界 2015年27期

        劉海艷等

        【摘 要】本文介紹了一種基于STM32的可定制的USB鍵盤控制接口電路,與傳統(tǒng)鍵盤方案進(jìn)行了比較,介紹了電源部分、USB接口部分的設(shè)計(jì),針對(duì)矩陣鍵盤多按鍵的特殊需求,對(duì)基本按鍵提出了改進(jìn)思路及軟件識(shí)別方法,在嵌入式系操作系統(tǒng)如WINCE、LINUX上有較高的通用性和靈活性。

        【關(guān)鍵詞】STM32;USB接口;矩陣鍵盤;多按鍵

        0 引言

        隨著科技的不斷進(jìn)度與發(fā)展,嵌入式系統(tǒng)無疑是當(dāng)前最熱門最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一,像常見到的手機(jī)、PDA、機(jī)頂盒、高清電視(HDTV)、路由器、汽車電子、智能家電、醫(yī)療儀器、航天航空設(shè)備等都是典型的嵌入式系統(tǒng)。

        嵌入式系統(tǒng)中人機(jī)交互技術(shù)最為重要,WINCE和LINUX系統(tǒng)比較流行,然而這兩種系統(tǒng)的驅(qū)動(dòng)開發(fā)門檻較高,尤其對(duì)于特殊的矩陣鍵盤而言,實(shí)現(xiàn)基于USB接口的控制電路具有一定的難度。本文設(shè)計(jì)了一種基于STM32的可定制的USB鍵盤控制電路,比一般的專用的USB鍵盤接口芯片更加簡(jiǎn)單方便,利用軟件的可以進(jìn)行靈活的修改,大大的提高矩陣鍵盤的通用性。

        1 方案比較

        傳統(tǒng)方案:標(biāo)準(zhǔn)的PC104鍵盤大多采用專用的USB鍵盤芯片(如MC178-04B),其價(jià)格便宜而被廣泛運(yùn)用,但是其接口比較固定,不利于開發(fā)者自己定制,例如按鍵連發(fā)、多鍵識(shí)別(A,E同時(shí)按下)等特定的功能需求,傳統(tǒng)方案的缺陷就慢慢的凸顯出來了。

        本文設(shè)計(jì)的方案:運(yùn)用帶USB接口功能的MCU(STM32F103ZET芯片)制作USB HID設(shè)備,根據(jù)矩陣鍵盤設(shè)計(jì)鍵碼掃描程序,可以完美的解決類似于上面的需求,同時(shí)STM32的芯片的性價(jià)比高、開發(fā)簡(jiǎn)單,適合一般的嵌入式開發(fā)工程師。

        2 系統(tǒng)的硬件設(shè)計(jì)(圖1)

        系統(tǒng)總共分為5部分:系統(tǒng)供電部分,JTAG調(diào)試接口,矩陣鍵盤模塊,USB從設(shè)備接口,STM32F103ZET芯片內(nèi)部包含AD模塊,為了能夠使系統(tǒng)能夠正常運(yùn)行,盡管AD模塊未使用,設(shè)計(jì)時(shí)應(yīng)給予相應(yīng)正常供電,使引腳VREF+、VDDA接VCC,引腳VREF-、VSSA接GND,否則系統(tǒng)不能正常運(yùn)行。

        2.1 電源部分

        系統(tǒng)供電部分采用LT1117三端可調(diào)線性穩(wěn)壓芯片,輸出電流可達(dá)800mA,采用SOT-223封裝以減小空間,輸入端和輸出端分別接入100nF和10uF電容進(jìn)行濾波降低電壓紋波,最終使電壓穩(wěn)定到3.3V。

        2.2 USB 模塊接口電路設(shè)計(jì)(圖2)

        根據(jù)USB1.1官方協(xié)議可知,USB為主從設(shè)備區(qū)分是有硬件電路實(shí)現(xiàn)的,USB HID設(shè)備屬于從設(shè)備,USB上拉電壓接在D+線上,所以本設(shè)計(jì)USB實(shí)現(xiàn)全速通訊。當(dāng)開關(guān)開啟時(shí),嵌入式系統(tǒng)就能自動(dòng)開始枚舉該USB設(shè)備。

        2.3 矩陣鍵盤接口設(shè)計(jì)

        傳統(tǒng)的矩陣的鍵盤識(shí)別方法為掃描法和線反轉(zhuǎn)法,只能識(shí)別單個(gè)按鍵,硬件電路設(shè)計(jì)如圖3所示:

        由上圖可知當(dāng)雙按鍵按下時(shí)產(chǎn)生了線與邏輯沖突,對(duì)該設(shè)計(jì)進(jìn)行改進(jìn),采用行線為開漏輸出,列線上有10K的上拉電阻,當(dāng)雙按鍵按下時(shí)1和0線與產(chǎn)生0,這樣有效的識(shí)別了雙按鍵,如圖4所示:

        3 軟件設(shè)計(jì)要點(diǎn)

        3.1 USB鍵盤配置

        USB通信協(xié)議中涉及了大量的描述符等相關(guān)信息其中包括設(shè)備描述符,配置描述符,接口描述符,HID描述符等,在STM32的庫文件中給出了相關(guān)的框架hw_config.c usb_desc.c usb_istr.c usb_prop.c usb_pwr.c嵌入式開發(fā)者進(jìn)行相關(guān)的框架填寫便可進(jìn)行正確的USB通信,USB鍵盤相關(guān)配置如下:

        //開啟相關(guān)時(shí)鐘

        /* Select USBCLK source */

        RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);

        /* Enable USB clock */

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);

        //開啟相關(guān)USB通信中斷

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

        NVIC_InitStructure.NVIC_IRQChannel =

        USB_LP_CAN_RX0_IRQChannel;

        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

        NVIC_Init(&NVIC_InitStructure);

        //USB發(fā)送緩存

        u8 Key_Buffer[8] = {0,0,0,0,0,0,0,0};

        Key_Buffer[0] = cmd;

        Key_Buffer[2] = Keys;

        /*copy mouse position info in ENDP1 Tx Packet Memory Area*/

        UserToPMABufferCopy(Key_Buffer, GetEPTxAddr(ENDP1),8);

        SetEPTxValid(ENDP1)。

        3.2 多按鍵鍵盤識(shí)別

        由于需要多按鍵識(shí)別處理,使用全鍵盤掃描另外再添加了橫向多按鍵處理,縱向多按鍵處理,處理步驟如下所示:

        (1)行循環(huán)輸出senCode[RSIZE] =

        {0X00FE,0X00FD,0X00FB,0X00F7,0X00EF,0X00DF,0X00BF,0X007F};

        (2)列循環(huán)讀入getColDate();

        (3)全掃描完畢后分別對(duì)獲取的列數(shù)據(jù)進(jìn)行解析:

        如果數(shù)據(jù)為下列之一

        {0XFE00,0XFD00,0XFB00,0XF700,0XEF00,0XDF00,0XBF00,0X7F00};

        則說明為單按鍵按下直接發(fā)送相關(guān)字符;

        否則,dat & 0XFF00 != 0XFF00 則說明為雙按鍵按下,分別對(duì)數(shù)據(jù)的每一位進(jìn)行處理判斷在哪一位為0說明在那一列當(dāng)中有按鍵按下,同時(shí)與行輸出相結(jié)合從而有效的識(shí)別出了相關(guān)多按鍵按下;

        (4)從按鍵映射表中找到相關(guān)的字符鍵碼,利用USB_SendChar()接口函數(shù)與主機(jī)設(shè)備進(jìn)行通信。

        4 結(jié)論

        本文提出的基于USB接口的矩陣鍵盤控制接口電路,與傳統(tǒng)鍵盤方案進(jìn)行了比較,其可定制的特點(diǎn)具有更大的靈活性。針對(duì)矩陣鍵盤多按鍵的特殊需求,對(duì)基本按鍵提出了改進(jìn)的方法,對(duì)應(yīng)多按鍵的識(shí)別上,提出了合理的解決步驟。在嵌入式系操作系統(tǒng)如WINCE、LINUX上有較高的通用性和靈活性,對(duì)于有外接4X4、8X8等矩陣鍵盤,手機(jī)鍵盤等,具有一定的實(shí)用價(jià)值。

        【參考文獻(xiàn)】

        [1]李小琦,汪紅.基于嵌入式Linux的USB鍵盤驅(qū)動(dòng)設(shè)計(jì)[J].科技資訊,2009(19):97-98.

        [2]李麗宏, 郝志剛. 嵌入式Linux的USB驅(qū)動(dòng)設(shè)計(jì)[J]. 電子設(shè)計(jì)工程.2011(11): 170173.

        [3]張淼,趙冒童.基于STM32F103RBT6芯片的USB鍵盤設(shè)計(jì)與實(shí)現(xiàn)[J]..福建電腦.2014.

        [4]12:122-125[Z].

        [責(zé)任編輯:鄧麗麗]

        亚洲精品无码不卡在线播放he| 爱爱免费视频一区二区三区| 国产成人精品一区二区20p| 青青国产揄拍视频| 国产av日韩a∨亚洲av电影| 国产精品女同学| av天堂免费在线播放| 国产夫妇肉麻对白| 欧美 国产 日产 韩国 在线| 久久99精品这里精品动漫6| 一区二区三区在线观看视频精品| 久久婷婷五月综合97色直播| 日产精品久久久久久久性色| 中文乱码字幕高清在线观看| 蜜桃视频网址在线观看| 特黄 做受又硬又粗又大视频| 精品亚洲国产成人av| 九九99久久精品午夜剧场免费| 国产自拍视频一区在线| 日本久久久久亚洲中字幕| 亚洲国产高清在线一区二区三区| 国内精品91久久久久| 国产一区二区黑丝美胸| 日本一区二区在线播放| 精品推荐国产精品店| 日本女优在线观看一区二区三区| 亚洲中文av中文字幕艳妇| 粉嫩被粗大进进出出视频| 久久久久久久中文字幕| 99国语激情对白在线观看| 亚洲人成网站18禁止| 亚州少妇无套内射激情视频| 久久99久久99精品免视看国产成人| 亚洲精品第四页中文字幕| 伊人久久大香线蕉av不卡| 亚洲精品第一国产麻豆| 国产高清自产拍av在线| 男人添女人囗交做爰视频| 韩国v欧美v亚洲v日本v| 经典女同一区二区三区| 美腿丝袜在线一区二区|