i.MX6ULL开发板UART接口配置全攻略:从引脚查找到设备树修改

张开发
2026/4/21 20:40:28 15 分钟阅读

分享文章

i.MX6ULL开发板UART接口配置全攻略:从引脚查找到设备树修改
i.MX6ULL开发板UART接口配置实战指南从硬件连接到软件调试在嵌入式系统开发中UART接口作为最基础也最常用的通信方式之一其正确配置直接关系到设备间的数据交互可靠性。i.MX6ULL作为NXP推出的高性能、低功耗处理器提供了多达8路UART接口为工业控制、物联网网关等场景提供了灵活的通信解决方案。本文将深入探讨如何在实际项目中完成从硬件引脚查找到设备树修改再到功能验证的全流程操作。1. 硬件准备与引脚映射1.1 原理图分析与引脚定位拿到开发板后第一步是确认目标UART接口对应的物理连接位置。以ELF1开发板为例其引出了四路UART接口UART1默认调试串口连接CH340E USB转串口芯片UART2连接RS485收发芯片板载丝印RS485_1UART3连接RS485收发芯片板载丝印RS485_2UART7连接TTL转RS232电平转换芯片通过查阅原理图我们可以整理出各UART接口的关键引脚对应关系UART端口功能引脚连接器引脚号PAD名称UART1RX27UART1_RX_DATATX28UART1_TX_DATAUART2RX72UART2_RX_DATATX73UART2_TX_DATAUART3RX77UART3_RX_DATATX78UART3_TX_DATAUART7RX114LCD_DATA17TX115LCD_DATA16注意UART7的TX/RX引脚默认复用为LCD数据线功能需要特别注意复用配置冲突问题。1.2 引脚复用功能确认i.MX6ULL的引脚通常具有多种复用功能需要通过IOMUX控制器进行配置。在arch/arm/boot/dts/imx6ul-pinfunc.h头文件中可以找到各引脚作为UART功能时的宏定义/* UART3示例 */ #define MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x0084 0x0310 0x0000 0x0 0x0 #define MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x0088 0x0314 0x0000 0x0 0x0 /* UART7示例复用自LCD数据线 */ #define MX6UL_PAD_LCD_DATA17__UART7_DCE_RX 0x01F4 0x0480 0x0644 0x1 0x4 #define MX6UL_PAD_LCD_DATA16__UART7_DCE_TX 0x01F0 0x047C 0x0640 0x1 0x42. 设备树配置详解2.1 IOMUX节点配置设备树中的pinctrl节点负责引脚复用和电气特性配置。以下是UART3的典型配置示例pinctrl_uart3: uart3grp { fsl,pins MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b0b1 MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1 ; };其中0x1b0b1是引脚电气特性配置值包含以下关键属性SLEW_RATE压摆率控制DSE驱动强度设置PUE/PKE上下拉使能HYS施密特触发器使能对于复用LCD引脚作为UART7的情况需要特别注意在LCD的pinctrl节点中注释掉对应引脚添加UART7专用的pinctrl节点/* 修改前 */ pinctrl_lcdif_dat: lcdifdatgrp { fsl,pins MX6UL_PAD_LCD_DATA00__LCDIF_DATA00 0x79 ... MX6UL_PAD_LCD_DATA16__LCDIF_DATA16 0x79 MX6UL_PAD_LCD_DATA17__LCDIF_DATA17 0x79 ... ; }; /* 修改后 */ pinctrl_lcdif_dat: lcdifdatgrp { fsl,pins MX6UL_PAD_LCD_DATA00__LCDIF_DATA00 0x79 ... // MX6UL_PAD_LCD_DATA16__LCDIF_DATA16 0x79 // MX6UL_PAD_LCD_DATA17__LCDIF_DATA17 0x79 ... ; };2.2 UART设备节点使能在确认pinctrl配置正确后需要在设备树中使能对应的UART节点uart3 { pinctrl-names default; pinctrl-0 pinctrl_uart3; status okay; }; uart7 { pinctrl-names default; pinctrl-0 pinctrl_uart7; status okay; };对于需要禁用硬件流控的UART接口如UART2需要特别处理uart2 { pinctrl-names default; pinctrl-0 pinctrl_uart2; /* 注释掉RTS/CTS相关配置 */ // fsl,uart-has-rtscts; status okay; };3. 编译与部署流程3.1 设备树编译方法配置完成后需要单独编译设备树文件# 设置交叉编译环境 source /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi # 进入内核源码目录 cd ~/work/linux-imx-imx_4.1.15_2.0.0_ga # 编译设备树 make dtbs3.2 设备树部署与验证将生成的设备树二进制文件部署到开发板scp arch/arm/boot/dts/imx6ull-elf1-emmc.dtb root172.16.0.175:/run/media/mmcblk1p1/在开发板上执行同步操作并重启sync reboot成功启动后可以在/dev目录下查看生成的设备节点ttymxc0 # UART1 ttymxc1 # UART2 ttymxc2 # UART3 ttymxc6 # UART74. 功能测试与调试技巧4.1 回环测试配置对于RS485接口UART2/UART3需要将对应接口的A、B线交叉连接RS485_1(A1) ↔ RS485_2(A2)RS485_1(B1) ↔ RS485_2(B2)对于RS232接口UART7直接将TX与RX短接即可。4.2 使用测试工具验证开发板文件系统提供了elf1_cmd_serialport测试工具使用方法如下RS485互测UART2与UART3# 终端1启动接收端 elf1_cmd_serialport ttymxc1 # 终端2启动发送端 elf1_cmd_serialport ttymxc2 -o -b 9600 -t aabbccddeeff 1RS232自测UART7elf1_cmd_serialport ttymxc6 -o -b 9600 -t aabbccddeeff 14.3 常见问题排查无设备节点生成检查设备树status是否为okay确认pinctrl配置正确且无冲突查看内核启动log中UART驱动加载情况数据收发异常确认波特率、数据位、停止位等参数一致检查物理连接是否可靠对于RS485确认方向控制信号如需要复用引脚功能冲突检查所有复用该引脚的功能模块确保同一时刻只有一个功能使能在实际项目中UART配置往往只是系统集成的一个环节。当遇到问题时建议采用分步验证的方法先确保硬件连接正确再验证设备树配置最后测试应用程序逻辑。记得在修改设备树后及时清理编译中间文件make clean以避免缓存导致的问题。

更多文章