Pinctrl子系统和GPIO子系统

Pinctrl子系统:

借助Princtr子系统来设置一个Pin的复用和电气属性;

pinctrl子系统主要做的工作是:1. 获取设备树中的PIN信息;2.根据获取到的pin信息来设置的Pin的复用功能;3.根据获取到的pin信息去设置pin的电气特性,比如上下拉、速度、驱动等。

打开imx6ull.dtsi: (设备树相关的代码保存在代码被保存在.dts/dtsi后缀文件中)

  1. IOMUXC SNVS控制器:
    在这里插入图片描述
  2. IOMUXC控制器:
    在这里插入图片描述
  3. GPR控制器:
    在这里插入图片描述
    以上三个节点:
    具体信息查看6ULL参考手册。

IOMUXC 具体一个IO 做什么需要打开自己板子对应的设备树进行添加和查看。(alientek-emmc .dts):

如:
在这里插入图片描述

dts文件追加了很多信息如上如图。

  1. 如何添加一个PIN的信息:
    在这里插入图片描述

在pinfunc.h中找到的相应的定义的引脚 (宏)
在这里插入图片描述

#define MX6UL_PAD_UART1_RTS_B__GPIO1_IO19     0x0090 0x031C 0x0000 0x5 0x0

IO19是复用的 ,对应的是

0x0090         0x031C      0x0000      0x5             0x0
<mux_reg     conf_reg    input_reg   mux_mode input_val>

IOMUXC父节点首地址 0x 020e 0000 ,因此UART_RTS_B 这个PIN的Mux寄存器地址就是: + 0X 0090 = OX 020e 0090。

conf_reg  :  0x031C   : 这个寄存器就是电气属性配置地址。

Mux_mode : 5 表示复用为GPIO1_IO19 ,将其写入 0X020e 0090 。

input_val  :偏移是0 ,表示PIN没有input的功能。

注:
传统Pin的配置方式:操作寄存器
①IO复用 eg:IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03
②pin配置电气属性 eg:IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03

  1. PINctl 子系统去驱动

    配置好了在设备树中添加好了,那么一定需要在子系统中进行驱动了。
    Pinctrl 和 GPIO的子系统 就是驱动分离 与 分层思想的产物。

    如何找到6ULL对应的PINCTRL的子系统的驱动。
    通过compatible,此属性是字符串列表。驱动文件里面有一个的描述驱动兼容性的东西,当设备树节点的compatible属性和驱动里面的兼容性字符串匹配一致的时候,那么设备和驱动就匹配了。
    只需要全局看一下设备节点里面的compiable属性的值,看一看哪一个.c文件里面有,那么此.c文件就是驱动文件。
    Pinctrl-im6ull.c

当驱动和设备匹配以后执行probe函数。也就是 platform——driverz这个结构体中probe会去执行。
在这里插入图片描述
在这里插入图片描述

GPIO的使用

当把一个IO复用成GPIO功能的时候,我们就需要使用GPIO子系统。

Imx6ull.dtsi
在这里插入图片描述
查看GPIO的手册。
在这里插入图片描述

如何从设备树中获取要是用的GPIO信息,----of函数。

如:
在这里插入图片描述

驱动中对GPIO的操作函数:
1.of_find_node_by_path 函数通过路径来查找指定的节点,函数原型如下:
inline struct device_node *of_find_node_by_path(const char *path)
2.获取GPIO.of_get_named_gpio函数,返回值就是GPIO编号。
3.请求此编号的GPIO,request函数。
4.设置GPIO,输入还是输出。Gpio_direction_input还是Gpio_direction_output.
5.如果是输入,那么通过GPIO_get_value函数读取GPIO值;如果是输出,通过gpio_set_value设置GPIO值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/171018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习 | 聚类】关于聚类最全评价方法大全,确定不收藏?

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

访谈 破风之人毛京波,选择难而正确的路

“无论是在燃油时代还是电动时代&#xff0c;我们所做的一切&#xff0c;只为回归纯粹的驾驶乐趣。”履新路特斯中国总裁整整一年的毛京波&#xff0c;从不放过任何一个展示路特斯品牌驾驭精神的机会。 11月17日&#xff0c;广州车展开幕首日&#xff0c;位于5.2馆的路特斯“冠…

【理解ARM架构】 散列文件 | 重定位

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《理解ARM架构》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f3d3;引出重定位&#x1f3d3;散列文件&#x1f3d3;可读可写数据段重定位&#…

C++ 基于Boost.Asio实现端口映射器

Boost.Asio 是一个功能强大的 C 库&#xff0c;用于异步编程和网络编程&#xff0c;它提供了跨平台的异步 I/O 操作。在这篇文章中&#xff0c;我们将深入分析一个使用 Boost.Asio 实现的简单端口映射服务器&#xff0c;该服务器能够将本地端口的数据包转发到指定的远程服务器上…

OSG编程指南<十一>:OSG几何体操作及三维地形创建

1、简化几何体 在 OSG 中&#xff0c;场景都是由基本的绘图基元构成的&#xff0c;基本的绘图基元构成简单的几何体&#xff0c;简单的几何体构成复杂的几何体&#xff0c;复杂的几何体最终构造成复杂的场景。当多个几何体组合时&#xff0c;可能 存在多种降低场景渲染效率的原…

