工具/软件:
尊敬的 TI 支持团队:
我目前正在的上进行 RS485通信 AM64x 使用的网关平台 在 RS485模式下 UART6 。 我已经使用 CTS 和 RTS 引脚配置了 UART、请找到下面的 dts 代码片段、我已经在器件树中启用了 RS485绑定并使用映射的 GPIO 配置了方向控制rts-gpios
。 但是、我遇到了 RS485总线上一致通信的问题。
密钥配置:
-
SoC: AM6442
-
内核版本: 6.6.58-rt45-ti-rt-01780-gc79d7ef3a56f-dirty
-
UART 驱动程序: 8250_OMAP
-
方向控制: 使用配置 GPIO 引脚
rts-gpios
as well as UART RTS
-
配置了 CTS 和 RTS 的 UART 的 DTS 代码片段、此处 RTS 引脚将用作 RS485的方向控制:
main_uart6_pins_default:main-uart6-pins-default{
全部引导;
pinctrl-single、pins =<
AM64X_IOPAD (0x0074、PIN_INPUT、2)/*(Y21) GPMC0_AD14.UART6_RXD *
AM64X_IOPAD (0x0078、PIN_OUTPUT、2)/*(Y20) GPMC0_AD15.UART6_TXD *
AM64X_IOPAD (0x006c、PIN_INPUT、2) /*(W21) GPMC0_AD12.UART6_CTSn */
AM64X_IOPAD (0x0090、PIN_OUTPUT、2) /*(P17) GPMC0_BE0n_CLE。UART6_RTSn */
>;
&MAIN_uart6{
状态="正常";
pinctrl-names ="default";
pinctrl-0 =<&MAIN_uart6_pins_default>;
};
- RS485 DTS 绑定、此处 RTS 引脚配置为 GPIO、RS485绑定属性已在 DTS 中定义、请浏览以下代码片段。
main_uart6_pins_default:main-uart6-pins-default{
全部引导;
pinctrl-single、pins =<
AM64X_IOPAD (0x0074、PIN_INPUT、2)/*(Y21) GPMC0_AD14.UART6_RXD *
AM64X_IOPAD (0x0078、PIN_OUTPUT、2)/*(Y20) GPMC0_AD15.UART6_TXD *
>;
};
/* RS485方向控制引脚*/
RS485_driver_receiver_enable_pin:RS485-de-re-pin-default{
pinctrl-single、pins =<
AM64X_IOPAD (0x0090、PIN_OUTPUT、7) /*(P17) GPMC0_BE0n_CLE。UART6_RTSn 作为 GPIO
>;
};
&MAIN_uart6{
状态="正常";
pinctrl-names ="default";
pinctrl-0 =<&MAIN_uart6_pins_default &RS485_driver_receiver_enable_pin>;
linux、RS485-enabled-at-boot-time;
RS485-RTS-ACTIVE 高电平;
RS485-Rx-dur-TX 期间;
RTS-GPIOs =<&MAIN_GPIO0 35 GPIO_ACTIVE_LOW>;
};
问题描述:
-
用于方向控制的 GPIO 在 TX/RX 周期内未按预期切换。
-
当使用具有
TIOCSRS485
ioctl 的用户空间应用程序时、方向似乎保持不变。 -
尝试的环回和外部器件测试间歇性失败。
请求:
-
请确认
8250_omap
rts-gpios
AM64x 上是否完全支持 RS485。 -
为了使方向控制与 GPIO 可靠运行、是否需要已知限制或补丁?
-
此 SoC 上是否有 RS485双工的示例或建议的配置?
期待您的指导或您可以分享的任何参考资料。
此致、
Saranbabu 公里