基于Linux系统pinmux参数配置- NXP i.MX 6
有些客户不太了解内核中引脚 pinmux 的具体位置,下面咱们简单的介绍下内核中和pinmux 相关的一些文件:
1.arch/arm/boot/dts/imx6q-pinfunc.h 文件,该文件都是一些宏定义,固定形式为
MX6QDL_PAD_引脚名_引脚功能描述
2.以串口 3 的配置为例,简单说一下参数的具体配置:
Uart3 引脚在 arch/arm/boot/dts/imx6q-pinfunc.h 文件中的配置如下:
在设备树中也有引脚的配置,uart3 的引脚在 arch/arm/boot/dts/imx6qdl-sabresd.dtsi 中的配置如下:
将管脚的配置展开即: 0x0b4 0x3c8 0x930 0x2 0x0 0x1b0b1
0x0b4 | 0x3c8 | 0x000 | 0x2 | 0x0 | 0x1b0b1
--------------------------------------------------------------------------------------------------------
mux_ctrl_ofs | pad_ctrl_ofs | sel_input_ofs | mux_mode | sel_input |
pad_ctrl
3.以上参数是怎么确定呢?
下面以 EIM_D24 复用为 UART3_TX_DATA 为例说明复用管脚参数配置方法。
注:下述参考手册为《IMX6DQRM.pdf》,官方提供手册名称会根据版本新旧有不同。
对于复用管脚的配置, 应该在手册管脚复用的章节(IOMUXC) 中查找。 我们搜索
MX6QDL_PAD_EIM_D24__UART3_TX_DATA 的中间部分“EIM_D24”可以直接跳转至
EIM_D24 引脚的寄存器章节。
3.1 其中 mux_ctrl_ofs 为 0x0b4, mux_mode 为 ATL2,如下图:
3.2 pad_ctrl_ofs 为 0x3C8,并根据此配置 pad_ctrl 为 0x1b0b1(配置上拉电阻、频率等
等),如下图:
3.3 input_ofs 查找 IOMUXC 章节以 SELECT_INPUT 结尾的部分,中间选择
UART3_TX_DATA ,选择相应的 sel_input_ofs 和 sel_input,如果没有这里
sel_input_ofs=0x000 即可,对应的 sel_input 为 0 即可。 我们以一个有 sel_input 的
MX6QDL_PAD_EIM_D25__UART3_RX_DATA 引脚为例:搜索 “UART3_RX_DATA”找到
sel_input_ofs=0x930,sel_input=0x1,如下图所示:
