Chinaunix首页 | 论坛 | 博客
  • 博客访问: 655741
  • 博文数量: 516
  • 博客积分: 4119
  • 博客等级: 上校
  • 技术积分: 4288
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-30 17:29
文章分类

全部博文(516)

文章存档

2014年(4)

2013年(160)

2012年(352)

分类:

2013-01-04 17:14:02

原文地址:U-Boot中OMAP3的IO操作 作者:chenxibing008

U-Boot中OMAP3的IO操作

以蜂鸣器为例,蜂鸣器控制端口,GP131/MMC2_CMD

首先需要将MMC2_CMD/GP131配置为GPIO端口:
board/omap3/beagle/beagle.h文件:
210  MUX_VAL(CP(MMC2_CMD),          (IDIS  | PTD | EN  | M4)) /*GPIO_131*/\

移植代码中,所有引脚都以第一功能命名。
IDIS——禁止输入
PTD——下拉
EN——激活下拉
M4——IO功能

然后在board/omap3/beagle/beagle.c文件中添加爱如下代码:

unsigned int *gpio5_base = (unsigned int *)OMAP34XX_GPIO5_BASE;

writel(~GPIO3, gpio5_base + OFFS(GPIO_OE)); //

writel(GPIO3, gpio5_base + OFFS(GPIO_SETDATAOUT)); //

udelay(100000);
writel(GPIO3, gpio5_base + OFFS(GPIO_CLEARDATAOUT));


GPIO3和gpio5_base的由来:
32个IO一组,131=32*4 + 3,所以得到GP131在GPIO5组。
131 - 32*4 = 3,所以得到GPIO3

编译U-Boot,将会听到蜂鸣器名叫一声。



include/asm/arch/omap3.h

/* OMAP3 GPIO registers */
#define OMAP34XX_GPIO1_BASE             0x48310000
#define OMAP34XX_GPIO2_BASE             0x49050000
#define OMAP34XX_GPIO3_BASE             0x49052000
#define OMAP34XX_GPIO4_BASE             0x49054000
#define OMAP34XX_GPIO5_BASE             0x49056000
#define OMAP34XX_GPIO6_BASE             0x49058000



阅读(361) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~