本帖最后由 story_xjj 于 2018-5-28 11:20 编辑
试用4 使能多串口
由于在我的应用中,需要多个串口,因此需要修改设备树文件使能串口设备。
IOT板上引出的串口设备总结
UART1 系统调试串口
UART2 J3-11 UART2-TXD
J3-13 UART2-RXD
UART3 J3-19 UART3-TXD
J3-21 UART3-RXD
UART4 J3-29 UART4-TXD
J3-31 UART4-RXD
UART5 J2-10 UART5-TXD
J2-12 UART5-RXD
这里可以使用UART2到UART5共4个串口。
为了修改简单,直接修改mys-imx6ull-14x14-evk.dts文件。
第一步,增加引脚定义
&iomuxc {
pinctrl-names= "default";
pinctrl-0 =<&pinctrl_hog_1>;
imx6ul-evk {
省略掉部分
pinctrl_uart1:uart1grp {
fsl,pins= <
MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX0x1b0b1
MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX0x1b0b1
>;
};
pinctrl_uart2:uart2grp {
fsl,pins= <
MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX 0x1b0b1
MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX 0x1b0b1
>;
};
pinctrl_uart2dte:uart2dtegrp {
fsl,pins= <
MX6UL_PAD_UART2_TX_DATA__UART2_DTE_RX 0x1b0b1
MX6UL_PAD_UART2_RX_DATA__UART2_DTE_TX 0x1b0b1
/* MX6UL_PAD_UART3_RX_DATA__UART2_DTE_CTS 0x1b0b1 */
/* MX6UL_PAD_UART3_TX_DATA__UART2_DTE_RTS 0x1b0b1 */
>;
};
pinctrl_uart3:uart3grp {
fsl,pins= <
MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1
MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b0b1
>;
};
pinctrl_uart4:uart4grp {
fsl,pins= <
MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX 0x1b0b1
MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX 0x1b0b1
>;
};
pinctrl_uart5:uart5grp {
fsl,pins= <
MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX 0x1b0b1
MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x1b0b1
>;
};
省略掉部分
};
};
};
仿照UART1和UART2的写法,定义其它串口。
第二步,使能串口设备
&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
status = "okay";
};
&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
/*fsl,uart-has-rtscts;*/
/* for DTE mode, add below change */
/* fsl,dte-mode; */
/* pinctrl-0 = <&pinctrl_uart2dte>; */
status = "okay";
};
&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
status = "okay";
};
&uart4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart4>;
status = "okay";
};
&uart5 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart5>;
status = "okay";
};
这里必须注意一点,由于UART5和I2C2接口的引脚是复用的,I2C2默认是使能的所以必须禁用I2C2,在使能UART5.
&i2c2 {
clock_frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
status = "disabled";
省略部分
};
第三步,编译dtb文件
makeARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
如果不出意外,我们需要的dtb文件就生成了,将这个文件替换mfgtools下的文件,并烧录到nand flash中,重新启动系统。
我们可以发现多了4串口设备,ttymxc1、ttymxc2、ttymxc3、ttymxc4
目前存在的问题,uart5的接收功能还没有好使,发送功能已经好使了。请高手指点一下。
|