首页 > 其他分享 >05 Pincontrl子系统和GPIO子系统

05 Pincontrl子系统和GPIO子系统

时间:2022-11-20 16:00:38浏览次数:57  
标签:Subsystem 引脚 get Pincontrl gpiod GPIO gpio 子系统

Official Document

Documentation\devicetree\bindings\gpio\gpio.txt

Documentation\gpio\Pinctrl-bindings.txt

Documentation\devicetree\bindings\Pinctrl\Pinctrl-bindings.txt

1. Pincontrol and GPIO Subsystem Synopsis

Pincontrol:是控制使用那些引脚复用为什么功能模块,怎么配置这个引脚。相当于IOMUX功能

GPIO Subsystem:是具体配置引脚的信息

使用方法:
指定节点的配置Pincontrol使用状态(status),Pincontrol状态(pinctrol-name),Pincontrol状态引用的GPIO Subsystem配置(pinctrl-x)

编写GIOP Subsystem配置信息

其中4、5、6步骤为GPIO Subsystem实现

2. GPIO Subsystem

关于GPIO Subsystem存在已下两个属性

gpio-controller;
#gpio-cells = <2>

gpio-controller表示这个节点是GPIO Controller

#gpio-cells = <2>则表示此控制器每个引脚需要2个32位的数来表示。常见用法为一个cell表示引脚,一个cell表示有效电平

GPIO_ACTIVE_HIGH	:	高电平有效
GPIO_ACTIVE_LOW		:	低电平有效

GPIO Controller的定义是原厂的工作,我们使用时使用[<name>-]gpios去声明引脚就ok了

reset-gpios = <&gpio_spi 1 GPIO_ACTIVE_LOW>;
gpios = <&gpio5 5 GPIO_ACTIVE_HIGH>;

2.1 Linux中操作GIPO Subsystem

在驱动中存在两套操作GPIO子系统的接口:基于操作符(descriptor-base);老一套(legacy)

这里只使用基于操作符这一套

2.1.1 基于操作符(descriptor-base)

带有gpiod_前缀,它使用gpio_desc结构体表示一个引脚

头文件

#include <linux/gpio/consumer.h> // descriptor-based

常用函数

gpiod_get 设备树节点中只存在单个引脚时使用 power-gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
gpiod_get_index 设备树节点中存在多个引脚时使用 led-gpios = <&gpio 15 GPIO_ACTIVE_HIGH>, <&gpio 16 GPIO_ACTIVE_HIGH>, <&gpio 17 GPIO_ACTIVE_HIGH>;
gpiod_get_array
devm_gpiod_get 含有devm表示设备资源管理器。此类函数是一种自动释放资源的机制。当设备不存在时资源便会自动释放。使用devm申请内存时,如果失败可以直接返回。设备的销毁函数会自动释放已经申请的GPIO(推荐使用)
devm_gpiod_get_index
devm_gpiod_get_array
gpiod_direction_input
gpiod_direction_output
gpiod_get_value 此处获取值为逻辑值,并非实际值
gpiod_set_value 此处设置值为逻辑值,并非实际值。生效值可以在设备树中进行调整。这样可以确保函数的适配性
gpiod_put
gpiod_put_array
devm_gpiod_put
devm_gpiod_put_array

2.2 GPIO命令行操作

echo 111 > /sys/class/gpio/export				# 创建相关的file
echo in > /sys/class/gpio/gpio111/direction		# 设置方向为in还out
echo 1 > /sys/class/gpio/gpio111/value			# 设置值
echo 111 > /sys/class/gpio/unexport				# 删除相关文件

标签:Subsystem,引脚,get,Pincontrl,gpiod,GPIO,gpio,子系统
From: https://www.cnblogs.com/burnk/p/16908703.html

相关文章

  • Linux下IIC子系统和触摸屏驱动
    Linux下IIC子系统和触摸屏驱动1.IIC简介  I2C(Inter-IntegratedCircuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域......
  • 基于CVxx GPIO 配置使用说明
    PIN脚分为4或5组,其中183x为4组,182x,181x,180x为5组,对应gpio[0~4]或gpio[a~e]各组GPIO对应对应的基地址如下GPIO00x03020000GPIO10x03021000GPIO20x03022000GPIO......
  • linux input子系统的event编号修改
    linuxinput子系统的event编号修改在对接甲方的时候,一些input外设需要固定的input、event编号。而不同厂家不同型号的驱动在内核中加载的顺序不同,因此/dev/input下的event......
  • MIO、EMIO、AXI_GPIO
    开发板:Zynq7030数据采集板PC平台:Ubuntu-18.04+MobaXterm开发环境:Xilinx Vivado +SDK-18.3学习目标:PS通过 EMIO、AXI_GPIO 口来控制PL端LED一、MIO、EMIO、AXI_G......
  • 1.GPIO移植
    1.在小华官方下载项目例程HC32F4A0_DDL_Rev2.0.0和HC32F4A0_Template_Rev2.0.0  小华半导体有限公司(xhsc.com.cn)2.由于例程的文件结构太过凌乱,将\HC32F4A0_Template......
  • Ios tat 监视I/O子系统
     iostat是I/Ostatistics(输入/输出统计)的缩写,用来动态监视系统的磁盘操作活动。11.1.命令格式iostat[参数][时间][次数]11.2.命令功能通过iostat方便查看CPU、网卡......
  • Ios tat 监视I/O子系统
    iostat是I/Ostatistics(输入/输出统计)的缩写,用来动态监视系统的磁盘操作活动。11.1.命令格式iostat[参数][时间][次数]11.2.命令功能通过iostat方便查看CPU、网卡、tty设......
  • 安卓12 查看gpio
    安卓12 查看gpiocat/sys/devices/platform/pinctrl@1000b000/mt_gpiochmod 777 mt_gpioecho "out 154 0" > mt_gpio cd/sys/class/leds/ 查看电池状况......
  • HAL库常用函数使用介绍--HAL_GPIO
    HAL_GPIO_Init//初始化我们需要用到的引脚的工作模式,包括具体引脚的工作速度、是否复用模式、上下拉等等参数。voidHAL_GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDe......
  • [I.MX6UL] 裸机点灯 C语言 GPIO的使用
    一、启动文件.global_start//全局变量_start://进入SVC模式mrsr0,cpsr//将特殊寄存器CPSR里面的数据复制到R0中bicr0,r0,#0x1f//00011111将r0......