Am335x GPio、按键函数\管脚配置

GPIO 引脚号转换为中断号: irq_num = gpio_to_irq(gpio_pin);
设置中断出发方式为下降沿触发 irq_set_irq_type(irq_num, IRQF_TRIGGER_FALLING);
申请中断: request_irq(irq_num, irq_proc, IRQF_DISABLED, GPIO_DEVICE_NAME, NULL);

linux/arch/arm/mach-omap2/board-am335xevm.c 文件中有计算公式:
先获得GPIO的pin number:
/* Convert GPIO signal to GPIO pin number */
#define GPIO_TO_PIN(bank, gpio) (32 * (bank) + (gpio))
然后获得irq中断号:
irq = OMAP_GPIO_IRQ(pin_num)
其中pin_num=GPIO_TO_PIN(bank,gpio),比如GPIO1_7,pin_num=32*1+7=39, irq=160+39=199

Am335x 的GPIO驱动在 drivers/misc目录下

配置内核,使内核变为抢占式,将开发板带的按键驱动从配置中去掉(新写的驱动,在request_irq()中失败,打开proc/interrupts 发现按键驱动已被注册)
#define GPIO_TO_PIN(bank, gpio) (32 * (bank) + (gpio))
int pin_val=GPIO_TO_PIN(2, 0);
ret=gpio_request(pin_val, “gpio_key”);
ret = gpio_direction_input(pin_val);
irq = gpio_to_irq( pin_val);
request_irq(irq, gpio_interupt, IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, “gpio_2_0”, 0);

tatic struct pinmux_config d_can0_pin_mux[] = {
{“uart0_rxd.d_can0_tx”, OMAP_MUX_MODE2 | AM33XX_PULL_ENBL},
{“uart0_txd.d_can0_rx”, OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP},
{NULL, 0},};
setup_pin_mux(d_can0_pin_mux);

用管脚配置工具得到如下配置:
0x90 ( PIN_INPUT | MUX_MODE7 ) /* (R7) gpmc_advn_ale.gpio2[2] */
0xa8 ( PIN_INPUT | MUX_MODE7 ) /* (R3) lcd_data2.gpio2[8] */
0xac ( PIN_INPUT | MUX_MODE7 ) /* (R4) lcd_data3.gpio2[9] */
0xe4 ( PIN_INPUT | MUX_MODE7 ) /* (R5) lcd_hsync.gpio2[23] */
0xec ( PIN_INPUT | MUX_MODE7 ) /* (R6) lcd_ac_bias_en.gpio2[25] */
在board-am335xevm.c 中,配置应该成
{“gpmc_advn_ale.gpio2_20”, OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
{“lcd_data2.gpio2_8”,OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
{“lcd_data3.gpio2_9”,OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
{“lcd_hsync.gpio2_23”,OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
{“lcd_ac_bias_en.gpio2_25”,OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值