首页 > 代码库 > 在4418平台上如何配置GPIO口的状态
在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,则说明不使能中断功能,即不作为中断引脚。
|
在4418平台上如何配置GPIO口的状态
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。