Pinctrl子系统_03_Pinctrl子系统使用示例

news2024/12/28 2:57:37

本节演示,如何使用Pinctrl子系统配置I2C通信所使用的引脚,以IMX6ULL为例。

如下图所示,在芯片内部,有I2C模块。

怎么配置I2C模块?

答:

  1. 首先,要知道I2C模块会使用哪些引脚,这可以通过看原理图确定。
  2. 确定使用哪些引脚之后(假设使用pinA,pinB), 就可以配置IOMUX,选择引脚的功能了。
  3. 最后,就是配置(config)引脚了。

其中,第二步、第三步的配置,会作为一个类似下图的节点保存在设备树中。

然后,就可以通过类似下图所示的节点,来选择使用上图所示的节点,而不需要写额外的代码。

如下图所示,右边的节点由于格式是统一的,所以很容易构造,难点在于左边的节点,它没有统一的格式,往往不同平台之间的格式就大不相同。

如何构造Pinctrl节点?

那么,如何构造左边的节点呢?

答:可以通过以下三种方法:

  1. 工具(tool),对于一些芯片厂商,有提供对应的工具,用于生成这些引脚;
  2. 文档,或设备树示例;
  3. 源码(较困难);

对于imx6ull,他有提供一个工具(i.MX Pins Tool v6),可以生成对应的引脚配置信息。

使用方法也很简单,选中想要配置的引脚,然后选择要配置成哪种功能,然后点击完成,就会生成对应的配置信息。

开始配置I2C模块

看原理图获取引脚

首先,根据底板原理图获取使用到的引脚信息。

使用的是64,65号引脚。

然后,找到对应的管脚号是G16,G17。

选择引脚功能

然后,可以在工具上选择引脚的功能。

生成的设备树配置信息如下:

配置引脚

引脚功能选择完毕后,还可以配置引脚。

配置引脚后,可以看到节点配置信息也产生了变化。

 

可以推测,前面的宏是选择引脚的功能,后面的值则是引脚的配置值。

配置Client节点

此时,我们生成了Pinctrl节点,但是要怎么选择使用它呢?

&iomuxc {
    pinctrl-names = "default";
    pinctrl-0 = <&BOARD_InitPins>;
    imx6ull-board {
        i2c1_pins: i2c1_pins {                /*!< Function assigned for the core: Cortex-A7[ca7] */
            fsl,pins = <
                MX6UL_PAD_UART4_RX_DATA__I2C1_SDA          0x000018B0
                MX6UL_PAD_UART4_TX_DATA__I2C1_SCL          0x000018B0
            >;
        };
    };
};

参考内核设备树文件,内核的配置和使用如下:

所以,可以这样使用pinctrl:

&i2c1 {
    clock-frequency = <100000>;
    pinctrl-names = "default";
    pinctrl-0 = <&i2c1_pins>;
    status = "okay";
};

i2c1节点会转换成一个平台设备,通过i2c1节点的compatible属性,与对应的平台驱动进行匹配,匹配成功后会调用default的pinctrl,对引脚进行配置。

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

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

相关文章

鞋帽箱包经营配送小程序商城的作用是什么

鞋帽箱包是市场中主要经济体系之一&#xff0c;各地经营商家都非常多&#xff0c;随着互联网电商深入&#xff0c;近些年线下生意变得难做&#xff0c;无论获客转化流量&#xff0c;还是进一步增长拓展生意都变得非常困难&#xff0c;线上发展成为众多商家新选择。 如微信朋友…

合并不同年度收入数据-外连接

案例需求&#xff1a;统计2019年和2020年的客户销售收入并求和 思路&#xff1a;使用pandas读取excel数据横向连接&#xff0c;使用sum()含函数求和 代码如下&#xff1a; 1、使用pandas读取excel数据 2、由于两个表一个是"客户名称"&#xff0c;一个是客户描述,使…

网络准入 重定向,DNS劫持内网设备访问网站

环境&#xff1a;Nginx 问题&#xff1a; 1.某网络实施网络准入控制&#xff0c;需要劫持不受信网段的客户端 所有访问到指定引导页面 2.需要劫持PS4 用户访问任意网站&#xff0c;或用户指南 方式全自动破解 解决办法&#xff1a;搭建dnsmasq DNS服务器&#xff0c;全域名解析…

最全解决:微服务之间调用出现Load balancer does not have available server for client

问题&#xff1a; 背景&#xff1a;现在是一个服务A要调用服务B(media-api)中的方法上传文件&#xff0c;因此需要再服务A中写一个feignclient&#xff0c;里面包含的是要调用的B服务的方法&#xff0c;然后出现找不到目标的情况 问题分析&#xff1a; 首先要确保服务和要被调…

java中lambda表达式之函数式接口

1.函数式接口&#xff08;functional interface&#xff09;&#xff1a; 一个只有一个抽象方法的接口&#xff08;可以包含其他方法默认、私有、静态&#xff09;&#xff0c;需要这种接口的对象时&#xff0c;就可以提供一个lambda表达式。 2.FunctionalInterface 注解&…

计算机竞赛 题目:基于大数据的用户画像分析系统 数据分析 开题

文章目录 1 前言2 用户画像分析概述2.1 用户画像构建的相关技术2.2 标签体系2.3 标签优先级 3 实站 - 百货商场用户画像描述与价值分析3.1 数据格式3.2 数据预处理3.3 会员年龄构成3.4 订单占比 消费画像3.5 季度偏好画像3.6 会员用户画像与特征3.6.1 构建会员用户业务特征标签…

