omap gpio irq
想要让IO口作为从外部出发的中断口,可以分为以下几步
①先让其为gpio模式,并且为方向设置为输出,并且必须上拉
1,可以在平台上添加
OMAP4_MUX(SDMMC1_DAT4, OMAP_MUX_MODE3 | OMAP_PIN_INPUT_PULLUP),
SDMMC1_DAT1 这个名字为原理图端口上指定端口的第一个名字
INPUT_PULLUP的含义就不用说了~~
OMAP_MUX_MODE3 指定为gpio模式
2,也可以在驱动里边用这个函数直接定义
omap_mux_init_gpio(106,OMAP_PIN_INPUT_PULLUP);
//这个函数的好处是不用指定gpio模式
106是io的序号,跟上边平台中的SDMMC1_DAT4等价
②申请io口
error = gpio_request(IRQ_GPIO_UP, NULL);
if (error < 0) {
printk("oled Failed to request GPIO %d, error %d\n",
IRQ_GPIO_UP, error);
return error;
}
③:这部有没有必要我没测试过,估计作用是再次确认为输入口,我是参考gpio_key相关代码是这么写的
error = gpio_direction_input(IRQ_GPIO_UP);
if (error < 0) {
printk("oled :Failed to configure direction for GPIO %d, error %d\n",
IRQ_GPIO_UP, error);
return error;
}
irqflags |= IRQF_SHARED; //其他的io口可以共享,所以就可以被其他的中断来disable掉
④:申请中断 (其实等价于request_irq函数)
error = request_any_context_irq(gpio_to_irq(IRQ_GPIO_UP),light_up ,IRQF_TRIGGER_FALLING,"OLED_GPIO_106",NULL);
if (error < 0) {
printk( "oled :Unable to claim irq %d; error %d\n",
IRQ_GPIO_UP, error);
return error;
}
我测试时遇到的问题是:只是指定为了OMAP_PIN_INPUT而没有指定为OMAP_PIN_INPUT_PULLUP
打印寄存器的时候一直发现GPIO_DATAIN跟成功的不一样 才知道要设定为pullup才能稳定中断,否则自己的gpio口电平悬空未知~~
关于omap4 GPIO中断还有复用的情况
比如:gpio_3跟gpio_wk3就复用一个引脚request_irq(GPIO_TO_ITQ(3),)对应于两个引脚
如果你是用gpio_wk3引脚产生中断的话就应该将gpio_3设置为其他模式 代码如下:/arch/arm/mach-omap2/board-omap4panda.c中添加
OMAP4_MUX(SIM_CD, OMAP_MUX_MODE3 | OMAP_PIN_INPUT_PULLUP),
OMAP4_MUX(KPD_ROW1, OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLUP),
或
omap_mux_init_signal("kpd_row2.gpio_3", OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLUP); /* gpio_3 */
omap_mux_init_signal("sim_cd.gpio_wk3", OMAP_MUX_MODE3 | OMAP_PIN_INPUT_PULLUP | OMAP_WAKEUP_EN ); /* gpio_wk3 */
omap gpio irq相关推荐
- android gpio驱动实例,Android/Linux 驱动层对GPIO口的操作方法和相关代码
实例: unsigned int otg_en_pin=952; ----->高通的gpio的基础值为902,这里我们时间的gpio为50,即这里定义值是要设置为952. //young.yan ...
- 【Device Tree】设备树(一)——GPIO
以RK3328为例,介绍设备树在GPIO方面的应用. 引脚图如下 一.首先在DTS文件中增加GPIO资源描述: gpio_demo: gpio_demo {status = "okay&qu ...
- A20 GPIO中断类型差别结果迥异的问题思考
A20GPIO中断类型差别结果迥异的问题思考 最近在使用全志A20做开发时,发现在处理中断的时候,用电平触发模式,报中断比较乱,用边沿触发则很稳定,不会乱报.笔者感到比较困惑,笔者用电平触发写的cod ...
- 痞子衡嵌入式:利用GPIO模块来测量i.MXRT1xxx的系统中断延迟时间
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx的系统中断延迟时间. 在 <Cortex-M系统中断延迟及其测量方法简介> 一文里,痞子衡介绍了 Cor ...
- S3C6410 中的 cascaded irqdomain 之 gpio
文章目录 VIC 中断 与 gpio 中断 的硬件拓扑图描述 linux cascaded irq domain irq domain 初始化时 获取 IRQ number(软件中断号) 时 中断发生 ...
- 标准linux4.4--驱动开发(二)GPIO驱动编写
标准linux4.4--驱动开发(二)GPIO驱动编写 简介 介绍GPIO DTS配置 在驱动文件中关联DTS的配置 驱动说明 中断 复用 FAQs 简介 1.什么是linux内核模块 在linux中 ...
- linux设备驱动程序--gpio控制
gpio驱动程序 上一章节linux设备驱动程序--创建设备节点章节主要介绍了linux字符设备驱动程序的框架,从这一章节开始我们讲解各种外设的控制,包括gpio,i2c,dma等等,既然是外设,那就 ...
- firefly-rk3399开发板100天之第2天 记录firefly-rk3399 wiki中gpio操作
firefly-rk3399开发板100天之第2天 记录firefly-rk3399 wiki中gpio操作 Docs » GPIO 使用 GPIO 使用 简介 GPIO, 全称 General-Pu ...
- RK3568 GPIO 使用
说明 GPIO, 全称 General-Purpose Input/Output(通用输入输出),是一种软件运行期间能够动态配置和控制的通用引脚. 所有的 GPIO 在上电后的初始状态都是输入模式,可 ...
最新文章
- Template Metaprogramming
- matlab图像分类器,Matlab 基于svm的图像物体分类
- 第1章 Ext JS介绍与快速入门[1/4]
- 优先队列 priority_queue 用法 (struct,非cmp)
- 详解怎么申请注册一个自己的电子邮箱邮件?怎么注册邮箱账号?
- data[i] is underfined
- 弱口令漏洞与验证码绕过——渗透day04
- 支付宝与微信对账文件解析
- F5 GTM DNS 知识点和实验 3 -加速dns解析
- CAD图纸转换TIFF格式时修改背景颜色
- python手机壁纸超清_Python爬虫-王者荣耀高清壁纸下载
- 【Proteus仿真】【51单片机】LED点阵花样显示设计
- 【每天学习一点新知识】Windows日志分析
- idea回退操作reset、revert
- win10系统怎么安装显卡驱动,驱动人生详细教程
- 毕业设计—共享图书小程序3.0 全新UI
- 关于“IT学子成长指导”专栏及文章目录
- 重构手法之重新组织函数
- 不懂技术的项目经理,学会这2点就能搞定项目!
- 关于XLL加载项动态加载、卸载的演示及XLL函数自定义类型注册的演示