omap-am3517板级开发包说明

1、  操作GPIO的底层函数

操作一个IO口,首先要对其配置,例如工作模式、上下拉电阻、输入输出。

在板级开发包中提供了两种方法:

一、在linux/arch/arm/mach-omap2/board-am3517evm.c中有这样一个结构体

static struct omap_board_mux board_mux[] __initdata = {

       /* USB OTG DRVVBUS offset = 0x212 */

       OMAP3_MUX(CHASSIS_DMAREQ3,OMAP_MUX_MODE0|OMAP_PIN_INPUT_PULLDOWN),

       { .reg_offset = OMAP_MUX_TERMINATOR },

};

 

我们使用OMAP3_MUX这样一个宏来添加自己的配置。那么这些配置信息是怎么配置完成呢?

主要由下面的一个函数来完成,

omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);具体这个函数做什么,就不详细说了,主要是向对应寄存器写值。

 

二、第二种方法是使用一个函数接口:

omap_mux_init_gpio(57, OMAP_PIN_OUTPUT);

这个方法可以直接对某个IO口进行配置。

 

这两种方法都是可行的,但是要注意一点,那就是寄存器的地址是否与你自己所用芯片的一致,由于omap系列有多款处理器,地址还是有很大区别的。这些定义主要在

mux34xx.h mux34xx.c

 

当然,也可以不使用这些接口,可以自己映射操作。比如:

#define OMAP34XX_PADCONF_START  0x48002030

#define OMAP34XX_PADCONF_SIZE   0x05cc

#define GPIO_56_MUX_OFFSET  (0x480020B8 - OMAP34XX_PADCONF_START)

#define GPIO_57_MUX_OFFSET  (0x480020BA - OMAP34XX_PADCONF_START)  

 

#define GPIO_56_CFG_INT     0x011C  /* IEN | PU | PEN | M4 */

#define GPIO_57_CFG_INT     0x011C  /* IEN | PU | PEN | M4 */

 

void __iomem *base;

 

    base = ioremap(OMAP34XX_PADCONF_START, OMAP34XX_PADCONF_SIZE);

    if (base == NULL) {

        printk(KERN_ERR "tps65070 gpio ioremap failed\n");

        ret = -EINVAL;

        goto err_misc;

    }

    iowrite16(GPIO_56_CFG_INT, base + GPIO_56_MUX_OFFSET);

    iowrite16(GPIO_57_CFG_INT, base + GPIO_57_MUX_OFFSET);

    iounmap(base);

 

 

如何将一个GPIO设置为输出或输入:

 

gpio_direction_output(102, 1);设置为输出1

 

gpio_direction_input(96); 设置为输入

 

omap系列的GPIO有防抖功能,设置如下:

 

omap_set_gpio_debounce(102, 1); 防抖功能使能

omap_set_gpio_debounce_time(102, 0xa); 防抖时间

 

2、  omap驱动的大概的分布与位置:

omap-am3517板级开发包的一些说明 - 边缘之火 - 边缘之火
 

 

其他驱动都是按照惯例存放于divers等目录

 

http://sxw0624.blog.163.com/blog/static/20016803820132121397814/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值