OK6410 LED灯驱动
来源:互联网 发布:淘宝修改会员名的条件 编辑:程序博客网 时间:2024/04/28 06:43
User LED电路图
User LED CPU管脚接线图
从电路图文档中可以看出,LED是通过GPIO的M端口实现的,其中分别用到了GPM0/1/2/3管脚。根据LED的接线图可以看出只有在NLED0/1/2/3为低电平时,才会导通点亮。M端口有6个管脚,三个对应的寄存器:
GPMCON是控制寄存器,控制管脚的功能:用作输入,输出等。
GPMDAT是数据寄存器,内容与管脚电平相一致,也即GPM0为高电平那么对应的0b1为1.
GPMPUD是用来控制功率输出的,通常在电平输出不符合要求是,实现电平的上拉和下拉。
相关寄存器文档(芯片手册300 pg.)
Bootloader中对应GPM初始化的代码位于board/samsung/smdk6410/lowlevel_init.S
- /* LED on only #8 */
- ldr r0, =ELFIN_GPIO_BASE
- ldr r1, =0x00111111
- str r1, [r0, #GPMCON_OFFSET]
- ldr r1, =0x00000555
- str r1, [r0, #GPMPUD_OFFSET]
- ldr r1, =0x002a
- str r1, [r0, #GPMDAT_OFFSET]
相关寄存器定义在include/s3c6410.h
- #define ELFIN_GPIO_BASE 0x7f008000
- #define GPMCON_OFFSET 0x820
- #define GPMDAT_OFFSET 0x824
- #define GPMPUD_OFFSET 0x828
ldr指令用来将立即数装载如寄存器,str将r1中的值写入间址GPMDAT_OFFSET+r0。ELFIN_GPIO_BASE定义的就是实际的物理地址,不难看出bootloader是实地址寻址的。
前3行写入0x00111111到GPMCON寄存器,也即配置GPM0-5为输出。
接着2行写入0x00000555到GPMPUD寄存器,配置GPM0-5内部电阻下拉使能。这是因为如果要点亮LED,那么需要低电平,下拉可以保证下拉电阻接地产生低电平。
最后2行写入0x002a到GPMDATA寄存器,也即0b101010,所以对应的GPM0/2/4是低电平,GPM1/3/5是高电平,与此相连的LED1/3点亮,LED2/4熄灭,这也就是为何开发板上电后LED1/3点亮的原因。
http://blog.chinaunix.net/space.php?uid=20608849&do=blog&id=2141924
- OK6410 LED灯驱动
- OK6410 linux LED驱动
- OK6410的LED驱动
- OK6410 linux LED驱动
- linux OK6410 LED驱动
- OK6410:LED流水灯
- OK6410 点亮LED灯
- ok6410 linux驱动三 led驱动
- 基于platform总线的ok6410 LED 驱动
- OK6410字符设备驱动点亮LED
- ok6410 按键中断点LED灯
- [第一步]OK6410点亮LED灯
- 驱动实战-----OK6410驱动编程之led驱动1
- 驱动实战-----OK6410驱动编程之led驱动2
- OK6410的linux的LED驱动,GPIO驱动
- Linux驱动开发-OK6410-LED字符设备驱动实现过程
- OK6410 linux第一个字符型设备驱动:LED驱动
- linux设备驱动之我是led灯-基于OK6410开发板
- MySQLPlugin之如何编写Auth Plugin
- Galaxy Nexus 屏保
- 大数据热潮是我们这个时代的创新故事,就像四个世纪之前的显微镜
- 使用jxl进行excel表操作报错的问题
- update commit后找回update前数据
- OK6410 LED灯驱动
- 错误提示: 在此上下文中不允许使用名称 "XXX"。有效表达式包括常量、 常量表达式和变量(在某些上下文中)。不允许使用列名。
- 寒假-00,回顾与计划
- 打印控件更新至2,0,0,6
- UNIX学习笔记
- Andoid init.c
- lua 与 C交互 学习笔记
- Failed to create the Java Virtual Machine
- Ubuntu 下最好用的pdf阅读器okular