This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux:AM3352。 8250_OMAP RS485 RTS 引脚在 v4.9内核上始终为高电平

Guru**** 2013480 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/609364/linux-am3352-8250_omap-rs485-rts-pin-always-high-on-v4-9-kernel

工具/软件:Linux

你好。

从4.1内核切换到4.9内核时遇到问题。 只要串行器件打开(在/dev/ttySx 上打开调用)、我就会看到 RTS 引脚变为高电平(通过使用逻辑分析仪)。 当串行器件关闭(关闭调用)时、RTS 引脚返回到低电平状态。 这是已知的错误还是配置错误?

我将通过 ioctl 设置 RS485相关参数。

相关内核配置:

CONFIG_SERIAL_8250_OMAP=y
CONFIG_SERIAL_OMAP-CONSOLE=y
CONFIG_SERIAL_8250_OMAP_TTYO_fixup=y

我可以看到 RTS 引脚在某种程度上由软件切换、但我以任何方式附加相关的器件树映射:

/*设置 UART1引脚多路复用器(路由到 RS485连接器)*/
uart1{(&U)
pinctrl-names ="default"、"sleep";
pinctrl-0 =<&uart1_PINS_DEFAULT>;
pinctrl-1 =<&uart1_PINS_SLEEP>;
状态="正常";
};

在 am33xx_pinux 内部:

uart1_PINS_DEFAULT:uart1_PINS_DEFAULT{
pinctrl-single、pins =<
0x180 (PIN_INPUT_PULLUP | MUX_MODE0)/*(D16) uart1_Rxd.uart1_RxD */
0x184 (PIN_OUTPUT 上拉| MUX_MODE0)/*(D15) uart1_TXD.uart1_TXD *
0x17c (PIN_OUTPUT | MUX_MODE0)/*(D17) uart1_rtsn.uart1_rtsn *
>;
};

uart1_PINS_SLEEP:uart1_PINS_SLEEP{
pinctrl-single、pins =<
0x180 (PIN_INPUT_PULLUGDOWN | MUX_MODE7)/*(D16) uart1_Rxd.uart1_RxD */
0x184 (PIN_INPUT_PULLUGDOWN | MUX_MODE7)/*(D15) uart1_TXD.uart1_TXD *
0x17c (PIN_INPUT_PULLUX | MUX_MODE7)/*(D17) uart1_rts.uart1_rtsn *
>;
};

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我忘记说我尝试将串行端口用作 RS485、RTS 引脚(和其他 UART 引脚)连接到 RS485线路驱动器。

    我看到的是、我可以从 Sitara 发送数据、因为器件始终将 RTS 引脚保持为高电平。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    小更新时、当我不通过 ioctl 调用将 RS485设置为活动状态时、我会得到完全相同的行为
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我找到了问题。 我以前发现的情况仍然是这样的:

    www.spinics.net/.../msg24061.html

    如果您在未手动禁用 RS485 (通过 ioctl 调用)的情况下调用"close"、则无法重新启用 ioctl。 下次打开端口并调用 RS485 ioctl 时,"omap_8250_rs485_config"会调用"serial8250_em485_init",其值为 null "p->em485"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您更新该主题。

    此致、
    Yordan