pinctrl_hog_1 子节点所使用的 PIN 配置信息MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059解析

pinctrl_hog_1 子节点所使用的 PIN 配置信息
MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059

宏定义:
#define MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x0090 0x031C 0x0000
0x5 0x0

PIN 配置信息展开为:
MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x0090 0x031C 0x0000
0x5 0x0 0x17059

解析:
0x0090 0x031C 0x0000 0x5 0x0
这 5 个值的含义如下所示:
<mux_reg conf_reg input_reg mux_mode input_val>

综上所述可知:
0x0090:mux_reg 寄存器偏移地址,设备树中的 iomuxc 节点就是 IOMUXC 外设对应的节
点 , 根 据 其 reg 属 性 可 知 IOMUXC 外 设 寄 存 器 起 始 地 址 为 0x020e0000 。 因 此
0x020e0000+0x0090=0x020e0090,IOMUXC_SW_MUX_CTL_PAD_UART1_RTS_B 寄存器地址
正 好 是 0x020e0090 , 大 家 可 以 在 《 IMX6ULL 参 考 手 册 》 中 找 到
IOMUXC_SW_MUX_CTL_PAD_UART1_RTS_B 这个寄存器的位域图,如图 45.1.2.2 所示:
在这里插入图片描述
在这里插入图片描述

因此可知,0x020e0000+mux_reg 就是 PIN 的复用寄存器地址。
0x031C:conf_reg 寄存器偏移地址,和 mux_reg 一样,0x020e0000+0x031c=0x020e031c,
这个就是寄存器 IOMUXC_SW_PAD_CTL_PAD_UART1_RTS_B 的地址。
0x0000:input_reg 寄存器偏移地址,有些外设有 input_reg 寄存器,有 input_reg 寄存器的外设需要配置 input_reg 寄存器。没有的话就不需要设置,UART1_RTS_B 这个 PIN 在做GPIO1_IO19 的时候是没有 input_reg 寄存器,因此这里 intput_reg 是无效的。
0x5:mux_reg寄存器值,在这里就相当于设置IOMUXC_SW_MUX_CTL_PAD_UART1_RTS_B 寄存器为 0x5,也即是设置 UART1_RTS_B 这个 PIN 复用为 GPIO1_IO19。
0x0:input_reg 寄存器值,在这里无效。
这就是宏 MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 的含义,看的比较仔细的同学应该
会发现并没有 conf_reg 寄存器的值,config_reg 寄存器是设置一个 PIN 的电气特性的,这么重要的寄存器怎么没有值呢?回到示例代码 45.1.2.3 中,第 9 行的内容如下所示:
MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059
MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 我们上面已经分析了,就剩下了一个 0x17059,反应快的同学应该已经猜出来了,0x17059 就是 conf_reg 寄存器值!此值由用户自行设置,通过 此 值 来设 置 一个 IO 的 上 / 下拉 、 驱动 能 力和速 度 等 。在 这 里就 相 当于 设 置寄 存 器IOMUXC_SW_PAD_CTL_PAD_UART1_RTS_B 的值为 0x17059。

conf_reg 寄存器值的含义如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

bit0 : 高低电平切换速度选择 0低速1高速
bit5:3 :驱动能力选择
 000 DSE_0_output_driver_disabled_ — output driver disabled; 禁止输出
 001 DSE_1_R0_260_Ohm___3_3V__150_Ohm_1_8V__240_Ohm_for_DDR_ — R0(260 Ohm @
 3.3V, 150 Ohm@1.8V, 240 Ohm for DDR) -R0:260欧姆@3.3v;150欧姆@1.8v
 010 DSE_2_R0_2 — R0/2 -R0的二分之一,一下类同
 011 DSE_3_R0_3 — R0/3
 100 DSE_4_R0_4 — R0/4
 101 DSE_5_R0_5 — R0/5
 110 DSE_6_R0_6 — R0/6
 111 DSE_7_R0_7 — R0/7
bit7:6 :速度选择
 00 SPEED_0_low_50MHz_ — low(50MHz) 最低50MHz
 01 SPEED_1_medium_100MHz_ — medium(100MHz)中间值100MHz
 10 SPEED_2_medium_100MHz_ — medium(100MHz)中间值100MHz
 11 SPEED_3_max_200MHz_ — max(200MHz) 最大200MHz
bit11 :漏极开路
 0 ODE_0_Open_Drain_Disabled — Open Drain Disabled :禁止漏极开路
 1 ODE_1_Open_Drain_Enabled — Open Drain Enabled: 使能漏极开路
bit12 :使能字段
 0 PKE_0_Pull_Keeper_Disabled — Pull/Keeper Disabled: 禁止拉/保持
 1 PKE_1_Pull_Keeper_Enabled — Pull/Keeper Enabled: 使能拉/保持
bit13 :使能输出状态保存
使能输出状态保存器可以在内核供电关掉之后,使IO的输出自动维持在关电之前的逻辑状态(需要注意的是输出状态保存器不能与上下拉同时工作)。其价值同样可以体现在低功耗的应用中
  0 PUE_0_Keeper — Keeper :保持
  1 PUE_1_Pull — Pull :上拉
bit15:14 :设置上下拉电阻阻值
主要作用是提高输出信号的驱动能力、确定输入信号的电平(防止干扰)
  00 PUS_0_100K_Ohm_Pull_Down — 100K Ohm Pull Down :100K欧姆的拉低
  01 PUS_1_47K_Ohm_Pull_Up — 47K Ohm Pull Up :47K欧姆的拉高
  10 PUS_2_100K_Ohm_Pull_Up — 100K Ohm Pull Up :100K欧姆的拉高
  11 PUS_3_22K_Ohm_Pull_Up — 22K Ohm Pull Up :22K欧姆的拉高
bit16 :磁滞使能字段,作为输入时有效
  0 HYS_0_Hysteresis_Disabled — Hysteresis Disabled:禁止磁滞
  1 HYS_1_Hysteresis_Enabled — Hysteresis Enabled: 使能磁滞
在这里插入图片描述

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值