You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IMX6ULL开发板UART2配置RS-485 GPIO使能引脚异常求助

IMX6ULL(Tart 2开发板)RS-485 GPIO使能引脚始终高电平问题

在Tart 2开发板(IMX6ULL芯片)上配置RS-485,使用GPIO作为收发使能引脚,但配置完成后该GPIO始终处于高电平,无法随收发过程自动切换。以下是已做的设备树配置修改:

配置代码片段

第一个UART2节点配置

&uart2 {
     pinctrl-names = "default";
     pinctrl-0 = <&pinctrl_uart2>;
     rts-gpios = <&gpio4 25 GPIO_ACTIVE_HIGH>;
     rs485-rts-delay = <0 0>;
     status = "okay";
     fsl,dte-mode;
};

Pinctrl配置

pinctrl_uart2: uart2grp {
    fsl,pins = <
    MX6UL_PAD_UART2_TX_DATA__UART2_DTE_RX 0x1b0b1 /* SODIMM 36 */
    MX6UL_PAD_UART2_RX_DATA__UART2_DTE_TX 0x1b0b1 /* SODIMM 38 */
    MX6UL_PAD_CSI_DATA04__GPIO4_IO25 0x10b0
    >;
};

第二个UART2节点配置

&uart2 {
    status = "okay";
    rs485-rts-active-high;
    linux,rs485-enabled-at-boot-time;
};

排查与解决建议

  • 合并重复的UART2节点:设备树中重复定义&uart2会导致后一个节点覆盖前一个,前一个的rts-gpios、pinctrl等关键配置会失效。需将所有属性合并到同一个&uart2节点中,示例:
    &uart2 {
         pinctrl-names = "default";
         pinctrl-0 = <&pinctrl_uart2>;
         rts-gpios = <&gpio4 25 GPIO_ACTIVE_HIGH>;
         rs485-rts-delay = <0 0>;
         rs485-rts-active-high;
         linux,rs485-enabled-at-boot-time;
         status = "okay";
         fsl,dte-mode;
    };
    
  • 修正GPIO引脚配置参数:MX6UL_PAD_CSI_DATA04__GPIO4_IO25的配置值0x10b0仅设置了基础属性,建议改为0x1b0b1(与UART收发引脚配置一致,包含上拉、高速驱动、推挽输出),确保引脚驱动能力符合RS-485模块需求。
  • 匹配RS-485模块使能逻辑:rs485-rts-active-high表示高电平使能发送,低电平切换为接收。如果你的RS-485模块是低电平使能发送,需删除该属性或改为rs485-rts-active-low。
  • 验证内核RS485支持:确认内核已开启CONFIG_SERIAL_RS485编译选项,若未开启需重新编译内核并烧录。
  • 硬件引脚功能验证:通过sysfs手动控制GPIO,确认引脚硬件功能正常:
    1. 导出GPIO:echo 153 > /sys/class/gpio/export(GPIO4_25编号计算:4*32+25=153)
    2. 设置为输出模式:echo out > /sys/class/gpio/gpio153/direction
    3. 切换电平:echo 0 > /sys/class/gpio/gpio153/value和echo 1 > /sys/class/gpio/gpio153/value,用万用表或逻辑分析仪检测引脚电平变化,排除硬件故障。

内容的提问来源于stack exchange,提问作者prial joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:56:01