220. 存在重复元素 III(滑动窗口+有序集合)

Problem: 220. 存在重复元素 III 文章目录 题目思路Code 题目 给你一个整数数组 nums 和两个整数 indexDiff 和 valueDiff 。 找出满足下述条件的下标对 (i, j)&#xff1a; i ! j,abs(i - j) < indexDiffabs(nums[i] - nums[j]) < valueDiff 如果存在&#xff0c;返回…

Vue事件处理

Vue的事件处理与BOMDOMjs下的事件处理没有明显的差异&#xff0c;差别主要体现在规范化上。在模板或者DOM结构上绑定事件的指令是v-on或者符号。事件的处理函数除了直接指定处理函数之外&#xff0c;还增加了对事件简易处理函数的内联处理方式。在事件上&#xff0c;Vue增加了事…

JAVA小游戏“简易版王者荣耀”

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt;import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; im…

06_正则与异常处理

正则表达式 基础演示 public class Test {public static void main(String[] args) {System.out.println(check("7029622989")); // true}public static boolean check(String userId) {return userId ! null && userId.matches("[1-9]\\d{5,19}&quo…

DPDK系列之三十七IO处理

一、介绍 如果一条通信链路要想达到最优的效果&#xff0c;一定是整体上每个环节都要有最佳的节奏协调控制而不一定是每个环节都是最优。这个在计算机的数据处理上就更是明显。一般来说&#xff0c;IO的速度是最低的&#xff0c;至少在可见的时光里要想超越CPU和内存还是很难的…

Scope 模块

Scope 模块可以连接任何类型的实数信号线 (不支持复数)。 波形显示界面主要包括两个部分: Scope 独有的工具栏、波形显示区域。 波形显示界面默认是黑色背景, 当有单个信号输入时, 信号线是黄色的。 Scope 模块也有菜单栏, 只不过默认将其句柄和显示都隐藏起来, 可以通过下面…

技术类知识汇总(二)

在自己日常学习javaweb的过程中&#xff0c;做的一些笔记和总结&#xff0c;汇总如下&#xff1a; Springboot项目的静态资源(html&#xff0c;css&#xff0c;js等前端资源)默认存放目录为&#xff1a;classpath:/static classpath:/public classpath:/resources"三层架…

java-hprof 文件是什么

一、是什么 hprof 文件是 Java进程所使用的内存情况在某一时间的一次快照&#xff08;Heap Profile 的缩写&#xff09;&#xff0c;格式为java_pidxxxxx*.hprof 二、文件里面有什么 1、所有的对象信息 对象的类信息、字段信息、原生值(int, long等)及引用值 2、所有的类信…

一键下载Python各版本中的最新版

一、背景需求 下载Python的安装包非常简单&#xff0c;只需要去官网就可以了&#xff1a;https://www.python.org/downloads/windows/ 但是有时候你可能需要环境测试&#xff0c;需要安装很多版本的Python。 一个一个找倒是也可以&#xff0c;但是我做了个自动筛选的脚本&am…

Kafka-Consumer

Kafka消费者 消费者 与生产者对应的是消费者&#xff0c;应用程序可以通过KafkaConsumer来订阅主题&#xff0c;并从订阅的主题中拉取消息。 消费者与消费者组 Kafka的消费者&#xff08;Consumer&#xff09;负责订阅Kafka中的主题&#xff08;Topic&#xff09;&#xff…

Web 安全之证书透明(Certificate Transparency)详解

目录 证书透明性的概念 数字证书和颁发机构 证书透明的起源 证书透明的工作原理 证书透明的实现方法 证书透明的优点 浏览器和客户端对证书透明的支持情况 小结 证书透明&#xff08;Certificate Transparency, CT&#xff09;是网络安全领域中的一个重要概念&#xff…

车载以太网-数据链路层-MAC

文章目录 车载以太网MAC(Media Access Control)车载以太网MAC帧格式以太网MAC帧报文示例车载以太网MAC层测试内容车载以太网MAC(Media Access Control) 车载以太网MAC(Media Access Control)是一种用于车载通信系统的以太网硬件地址,用于在物理层上识别和管理数据包的传…

5 个适用于 Windows 的顶级免费数据恢复软件

对于计算机来说&#xff0c;最重要的是用户数据。除了您的数据之外&#xff0c;有关计算机的其他所有内容都是可替换的。这三个是数据丢失的最常见原因&#xff1a; 文件/文件夹删除丢失分区分区损坏 文件/文件夹删除 文件/文件夹删除是最常见的数据丢失类型。大多数时候&am…

《微信小程序开发从入门到实战》学习三十一

3.4 开发参与投票页面 3.4.9 显示投票结果 在实际使用中&#xff0c;一个用户不能对同一个投票进行重复提交&#xff0c;因此需要向服务器端提交投票结果和提交用户ID。另外页面&#xff0c;需要完善。用户提交完投票后 &#xff0c;还需要显示投票目前的结果&#xff0c;提交…