Hi
I have been struggling to get RS-485 Tx enable coms working on Beaglebone black.
As a newbie, Robert Nelson and Zmatt have been very helpful (and patient) with instructions to help me get this working.
I now have RTS and CTS enabled on my UART1 using BB-UART1-00A0.dts
I can drive RTS high and low from my CPP app, but the kernel does not automatically drive RTS for my RS-485 driver Tx-enable as I hoped.
I noted there was also a BB-UART4-RS485-00A0.dts file which pretty much models what I did to BB-UART1-00A0.dts except with UART4
The significant change was fragment 3 which has RS-485 related parameters which looked hopeful.
fragment@3 {
target = <&uart4>;
__overlay__ {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&bb_uart4_rs485_pins>;
rs485-rts-delay = <0 0>;
rts-gpio = <&gpio3 19 1>; /* GPIO_ACTIVE_HIGH>; */
rs485-rts-active-high;
linux,rs485-enabled-at-boot-time;
};
};
So I tried this adding the following to my /boot/uEnv.txt file
uboot_overlay_addr4=/lib/firmware/BB-UART1-00A0.dtbo
uboot_overlay_addr5=/lib/firmware/BB-UART4-RS485-00A0.dtbo
sudo ./show-pins.pl gives me:
P9.11 28 T17 fast rx 6 uart 4 rxd serial@481a8000 (pinmux_bb_uart4_rs485_pins)
P9.13 29 U17 fast 6 uart 4 txd serial@481a8000 (pinmux_bb_uart4_rs485_pins)
P9.27 105 C13 fast down 7 gpio 3.19 serial@481a8000 (pinmux_bb_uart4_rs485_pins)
I am not driving P9 pin 27 in my CPP app, hoping the Kernel will control it automatically but my scope shows it stays low even when I transmit.
I feel I am very close now but just need help to get this over the line.
Thanks
Michael