《手把手教你做平板电脑15设备按键驱动实验.docx》由会员分享,可在线阅读,更多相关《手把手教你做平板电脑15设备按键驱动实验.docx(7页珍藏版)》请在第一文库网上搜索。
1、设备按键驱动实验嵌入式平板开发视频地址:https:/fengke.c1ub/GeekMart/suf5W0Cuz3p.isp设备按键驱动实验教程第一节引言一如何看一个GPIO按键的电路原理图下图来源于文档3128_sdk_a02_20170325.pdf中第9页和第12页。如下第一张图PMIC_PWR0N引脚在按钮按下前一直保持高电平,按键按下后变成低电平并触发中断休眠/唤醒屏幕。第一张图所示pmic-pwron连接的是一个按键电路,第二张图所示PmijPWrOn连接的是GPIOO_A2。综上所述,按键可以由gpio来实现的。图一图二.第二节按键配置实例以GPIO2_D1为例,高电平触发上升
2、沿来模拟按键被按下gpio引脚通常可以配置成输入和输出功能。作为输入功能,一般在Iinux系统里面是以中断的方式来使用;如果作为输出功能一般主要用来提供一个高低电平信号。本文利用gpio的输入功能来模拟一个按键。本章主要以GPIO2_D1为例子讲解,给GPIO2_D1一个高电平来触发上升沿产生中断操作并串口打印一条语句。图示红框位置表示将要配置的gpi。在开发板上的位置UIaA1CDC/GMAC/EMACGPIO2.B01CDC.C1E8CSDCUQGMAC.RXDV.dGPIO2BV1CDCHSYNC/EBCSO1EZGMACeTXC1KdGPIO2B21C6fcjSYNCZE的_SDOEG
3、MgRSNOPO2B3JCDCDEWEBCGDC1K/OMAC.RXC1Xd1COCDO/EBCSODOO1CDC-D1EBC*SO11CDC二D2/EBC二SODO21CoC-D3/EBC-SODO31COCMEBCSDDO41C*D5EBC-SDDO51CDC二D6/EBC二SDDOe1C0CD7EBCSDDO71C(XrD8BC-SDCEO1COCD9EBCSDCE1GP102B4.C0C-D10EBCSOCE2/0MACMDIO_dGPK2-e5-COC-D11/EBC_SDCE3MAC_TXEN_dGPIO2B6.C0CD12BCSDCE4GMACC1K-dGRO2B71C0CD13
4、EBCSDCE5MACRXER-dGPtO2,C0.CDCD14EBC-VCOMGMACRXD1_dGP*02二CmCDCSI5EBUGDOEXSMAC二RXDONGPC2.C0CD16EBC-GDSPGMACTXD1dGP1O2C3.CDCD17EBCGOPWfWGMACTXDOdGPIo2C4XDCOtaBC-GOR12C2SOAX3MAC-RXDdOP102C5-CDC-519BC-SOSHR2C2-SCU0MAC-RD2-cGHO2_C1C0C_D20BJBORDERQZGPSJIGN/0MAC_TXD2_GP1arC7.CDC-D21EBCBORDER1GPSMAGX3MACTXD3
5、GP2DO.CDCD22EBCGDPWR1GPiSC1K/GMACCO11GPI02_D1QCDC_D23/EBC_GDPWR2/GMACaIDC二dRK3Y8:bga316-14x1065yUS1CDCCXKT5遣1CDDEY13DPOPWi51Cb-EHm2)NY111q(TD2npdiFWI1咂卫物出_EyYio1CtCMAW1O.C(DSAkD2NW8空#虾YS1gC口AMCDY11CP_08制?豆汴W71(1DMP1C1RU41CDDTTi_【_31cbZtyMg?iiGPO2-D1VCe1O3DO11VDD11P2.CD_D1774-CVCCe1CDgpi。在电路图中的位置第三节r
6、k3128开发板gpio在DTS中的配置rk3128驱动配置使用的是DeViCeTree的方式,所以在kerne1路径S(dir)rk3128-sourcekerne1archarmbootdts中rk3128-study.dts描述了我们整个系统的驱动配置,gpi。的配置如下所示:gpio:htfyun_gpio01compatib1ehtfyun-gpio;/definetheGPIOusedforq7t(czc)zeverygpiodefinestheGPIOandproperty./output:GPIO_ACTIVE_1OWmeansoutput0,GPIO_ACTIVE_HIGHm
7、eansoutput1./input:a1waysuseirq.input-testgpio=;input;irq;);第四节实验步骤1.如何看中断是否注册成功一catprocinterrupts我们注册的中断名字是:gpio_input_test对应于中断号160106:15000GICdebug-signa1160:0000GPIOgpio_input_test161:0000GPIOrkO82.kerne1实验步骤第五节实验现象以一根杜邦线为例,低电平触发中断第六节AD按键什么是AD按键:AD检测法实现简单实用的按键,仅仅需要一个AD接口和若干的电阻,就可以实现1个,2个,3个.多个按键
8、输入。原理就是按键按下的时候,IO口将检测到不同的电压值。本节第一张图所示三个按键就组成了AD按键并对应不同的阻值报告给cpu,cpu检测后知道那个键被按下,相应的driverf1!M#$(dir)rk3128-sourcekerne1archarmbootdts中fk3128Study.dtS的&adc选项,代码对应文件是$(小$3128.SoUrCekeme1driversinputkeyboarddJkeyS/下图来源于文档3128_sdk_a02_20170325.pdf中第9页。图一AD按键原理图NPORdTESTdXIN24MXOUT24MA3P11DVDD11C/DP11DVDD
9、11UOdNP11VCCIORK3128_CRK3128bga316-14x14065yCQsnOTGDPOTGeDMOTGIDOTGeVBUSHOSTeDPHOSTeDMUSBeEXTRUSB_DVDo11USB-AVDD33SAR_AVDD33ADCINOADCIN1ADCIN2EFUSEVCCJOIOTG-DPR41Y16CnGDMR0402RI1OTG。U11OTG-DET叩4HOSjDPY14hostZdm.QVDo_11TIO.QVCCJOOVCCJOH,iAOkevjnhp-detv10ADC2R50NCR0402H,VDDJ1VCCJO图二CPU侧接线图第七节PM1C_PWRON休眠/唤醒屏幕本节主要是继续第一节课的原理图讲解一下屏幕的休眠/唤醒功能(gpi。的一个应用)相应的driverfj131S(dir)rk3128-sourcekerne1archarmbootdts中rk3128-study.dts的&adc.选项,源代码对应文件是$(dir)rk3128-sourcekerne1driversinputkeyboardrk_keys.c注意中断响应函数keysjsr(intirq,void*devjd),具体的屏幕休眠/唤醒由它来处理。