完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
RP4418开发板是荣品电子采用三星S5P4418芯片研发的一款多功能四核S5P4418开发板,对于企业产品研发或者项目方案的时候,用户在使用荣品开发板进行开发,如果硬件上有所修改,那么必须要修改GPIO,本篇主要介绍RP4418开发板的GPIO功能配置与说明。 对GPIO的认识主要有以下几方面: ●开发板GPIO引脚软硬件对应 ●GPIO输出功能设置 ●GPIO输入功能设置 ●GPIO电平读取 ●GPIO中断功能设置 1、开发板GPIO引脚软硬件对应:在RP4418开发板内核中,所有GPIO引脚被分为ABCDE等几组,每组32个。每组引脚起始地址定义如下图。 RP4418开发板是采用三星S5P4418芯片研发的一款多功能四核cortex-a9开发板,对于企业产品研发或者项目方案的时候,用户在使用荣品开发板进行开发,如果硬件上有所修改,那么必须要修改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 如果要对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(unsignedgpio) 从这上面我们只看到一个参数,就是对应GPIO的值 比如我要让GPIOC10改成输入功能 gpio_direction_input(PAD_GPIO_C+ 10); 4、GPIO电平读取:当我们需要读取当前GPIO的值(输出、输入、复用功能都可以读取),我们也可以通过函数去读取。 static inline intgpio_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); 对于触发的几种方式,大家可以到网上查找资料进行分析了解。 |
|
相关推荐
|
|
图片挂掉了。
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
9851 浏览 19 评论
10255 浏览 0 评论
3933 浏览 0 评论
8863 浏览 8 评论
2481 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 23:11 , Processed in 0.618673 second(s), Total 74, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号