A20 gpio口控制,采用寄存器+linux驱动方式,可控制任意引脚
本帖最后由 ahha007 于 2015-5-5 15:12 编辑拿到板子之后,马上按照教程自己编译 kernel rootfs,下载到SD卡,可以运行,兴奋不已
之后就想怎么控制一个简单的 LED 灯。
我的方式查阅 芯片手册,根据寄存器来写。最后发现起始挺简单的
设置步骤如下:
1 .设置管脚输入或者输出 模式
2 .如果输入,可能还要加上拉
3 .写入输出数据 或者 读入输入数据
至于寄存器,则需要大家去翻阅芯片手册文档了。
简单地说下:
比如我要让 CB3 板子上的蓝灯 点亮
步骤如下:
1 查看原理图,找到 蓝灯 对应的 管脚为 PH21
2 寄存器映射
#define PORT_REG_BASE 0x01C20800 //gpio 寄存器基地址
porth_cfg = ioremap(PORT_REG_BASE + 0x104, 4); porth_data = ioremap(PORT_REG_BASE + 0x10C, 4);
这些寄存器地址就得我们去看芯片手册才能知道了
3.设置输出模式
/* 设置为输出 */
*porth_cfg &= ~(0x7 << 20);
*porth_cfg |= (0x01 << 20);
4. 输出 1
*porth_data |= (1<<21);
就这么简单
,当然点亮一个 LED 灯只是起点,学会这种操作寄存器的方式,最重要的是我们可以自己控制任意引脚。这样就可以根据外围模块的接口协议,控制到相应的模块。
例如我刚刚用 两个 IO 口模拟出 I2C 时序,用来控制 TTP229 ,触摸按键模块,测试可行
代码我上传了,可以参考下
代码是 linux驱动框架的
赞一个:) 不错哦:lol:lol 给力,赞赞赞:lol 谢谢LZ呀,正研究这个呢
页:
[1]