NXP(恩智浦)官方提供的配置i.MX系列处理器引脚复用和功能的工具“i.MX Pins Tool”的安装及使用说明【我主要用于生成设备树节点描述语句】

01-i.MX Pins Tool 的介绍

!i.MX Pins Tool 是 NXP 提供的一款用于配置 i.MX 系列处理器引脚复用和功能的工具。它可以极大地简化引脚复用的配置,尤其适用于像 i.MX6ULL 这样多功能引脚复杂的处理器。


i.MX Pins Tool 的主要功能

  1. 引脚复用配置:

    • 允许用户直观地查看和配置每个引脚的功能。
    • 支持引脚的复用选择(GPIO、I2C、UART、PWM、NAND 等)。
    • 提供引脚冲突检测,防止多个功能分配到同一个引脚。
  2. 电气特性配置:

    • 可以设置引脚的电气参数(如上下拉电阻、驱动能力、电平)。
    • 配置 IOMUXC 控制寄存器(例如 SION 标志,用于强制输入)。
  3. 自动生成代码:

    • 根据配置生成设备树文件(用于 Linux 内核)或 C 代码(适用于裸机/RTOS 开发)。
    • 自动生成 IOMUX 配置函数,方便移植到项目中。
  4. 图形化用户界面:

    • 提供直观的引脚分配界面,显示处理器引脚封装和功能布局。
    • 易于导航,能够快速找到目标引脚。
  5. 芯片兼容性:

    • 支持 NXP 的全系列 i.MX 处理器,包括 i.MX6、i.MX7、i.MX8 系列。
    • 定期更新以支持新发布的处理器型号。

参考使用步骤
注意:下面的步骤只是参考使用步骤,看一看即可,并不是我的使用步骤,我主要是用这个生成设备树节点描述语句。

  1. 下载和安装 Pins Tool:

    • 前往 NXP 官网下载最新版本的 i.MX Pins Tool
    • 支持 Windows 和 Linux 系统。
  2. 创建项目:

    • 在工具中选择对应的处理器型号(如 i.MX6ULL)。
    • 选择目标引脚封装(如 BGA196、BGA256)。
  3. 配置引脚:

    • 浏览或搜索引脚,查看每个引脚的复用功能。
    • 分配目标功能到对应引脚(如分配 GPIO、I2C、UART 等)。
    • 配置电气特性(如上拉/下拉、驱动强度)。
  4. 检测冲突:

    • 使用冲突检测功能,确保没有多个功能分配到同一个引脚。
    • 根据提示解决冲突。
  5. 生成代码:

    • 根据配置导出设备树文件或 IOMUX 初始化代码。
    • 在项目中直接使用生成的文件。
  6. 验证和调试:

    • 将生成的代码集成到固件或内核中。
    • 验证引脚是否按预期工作。

i.MX Pins Tool 的优点

  1. 易用性高:

    • 图形化界面直观,降低了手动配置寄存器的复杂度。
  2. 减少错误:

    • 自动检查引脚冲突,避免人为配置错误。
  3. 节省时间:

    • 自动生成代码和设备树,省去手动编写的繁琐步骤。
  4. 适应性强:

    • 支持不同开发平台(Linux、RTOS、裸机)。

推荐场景

  • 开发基于 i.MX 处理器的嵌入式系统时需要配置引脚。
  • 多功能复用引脚的项目,尤其是需要使用 GPIO、I2C、UART、SPI 等外设时。
  • 减少手动调试设备树和寄存器的时间。

02-安装并配置i.MX Pins Tool v6

百度网盘下载链接:
https://pan.baidu.com/s/1KZV8jAZ9YmmAleHFjoKzdQ?pwd=in75

安装完成后启动它,选择“打开一个现有的配置”:
在这里插入图片描述
IMX6ULL的配置文件的百度网盘下载链接:
https://pan.baidu.com/s/1CdhZvcKZiwhFCMTedOUmNw?pwd=79sy
在这里插入图片描述
选择好配置文件后点击右下角的“完成”。

载入之后的截图如下:
在这里插入图片描述

03-使用示例(配置某个引脚为GPIO口功能)

什么叫外设,什么叫信号,什么叫将外设信号路由至某个引脚

这里利用"i.MX Pins Tool"将GPIO5_IO03所在的引脚配置为GPIO功能,其实准确的说法叫做把某个引脚路由至外设GPIO5的信号gpio_io, 3上。

