NXP Cortex-A7 i.MX6UltraLite 的外設資源非常豐富。為了提供芯片的性價比,CPU廠家引入了PINMUX的架構,簡單說就是引腳存在復用,以上說的這些接口,只用了大約114個引腳,每個引腳最大可以有9種功能(具體可查看Pin List),每個功能有可以出現在不同的引腳上面。
這里以使用UART3 作為RS485功能為例來說明;
首先查看i.MX6ul哪些引腳可做為uart3功能;
注:上述參考手冊為《IMX6ULRM.pdf》
Chapter 4: External Signals and Pin Multiplexing --- Muxing Options
這里選
UART3_TX_DATA作為TX_DATA,
UART3_RX_DATA作為RX_DATA;
UART3_RTS引腳485方向引腳
接下來便是設備樹中PINMUX的配置:
&uart3 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart3>; fsl,rs485-gpio-txen = <&gpio1 27 GPIO_ACTIVE_HIGH>; linux,rs485-enabled-at-boot-time; status = "okay"; }; pinctrl_uart3: uart3grp { fsl,pins = < MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1 MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b0b1 MX6UL_PAD_UART3_RTS_B__GPIO1_IO27 0x1b0b1 /* RS485 RE/DE */ >; };
MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX,MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX這些屬性名稱可以在 arch/arm/boot/dts/imx6ul-pinfunc.h 文件中搜索引腳關鍵
字來確定,如 UART3_TX_DATA 就可以找到 MX6UL_PAD_UART3_TX_DATA__*********,然后就是根據需要復用成的功能做選擇了。