查看: 1051|回复: 0

【疯壳·嵌入式平板电脑开发教程4】设备按键驱动实验教程

[复制链接]
  • TA的每日心情
    开心
    2022-4-17 15:37
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2022-8-24 18:09:50 | 显示全部楼层 |阅读模式
    分享到:
    设备按键驱动实验教程
    ——疯壳·嵌入式平板开发





        第一节 引言 --- 如何看一个 GPIO 按键的电路原理图

        下图来源于文档 3128_sdk_a02_20170325.pdf 中第 9 页和第 12 页。
        如下第一张图 PMIC_PWRON 引脚在按钮按下前一直保持高电平,按键按下后变成低电平并触发中断休眠/唤醒屏幕。第一张图所示 pmic_pwron 连接的是一个按键电路,第二张图所示 pmic_pwron 连接的是 GPIO0_A2。综上所述,按键可以由 gpio 来实现的。

    1.0.png
    1.1.png    
        图1

        第二节 按键配置实例 --- 以 GPIO2_D1 为例,高电平触发上升沿来模拟按键被按下

        gpio 引脚通常可以配置成输入和输出功能。作为输入功能,一般在 linux 系统里面是以中断的方式来使用;如果作为输出功能一般主要用来提供一个高低电平信号。本文利用  gpio 的输入功能来模拟一个按键。
        本章主要以 GPIO2_D1 为例子讲解,给 GPIO2_D1 一个高电平来触发上升沿产生中断操作并串口打印一条语句。

    2.png    
        图2
        图示红框位置表示将要配置的 gpio 在开发板上的位置

    3.png   
        gpio 在电路图中的位置
        图3

        第三节 rk3128 开发板 gpio 在 DTS 中的配置

        rk3128 驱 动 配 置 使 用 的 是 Device Tree 的 方 式 , 所 以 在 kernel 路径 $(dir)\rk3128-source\kernel\arch\arm\boot\dts 中 rk3128-study.dts 描述了我们整个系统的驱动配置,gpio 的配置如下所示:

    代码1.png    
    代码1

        第四节 实验步骤

        1.如何看中断是否注册成功 --- cat /proc/interrupts
        我们注册的中断名字是:gpio_input_test 对应于中断号 160

    4.png    
        图4
        2.kernel 实验步骤

    5.png    
        图5
        第五节 实验现象
        以一根杜邦线为例,低电平触发中断

    6.png    
        图6
        第六节 AD 按键

        什么是 AD 按键:“AD 检测法实现简单实用的按键”,仅仅需要一个 AD 接口和若干的电阻,就可以实现 1  个,2 个,3 个        多个按键输入。原理就是按键按下的时候,IO 口将检测
        到不同的电压值。
        本节第一张图所示三个按键就组成了 AD 按键并对应不同的阻值报告给 cpu,cpu 检测后知道那个键被按下,相应的 driver 配置看$(dir)\rk3128-source\kernel\arch\arm\boot\dts 中rk3128-study.dts 的&adc{ }选项,源代码对应文件是$(dir)\rk3128-source\kernel\drivers\input\keyboard\rk_keys.c
        下图来源于文档 3128_sdk_a02_20170325.pdf 中第 9 页。

    7.png    
        图一 AD 按键原理图
        图7

    8.png    
        图二 cpu 侧接线图
        图8

        第七节 PMIC_PWRON 休眠/唤醒屏幕

        本节主要是继续第一节课的原理图讲解一下屏幕的休眠/唤醒功能(gpio 的一个应用) 相应的 driver 配置看$(dir)\rk3128-source\kernel\arch\arm\boot\dts 中 rk3128-study.dts的&adc{...}选项,源代码对应文件是$(dir)\rk3128-source\kernel\drivers\input\keyboard\rk_keys.c
        注意中断响应函数 keys_isr(int irq, void *dev_id),具体的屏幕休眠/唤醒由它来处理。




        文件下载请点击: 4、设备按键驱动实验.pdf (887.32 KB, 下载次数: 0)
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-19 01:59 , Processed in 0.126955 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.