linux驱动学习之LED篇(一)
来源:互联网 发布:织梦5.7自动内链失效 编辑:程序博客网 时间:2024/05/01 01:16
最近开始linux的字符设备驱动的学习,对于我这种菜鸟,还是从LED的驱动开始吧!
学习一个驱动,我们首先要知道其工作原理和基础的硬件控制。
我的开发板是FL2440:
在s3c2440的cpu中有130多个多功能的输入输出引脚,分为8个端口:
— Port A(GPA): 25-output port
— Port B(GPB): 11-input/out port
— Port C(GPC): 16-input/output port
— Port D(GPD): 16-input/output port
— Port E(GPE): 16-input/output port
— Port F(GPF): 8-input/output port
— Port G(GPG): 16-input/output port
— Port H(GPH): 9-input/output port
— Port J(GPJ): 13-input/output port
这些端口都可以很容易的通过软件配置,他们的寄存器是相似的:(x为B、...、 H/J,没有GPAUP寄存器)
即为GPxCON用于选择引脚功能,GPxCON中每两位控制一根引脚:00表示输入、01表示输出、10表示特殊功能、11保留不用。GPxCON是用来设置输入输出属性的,也就是说,你不是要控制LED吗?现在你知道了LED的引脚有GPB0,GPB1,而GPBCON又是控制这些引脚的属性,那么现在我们要控制它闪烁就要设置这些引脚的属性为输出。
GPxDAT用于读/写引脚数据,当引脚被设为输入时,读此寄存器可知相应引脚的电平状态是高还是低;当引脚被设为输出时,写此寄存器相应位可以令此引脚输出高电平或是低电平。
另外,GPxUP用于确定是否使用内部上拉电阻。某位为1时,相应引脚无内部上拉电阻;为0时,相应引脚使用内部上拉电阻。上拉电阻的作用在于:当GPIO引脚处于第三态(即不是输出高电平,也不是输出低电平,而是呈高阻态,即相当于没接芯片)时,它的电平状态由上拉电阻、下拉电阻确定。
我们用到的寄存器的地址和位定义如下:
我们可以通过配置这些来控制我们的LED灯。因为:
从图中可以看出LED0、1、2、3分别连接到S3C2440的GPB5、GPB6、GPB8、GPB10这四个Pin脚,且为共阳极,当IO口输出为低时,对应的LED会点亮。
以LED0为例,其对应的pin脚为GPB5,当GPB5/nXBACK被配置成GPIO,方向为output后,若输出低电平,则LED0会被点亮。
(板子不一样的话,连接会不一样自己可以根据自己板子的底板原理图查找)
- linux驱动学习之LED篇(一)
- linux设备驱动篇之LED驱动(一)
- linux 驱动之led子系统(一)
- linux驱动学习之LED篇(二)
- (一)linux驱动之混杂设备驱动(led)
- linux设备驱动(一)---字符设备之led驱动
- Linux下基于Platform总线led驱动学习(一)
- linux设备驱动之led子系统<一>
- linux设备驱动之led子系统<一>
- platform驱动学习一之led实例
- linux设备驱动篇之LED驱动(二)
- 树莓派linux驱动学习之LED控制
- 树莓派linux驱动学习之LED控制
- Linux字符驱动学习之LED
- 树莓派linux驱动学习之LED控制
- 07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-LED字符设备驱动
- linux驱动之--led驱动
- linux驱动开发之路(一)--LED驱动(misc设备)
- 产品经理的本职是什么?
- NavigationController
- Linux 学习
- 【Cocos2d-X-2.1.4游戏引擎】一周印象
- Cx state
- linux驱动学习之LED篇(一)
- 深度剖析:CDN内容分发网络技术原理
- UI学习三步走
- JVM基础研究整理之六--分代垃圾回收详述2
- DEDECMS下MYSQL查询嵌套及COUNT(*)等查询结果的输出
- 【Tesseract-OCR】在VS2010环境下调用API方法---简单快速之总结
- 关于面试的准备(一)
- 在嵌入式开发中常用两种服务tftp与nfs(资源的共享与上传,下载)
- UITabView