在左边导航栏的“外设信号”里找到GPIO5_IO03
在这里插入图片描述
找到后选中它:
在这里插入图片描述
然后看工具下面的界面显示的信息:
在这里插入图片描述
注意:这里GPIO5被称为是芯片的外设,gpio_io, 3(即GPIO5的第3个GPIO口)被称为叫外设的信号,之所以这里的标题叫路由引脚,是指我们把<引脚编号为P10,引脚名称为SNVS_TAMPER3>的引脚路由至外设GPIO5的信号gpio_io, 3上,即GPIO5的信号gpio_io, 3由<引脚编号为P10,引脚名称为SNVS_TAMPER3>的引脚来承载。
上面这句话对不对,看下面这幅图中就知道了:
在这里插入图片描述
我们尝试下可不可以将GPIO5的信号gpio_io, 3由别的引脚来承载:
在这里插入图片描述
从截图中来看,是不可以的,也就是说GPIO5的信号gpio_io, 3只能由<引脚编号为P10,引脚名称为SNVS_TAMPER3>的引脚进行承载。

此时在工具的中间区域还显示了编号为P10的引脚在封装上的位置,如下图所示:
在这里插入图片描述
然后在工具右边的界面显示了将<引脚编号为P10,引脚名称为SNVS_TAMPER3>的引脚路由至外设GPIO5的信号gpio_io, 3上的相关代码:
在这里插入图片描述
可见,该工具提供了三种形式,分别为设备树描述文件的形式(对应的文件为“imx6ull-board.dtsi”)、C语句的形式(对应的文件为“iomux_config.c”)、头文件的形式(对应的文件为"iomux_config.h")。

生成的设备树节点描述语句解读

在这里,我们重点关注,也经常使用的是设备树描述语句,完整的内容如下:

要读懂下面的设备树描述语句,请看下我之前的博文:
https://blog.youkuaiyun.com/wenhao_ir/article/details/145060032

下面这段设备树描述语句的详细解读请参考我的另一篇博文:
https://blog.youkuaiyun.com/wenhao_ir/article/details/145119224

/***********************************************************************************************************************
 * This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
 * will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
 **********************************************************************************************************************/

/*
 * TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
!!GlobalInfo
product: Pins v6.0
processor: MCIMX6Y2xxx08
package_id: MCIMX6Y2CVM08
mcu_data: i_mx_2_0
processor_version: 6.0.1
 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS ***********
 */

/*
 * TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
BOARD_InitPins:
- options: {callFromInitBoot: 'false', coreID: ca7}
- pin_list:
  - {pin_num: P10, peripheral: GPIO5, signal: 'gpio_io, 3', pin_signal: SNVS_TAMPER3}
 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS ***********
 */

/dts-v1/;

#include "skeleton.dtsi"
#include "imx6ull-pinfunc.h"
#include "imx6ull-pinfunc-snvs.h"

/ {
    model = "NXP i.MX 6ULL User Board";
    compatible = "fsl,imx6ull-board", "fsl,imx6ull";

    soc {
        #address-cells = <1>;
        #size-cells = <1>;

        iomuxc: iomuxc@020e0000 {
            compatible = "fsl,imx6ull-iomuxc";
            reg = <0x020e0000 0x4000>;
        };

        iomuxc_snvs: iomuxc-snvs@02290000 {
            compatible = "fsl,imx6ull-iomuxc_snvs";
            reg = <0x02290000 0x4000>;
        };
    };
};

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

&iomuxc_snvs {
    pinctrl-names = "default_snvs";
    imx6ull-board {
    pinctrl-0 = <&BOARD_InitPinsSnvs>;
        BOARD_InitPinsSnvs: BOARD_InitPinsSnvsGrp {        /*!< Function assigned for the core: Cortex-A7[ca7] */
            fsl,pins = <
                MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03        0x000110A0
            >;
        };
    };
};

要读懂上面的设备树描述语句,请看下我之前的博文:
https://blog.youkuaiyun.com/wenhao_ir/article/details/145060032

上面这段设备树描述语句的详细解读请参考我的另一篇博文:
https://blog.youkuaiyun.com/wenhao_ir/article/details/145119224

代码预览窗口还以绿标显示了重点语句:
在这里插入图片描述
这个语句表示,将寄存器MX6ULL_PAD_SNVS_TAMPER3的值配置为0x000110A0就可以实现将<引脚编号为P10,引脚名称为SNVS_TAMPER3>的引脚路由至外设GPIO5的信号gpio_io, 3上了。即这样配置后,引脚编号为P10,引脚名为SNVS_TAMPER3的引脚就当成GPIO5_IO3来使用了。

还可设置引脚的上拉电阻值

在这里插入图片描述
一般情况下就用100K的默认值就可以。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昊虹AI笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值