TQIMX8MM设备树IO引脚复用配置方法

 

例程开发板:TQIMX8MM

开发板系统:Ubuntu 20.04

内核版本:5.4.24


前言  

随着嵌入式系统的不断发展,设备树作为一种重要的硬件描述语言,已经成为了嵌入式系统开发中不可或缺的一部分。

在设备树中,配置IO引脚和复用功能是非常常见的需求。

这时候,pinctrl就会发挥重要的作用。

它可以帮助开发者在不同的设备上配置GPIO引脚和复用功能,从而方便地实现硬件资源的管理和控制。

在本文中,我们将详细介绍如何在设备树中借助pinctrl来配置GPIO引脚和复用功能,以及如何在Linux内核中使用这些配置来控制硬件资源。

由于篇幅有限,本文只涉及IO引脚复用配置,如需完全掌握IO引脚配置并使用,还需进一步了解IO引脚电气特性配置方法以及GPIO子系统相关知识。

pinctrl子系统简介  

大多数芯片的引脚都是支持复用的,如某些引脚既可以设置为GPIO,也可设置为I2C,此外,与单片机一样,引脚还需要设置各种电气特性,如上拉下拉、速度、驱动能力等。

在如今芯片上百个引脚的情况下,传统寄存器配置引脚的方法显得非常吃力,其中容易造成引脚功能冲突等问题显得尤为突出,pinctrl就是为解决此类问题而诞生的。

pinctrl 子系统主要工作内容如下:

①、获取设备树中 pin 信息。

②、根据获取到的 pin 信息来设置 pin 的复用功能

③、根据获取到的 pin 信息来设置 pin 的电气特性,比如上/下拉、速度、驱动能力等。

对于我们使用者,一般只需在设备树中修改引脚相关属性既可,引脚初始化等工作均由pinctrl完成。以下将介绍基于pinctrl的引脚复用配置思路方法。

引脚复用基本思路

1.根据需要复用的功能,查找空闲可用引脚

2.如无空闲引脚,可先关掉原先占用这些引脚的设备

3.在对应的外设的设备树修改或添加复用功能引脚


1、确认功能引脚  

比如,需要使用PWM1,在《IMX8MMRM.pdf》芯片参考手册(以下简称芯片手册)第八章,IO复用表,找到PWM1:

可以看到此功能可以在这三个引脚中选择一个作为复用。

若选择“I2C4_SDA”引脚作为PWM1,需要在设备树中关闭引脚原来的功能,再进行修改复用。

2、查找并关闭引脚占用  

①在“imx8mm-tqv1.dts”设备树中搜索“I2C4_SDA”,可以发现引脚有两处引用:

此处作为I2C4输出:

②此处作为GPIO:

③搜索这两个节点的名称,查看是否被调用:

在“imx8mm-tqv1-lvds.dts”文件中,找到“pinctrl_i2c4”节点的引用,但并未在此设备树文件或其他设备树文件中找到“pinctrl_gpio_wlf”的引用,说明只有“pinctrl_i2c4”配置生效,现在引脚被复用为I2C4的SDA功能:

④将此节点注释:

vscode中选中代码块,键盘Ctrl+/进行注释

3、重新配置设备引脚  

①搜索找到pwm1的pinctrl节点:

在“imx8mm-tqv1.dts”找到:

②找到相关复用宏定义:

在“imx8mm-pinfunc.h”中可以找到“PWM1_OUT”的相关的宏定义,可以搜索到三条,找到“I2C4_SDA”引脚的此条定义:

③替换复用宏定义:

将“pinctrl_pwm1”节点下的宏定义替换为刚刚找到的宏定义:

修改完成:

至此,“I2C4_SDA”引脚被复用成“PWM1_OUT”功能。


下面列举I2C的引脚配置。

I2C引脚复用配置  

由于不同外设的复用方式各有不同,需要具体情况具体分析。

本例以I2C4引脚复用配置举例,在IMX8MM上,通过查看芯片手册得知,每一路硬件I2C只能用唯一的特定的引脚,无法复用成其他引脚,但当其引脚被其他功能占用时,就需要先关闭占用引脚的功能。

1.在芯片手册中查找功能对应的引脚

可以看到,要使用“I2C4_SCL”和“I2C4_SDA”:

2.在设备树中查找引脚是否被占用,有占用就关闭:

“I2C4_SDA”被PWM1占用,注释此节点,或将此节点功能引脚改复用成其他引脚:

这个节点也用到了此引脚,但节点未被调用,可以不用管:

这个同上,未被调用,不用管:

3.将“pinctrl_i2c4”节点的引脚设置为“I2C4_SCL”和“I2C4_SDA”:

至此,在设备树中I2C4引脚复用配置完成。


-END-

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值