在4418平台上如何配置GPIO口的状态


硬件

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

通过原理图找你需要配置的硬件IO口的管脚

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

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

软件

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

GPIO配置文件

u-boot\boart\s5p4418\drone\include\Cfg_gpio.h

kernel\arch\arm\plat-s5p4418\drone\include\Cfg_gpio.h

在u-boot与kernel中

例如:

#define PAD_GPIOAO    (PAD_MODE_OUT | PAD_FUNC_ALT0 | PAD_LEVEL_HIGH | PAD_PULL_OFF | PAD_STRENGTH_0)

第一个参数:输出,输入              (输入为:PAD_MODE_IN, 输出为:PAD_MODE_OUT)

第二个参数:功能选择

——————————————————————————————————————

| 注:                                                                                                                                  |

|  // 0: GPIO          1: VIP1_VD[4]           ,2: MPEGTSI_TDATA1[0]   ,3:_                    =        |

|  这里的GPIO对应的是0,那么第二个参数就是 PAD_FUNC_ALT0                                       |

|----------------------------------------------------------------------------------------------|

|    // 0: MCUS_SD[15]   ,1: GPIO       ,2: MPEGTSI0_TDATA[7]   ,3: UART5_TXD       =      |

|  若GPIO对应的是1,那么第二个参数就是PAD_FUNC_ALT1                                               |

——————————————————————————————————————

第三个参数:高低电平            (高电平:PAD_LEVEL_HIGH,低电平AD_LEVEL_LOW)

第四个参数:上拉,下拉,关闭上下拉   (上拉:PAD_PULL_UP, 下拉:PAD_PULL_DN,  关闭上下拉:PAD_PULL_OFF)

第五个参数:驱动能力

注:

最好不要在cfg_gpio.h文件中配置GPIO,因为有些GPIO会有复用功能,可能会影响其他的功能,最好用GPIO有关的函数来实现

GPIO有关的函数

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 设置,请参考源码对应的修改进行理解。

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

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

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

GPIO 中断功能设置
当我们需要引脚中断功能的时候,那么我们就需要实现 GPIO 的中断功能。

参数:

void nxp_soc_gpio_set_int_enable(unsigned int io, int on)
unsigned io :代表单个 GPIO 引脚

int on:置为 1,则代表使能中断功能,置为 0,则说明不使能中断功能,即不作为中断引脚。  

时间: 2024-07-30 00:14:27

在4418平台上如何配置GPIO口的状态的相关文章

OpenCV4Android SDK在Win 8.1平台上的配置

这篇文章主要记录自己安装和配置 OpenCV4Android SDK的过程.我的安装环境是:win8.1 64位. 当然,在做opencv开发之前,最好是具备一定的开发经验,如: 1. Android上的java开发 2. Java Native Interface (JNI):在java虚拟机上运行本地代码的技术 3. Android Activity和它的生命周期,这是android开发的精华部分 4. Android相机开发的相关知识. 而在配置ADK.Eclipse和ADT等过程中,一直

STM32单片机GPIO口配置问题

在学习STM32F单片机时,我们常常困惑什么时候才能叫入门,采用什么样的教材入门,或者采用什么的编程软件.在学习类的教材中,以神州,原点教材布局很多,但是相信很多人看到这类教材也是一头雾水,需要你花费巨大的精力从寄存器的最底层去学习和了解,学习时间还是相对漫长.在采用的编程软件中,KEIL和IAR各有优势吧,在这里我选用的是KEIL. 在开始学习编程时,我采用的是库函数开发指南.在安装完成KEIL软件和添加项目工程时,就开始学习库函数编程. 在编写一个GPIO口控制时,首先我们要知道我们要实现的

stm32寄存器版学习笔记01 GPIO口的配置(LED、按键)

STM32的I/O口可以由软件配置成如下8种模式:输入浮空.输入上拉.输入下拉.模拟输入.开漏输出.推挽输出.推挽式复用功能及开漏复用功能.每个I/O口由7个寄存器来控制:配置模式的端口配置寄存器CRL和CRH(模式.速度):数据寄存器IDR和ODR:置位/复位寄存器BSRR:复位寄存器BRR:锁存寄存器LCKR. I/O口模式: GPIO的8种模式 通用输出 推挽输出(Puch-Pull) 可以输出高.低电平,连接数字器件   开漏输出(Open-Drain) 开漏引脚不连接外部的上拉电阻时,

【Rayeager PX2】PX2上使用GPIO口的例程

之前楼主在论坛中已经分享了简单驱动的编写,现在楼主再来教刚接触板子的新手们如何引用调用GPIO,不过这里楼主并没有将GPIO口的函数封装成库,然后在eclipse上调用,楼主这边的例子,只是简单的用adb工具进入板中,然后用一个测试程序使用端口,有兴趣想要在安卓界面调用端口的,可以参考楼主之前写的那编jni调用的帖子. 首先我们依旧来简单地说下步骤, 1.在/kernel/drivers下建个文件夹,自己创建并添加Kconfig和makefile,内容如下, 2.在该目录下写个gpio驱动,内容

PHP开发环境的配置(Linux平台上安装Apache和PHP)

PHP开发环境的配置(Linux平台上安装Apache和php): 下载Apache (httpd-2.4.12.tar.gz).下载PHP(php-5.6.9.tar.gz).下载与PHP安装相关的libxml2(libxml2-2.7.8.tar.gz).下载与Apache安装相关的三个文件:apr(apr-1.5.2.tar.gz).apr-util(apr-util-1.5.4.tar.gz).pcre (pcre-8.10.zip) (1)安装Apache:在安装apache之前必须先

intel DPDK在多核处理器平台上的安装与配置

一.DPDK系统需求: 1.需要的编译工具(ubuntu12.04 LTS均符合要求,可以不检查) GNU make; cmp, sed, grep, arch; gcc;libc库文件(glibc-devel fedora;libc ubuntu) kernel-devel(fedora);kernel-dev(ubuntu) python 2.6 or 2.7 2.运行条件(关键在于kernel的配置,其他均符合条件) kernel-version >=2.6.33 :查看命令 uname

boson netsim5.31平台上组建交换式网络

在boson netsim5.31平台上组建交换式局域网络, 并选用1912型号交换机,5台计算机分别按顺序与交换机上对应序号的1,2,3,4,5号口连接,要将计算机1.2.3配置为在VLAN2,将计算机4.5配置在VLAN3,请写出配置VLAN的步骤.其中,VLAN2名称为online,VLAN3名称为office.Pc机IP地址按照下面的配置,*号用个人的学号后两位替换 PC1 172.16.*.2 ,255.255.255.0 ,172.16.*.1 PC2 172.16.*.3 ,255

使用linux内核hrtimer高精度定时器实现GPIO口模拟PWM,【原创】

关键词:Android  linux hrtimer 蜂鸣器  等待队列 信号量 字符设备 平台信息:内核:linux3.4.39 系统:android/android5.1平台:S5P4418  作者:庄泽彬(欢迎转载,请注明作者) 邮箱:[email protected] 程序描述:本文控制的设备是无源蜂鸣器,由于无源蜂鸣器是需要产生一定的频率的PWM才能够控制蜂鸣器,不像有源蜂鸣器,只需要提供高低电平就可以控制蜂鸣器.linux内核普通的定时器,由于具有一定的局限性,不能达到纳秒级别的定时

JMS(Java平台上的专业技术规范)

编辑 jms即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信.Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持.jms同时也可以指Journal of Marketing Science,<营销科学学报>的简称.此外,佳木斯的拼音缩写也是jms. 目录 1Java平台上的专业技术规范 2简介 3历史 4体系架构 5对