免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2003 | 回复: 0

[其它] 【RP4418开发板学习】实际操作中GPIO功能配置 [复制链接]

论坛徽章:
0
发表于 2016-06-27 11:38 |显示全部楼层
对于研发或者项目方案的时候,用户在使用RP4418开发板进行开发,如果硬件上有所修改,那么必须要修改GPIO,本篇主要介绍RP4418开发板的GPIO功能配置与说明。
对GPIO的认识主要有以下几方面:
●开发板GPIO引脚软硬件对应
●GPIO输出功能设置
●GPIO输入功能设置
●GPIO电平读取
●GPIO中断功能设置
1、开发板GPIO引脚软硬件对应:

在RP4418开发板内核中,所有GPIO引脚被分为ABCDE等几组,每组32个。每组引脚起始地址定义如下图。



硬件引脚都对应分配在这几组引脚中:
例如:
GPIOB29对应PAD_GPIO_B + 29
硬件上的命名:GPIOB29
软件上的命名:PAD_GPIO_B + 29
GPIOC10对应PAD_GPIO_C + 10
硬件上的命名:GPIOC10
软件上的命名:PAD_GPIO_C + 10

2、GPIO输出功能设置:

如果要对GPIO配置为输出功能,输出高或输出低,就是拉高拉低的意思。
我们可以用int gpio_direction_output(unsigned gpio, int value)
从函数的参数来看,
unsigned gpio:这个是单个GPIO的值 ;
int value:这个是要设置的值(0代表低电平,1代表高电平)。
比如我要对LCD供电的GPIO拉高,那么软件上这样写:
gpio_direction_output(PAD_GPIO_C + 10, 1);
如果要拉低:
gpio_direction_output(PAD_GPIO_C + 10, 0);
我们在LCD驱动、触摸屏驱动、按键驱动等都有对GPIO设置,请参考源码对应的修改进行理解。
3、GPIO输入功能设置:

如果我们想了解一个外部的电平的高低情况,那么我们可以通过GPIO连接该路电平,接着把GPIO设成输入功能即可。
软件上用一个函数即可让GPIO变成输入功能
int gpio_direction_input(unsigned gpio)
从这上面我们只看到一个参数,就是对应GPIO的值
比如我要让GPIOC10改成输入功能
gpio_direction_input(PAD_GPIO_C + 10);
4、GPIO电平读取:

当我们需要读取当前GPIO的值(输出、输入、复用功能都可以读取),我们也可以通过函数去读取。
static inline int gpio_get_value(unsigned gpio)
参数GPIO代表需要读取GPIO对应的值。
比如我要读GPIOC10的值
gpio_get_value(PAD_GPIO_C + 10)
5、GPIO中断功能设置:

当我们需要引脚中断功能的时候,那么我们就需要实现GPIO的中断功能。
外部引脚设置为中断功能。这个是软件人员最喜欢的GPIO,因为我们想要获取外部设备状态变化情况的时候,第一,我们可以通过中断功能马上得到当前状态(响应时间很短,能够快速进行处理),另外,比轮询的方式节约更多的代码量和减轻CPU的负载。
配置中断功能时,要用到这个函数:




参数:
unsigned io :代表单个GPIO引脚
int on:置为1,则代表使能中断功能,置为0,则说明不使能中断功能,即不作为中断引脚。

我们当前使用的触摸屏驱动就是使用中断的方式
Gt9xx.c (driversinputtouchscreen)
触摸屏使用的了MCU_TOUCH_INT作为中断脚


MCU_TOUCH_INT 对应的GPIO引脚为GPIOB29 。

接下我们看一下驱动里怎么把GPIOB29脚配置为中断功能


GTP_GPIO_REQUEST(GTP_INT_PORT, "GTP_INT_IRQ");//先获取该引脚
gpio_direction_input(GTP_INT_PORT);//设为输入功能
nxp_soc_gpio_set_int_enable(GTP_INT_PORT,1);//再使能中断
GTP_GPIO_FREE(GTP_INT_PORT);//最后释放引脚

中断包含上升沿、下降沿、低电平、高电平这四种触发。
配置方面就有几种情况,请参考
irq.h (includelinux)



我们使用的RP4418开发板触摸屏是下降沿触发,所以我们配置的函数
request_irq(ts->client->irq,goodix_ts_irq_handler,IRQ_TYPE_EDGE_FALLING,"goodix_ts", goodix_ts);
对于触发的其他几种方式,可以到网上查找资料进行分析了解。


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP