RK3568之pinctrl子系统和GPIO子系统

第1章 两个子系统的区别与联系

1.1 pinctrl子系统

主要功能:引脚复用(pin multiplexing)和引脚配置(pin configuration)。

引脚复用:一个物理引脚可能有多个功能,例如可以是GPIO、串口TX、I2C SCL等。pinctrl子系统负责选择引脚的功能(即选择复用模式)。

引脚配置:例如设置引脚的上下拉电阻、驱动强度、 slew rate等电气特性。

引脚状态管理:睡眠、默认、激活等不同状态下的配置

在设备树中,pinctrl的配置通常被组织在pinctrl节点中,然后在具体设备节点中通过pinctrl-names和pinctrl-0等属性来引用。

1.2 GPIO子系统

主要功能:当引脚被配置为GPIO功能时,GPIO子系统提供了一套统一的接口来访问这些GPIO引脚,例如设置方向(输入/输出)、读写值、设置中断等,提供gpio_request()gpio_direction_output()等接口。

GPIO子系统会为每个GPIO控制器创建一个GPIO chip,这个chip提供了一系列操作GPIO的函数(如设置方向、读写等)。然后,这些GPIO可以通过一个全局的编号(即gpio number)来访问,维护全局GPIO编号空间,或者通过设备树中的gpio属性来指定。

第2章 pinctrl子系统

2.1 pinctrl子系统的语法

设备一般有三种状态:【"default", "sleep", "idle"】;这几种状态都是固定的。

实例分析一:

cpp 复制代码
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog_1>;
  1. 使用 pinctrl-names 表示设备的状态;这里仅仅是取了第0个状态来表示。

  2. 使用 pinctrl-0表示设备的第0个状态;第0个状态使用的是【pinctrl_hog_1】标签的配置。

实例分析二:

cpp 复制代码
pinctrl-names = "default", "wake up";
pinctrl-0 = <&pinctrl_hog_1>;
pinctrl-1 = <&pinctrl_hog_2>;
  1. 使用 pinctrl-names 表示设备的状态;这里不仅是取了第0个状态来表示,还取了第1个状态来表示。

  2. 使用 pinctrl-0表示设备的第0个状态;第0个状态使用的是【pinctrl_hog_1】标签的配置。

  3. 使用 pinctrl-1表示设备的第1个状态;第1个状态使用的是【pinctrl_hog_2】标签的配置。

实例分析三:

cpp 复制代码
pinctrl-names = "default", "wake up","idle";
pinctrl-0 = <&pinctrl_hog_1>;
pinctrl-1 = <&pinctrl_hog_2>;
pinctrl-2 = <&pinctrl_hog_3>;
  1. 使用 pinctrl-names 表示设备的状态;这里不仅是取了第0个状态来表示,而且取了第1个状态来表示,还取了第2个状态来表示。

  2. 使用 pinctrl-0表示设备的第0个状态;第0个状态使用的是【pinctrl_hog_1】标签的配置。

  3. 使用 pinctrl-1表示设备的第1个状态;第1个状态使用的是【pinctrl_hog_2】标签的配置。

  4. 使用 pinctrl-2表示设备的第2个状态;第2个状态使用的是【pinctrl_hog_3】标签的配置。

实例分析四:

cpp 复制代码
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog_1 &pinctrl_hog_2>;
  1. 使用 pinctrl-names 表示设备的状态;这里仅仅是取了第0个状态来表示。

  2. 使用 pinctrl-0表示设备的第0个状态;这里的第0个状态需要两个标签的配置才能完成。【pinctrl_hog_1】和【pinctrl_hog_2】标签的共同完成状态0的配置。

2.2 pinctrl实战

相关推荐
点灯小铭1 天前
基于单片机的太阳能12V蓄电池光控时控路灯智能控制器设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
LCG元1 天前
STM32实战:基于STM32F103的智能体重秤(HX711+OLED)
stm32·单片机·嵌入式硬件
小白zlm1 天前
预畸变双线性变换
单片机·嵌入式硬件·算法·电机控制
无垠的广袤1 天前
【Titan RA8P1 Board】J-Link 调试
单片机·嵌入式·开发板·调试器·jlink
12.=0.1 天前
【stm32_3】嵌入式软件系统架构
stm32·单片机·嵌入式硬件
会编程的小孩1 天前
优先级与抢占实验
stm32·单片机
風清掦1 天前
【江科大STM32学习笔记-10】I2C通信协议 - 10.1 软件I2C读写MPU6050
笔记·stm32·单片机·嵌入式硬件·物联网·学习
无垠的广袤1 天前
【Titan RA8P1 Board】MNIST 数字识别
人工智能·单片机·瑞萨·mnist·数字识别·ra8p1·ruhmi
无垠的广袤1 天前
【Titan RA8P1 Board】PyOCD 调试
单片机·嵌入式硬件·调试器
水果里面有苹果1 天前
24-NT5CC128M16IP-DI DDR3芯片 2Gbit
嵌入式硬件