Page tree
Skip to end of metadata
Go to start of metadata

i2S-6UBY2核心板采用NXP i.MX6ULL芯片,在Linux系统的BSP部分的代码,使用DeviceTree方式配置,减少了相同芯片,不同板级代码的冗余工作量。通常使用功能前,需要先配置对应管脚的Pinmux。

这里以arch/arm/boot/dts/i2s-6ull-14x14.dtsi文件中的FLEXCAN1功能为例,部分代码如下:

182                 pinctrl_flexcan1: flexcan1grp{
183                         fsl,pins = <
184                                 MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX      0x1b020
185                                 MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX      0x1b020
186                         >;
187                 };

Pinmux配置有两个部分,PIN_FUNC_ID和CONFIG值。"MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX"表示将"UART3_RTS_B"管脚的复用配置为"FLEXCAN1_RX"功能。"0x1b020"表示CONFIG的值。MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX"是PIN_FUNC_ID宏定义,定义的文件是arch/arm/boot/dts/imx6ul-pinfunc.h。展开的代码如下:

263 #define MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX                        0x00B0 0x033C 0x0584 0x2 0x0

PIN_FUNC_ID由五个部分组成,分别对应相应的值。

<mux_reg conf_reg input_reg mux_val input_val>
  • IOMUX register offset (0x00B0)
  • Pad configuration register offset (0x033C)
  • Select input daisy chain register offset (0x0584)
  • IOMUX configuration setting (0x2)
  • Select input daisy chain setting (0x0)


CONFIG的值需要查看datasheet来配置,以UART3_RTS_B为例,在Pad Control Register里可以配置上拉,下拉,驱动力等功能。

如果配置为GPIO时,需要在"/sys/class/gpio"下来查看状态值,需要在bit31设置为1。举例,0x1b0b0修改为0x4001b0b0。


GPIO配置

如果需要将某个管脚配置为GPIO功能,可以在DTS中配置,这样就可以在Linux系统中的'/sys/class/gpio'中导出相应的管脚为GPIO功能。

写法如下:

&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog_1>;
	imx6ul-i2s6ull {
		pinctrl_hog_1: hoggrp-1 {
			fsl,pins = <
				MX6UL_PAD_UART1_RTS_B__GPIO1_IO19	0x17059 /* SD1 CD */
				MX6UL_PAD_LCD_RESET__GPIO3_IO04		0x1b0b0
			>;
		};
	};
};

这里把UART1_RTS和LCD_RESET管脚配置为GPIO功能,写在"pinctrl_hog_1"里面。

对于"SNVS_"功能的管脚,需要写在"iomuxc_snvs"里面。参考代码如下:

&iomuxc_snvs {
	pinctrl-names = "default_snvs";
    pinctrl-0 = <&pinctrl_hog_2>;
    imx6ul-i2s6ull {
		pinctrl_hog_2: hoggrp-2 {
                        fsl,pins = <
                                MX6ULL_PAD_SNVS_TAMPER6__GPIO5_IO06	0x1b0b0 /* ENET2 Reset */
                        >;
        };
	};
};
  • No labels
Write a comment…