【Python从入门到进阶】38、selenium关于Chrome handless的基本使用

接上篇《37、selenium关于phantomjs的基本使用》 上一篇我们介绍了有关phantomjs的相关知识&#xff0c;但由于selenium已经放弃PhantomJS&#xff0c;本篇我们来学习Chrome的无头版浏览器Chrome Handless的使用。 一、Chrome Headless简介 Chrome Headless是一个无界面的浏览…

在conda虚拟环境下安装PyTorch-gpu版本

conda环境配置 在conda虚拟环境下安装PyTorch-gpu版本1. 下载好anaconda以及CUDA2. 创建并进入虚拟环境 选择python版本3. 找对python torch torchvision cuda的对应版本 并 下载安装4. 测试是否成功5. 参考资料 在conda虚拟环境下安装PyTorch-gpu版本 引言&#xff1a; 学会在…

操作系统实践课程结课报告

操作系统实践课程结课报告 目标&#xff1a;Write your own OS in C 作者&#xff1a;我也需要被治愈&#xff08;学号&#xff1a;hello os&#xff09; 日期&#xff1a;2023年7月20日 个人觉得这个过程还是蛮有意思的&#xff0c;初步了解了有关的一些内容顺带复习了操作系…

运营人必备这个微信运营工具

微信管理系统CRM在各行各业都有应用的场景---IT互联网、制造业、商业服务、金融投资、教育培训、房产家装、电商、政务等20行业领域均得到广泛应用。 微信CRM管理系统的主要功能&#xff1a; 多个微信号聚合聊天&#xff1a;解决多个微信来回切换&#xff0c;换着手着手机的麻烦…

PHP 行事准则:allow_url_fopen 与 allow_url_include

文章目录 参考环境allow_url_fopenallow_url_fopen 配置项操作远程文件file 协议 allow_url_includeallow_url_include 配置项 allow_url_include 与 allow_url_fopen区别联系默认配置配置项关闭所导致异常运行时配置ini_set()限制 参考 项目描述搜索引擎Bing、GoogleAI 大模型…

VulnHub Earth

一、信息收集 1.主机和端口扫描 nmap -sS 192.168.103.1/24 发现443端口有DNS解析&#xff0c;在hosts文件中添加DNS解析&#xff1a; 2.收集earth.local信息 发现有Previous Messages 37090b59030f11060b0a1b4e0000000000004312170a1b0b0e4107174f1a0b044e0a000202134e0a161…

Verilator: sh: 1: exec: < PATHNAME >: not found

事出有因 I assumed that I install verilator via git clone its source, so I need to set the export VERILATOR_ROOT. At first, due to laziness, I just copy the code directly to my ubuntu. so stupid I am!!! Then, I recoginzed that the pathname is not real, …

Opengl之立方体贴图

简单来说,立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的一个面:一个有纹理的立方体。你可能会奇怪,这样一个立方体有什么用途呢?为什么要把6张纹理合并到一张纹理中,而不是直接使用6个单独的纹理呢?立方体贴图有一个非常有用的特性,它可以通过一…

HTML5+CSS3+移动web 前端开发入门笔记(一)

千古前端图文教程 千古前端图文教程 git的使用 Git是一个分布式版本控制系统&#xff0c;它的作用主要包括以下几个方面&#xff1a; 版本管理&#xff1a;Git可以跟踪文件的修改历史&#xff0c;记录每次提交的内容、时间和作者等信息。通过Git&#xff0c;开发人员可以轻…

波奇学C++:红黑树

红黑树性质&#xff1a; 1.每个结点不是红色就是黑色。 2.根节点是黑色 3.如果一个节点是红色&#xff0c;它的两个孩子必须是黑色 4.对于每个节点&#xff0c;从该结点到其所有后代叶结点的简单路径上&#xff0c;均包含相同数目的黑色结点 5.每个叶结点都是黑色的&#xff08…

主机ping不通虚拟机,虚拟机可以ping同主机

问题&#xff1a;主机ping不通虚拟机 虚拟机可以ping通主机(192.168.43.140)和外网&#xff08;www.baidu.com) 解决方法&#xff1a; 1.打开【控制面板】-->【网络和Internet】-->【网络连接】 2.选择VMnet8 右键【属性】 3.修改 IP地址&#xff08;I&#xff09;和 子…

1、内核加载模块

一、静态加载 1、新功能源码与内核源码一起编译进uImage文件内 新功能源码与Linux内核源码在同一目录结构下在linux-3.14/drivers/char/目录下编写hello.c文件&#xff0c;内容如下 #include <linux/module.h> #include <linux/kernel.h>int __init myhello_ini…

oracle OCP OCM MySQL OCP认证难吗?

好多人在初次考OCP时&#xff0c;不知道如何选择&#xff0c;本文让姚远ACE老师为大家总结一下吧&#xff01; 选择OCP认证时要注意的问题&#xff1a; 1&#xff0c;授课老师师资经验&#xff08;非常重要&#xff09; 2&#xff0c;课程大纲 3&#xff0c;试听课程 4&am…

零食食品经营小程序商城的作用是什么

零食几乎可以涵盖每个年龄阶段&#xff0c;同时又是市场中常见的零售批发商品&#xff0c;在多个场景中都有销售/购买属性&#xff0c;对消费者来说&#xff0c;购买零食的渠道多种多样&#xff0c;无论线下还是线上&#xff0c;都可随心而购。 庞大市场升级促进下&#xff0c…