Hello,
I’m writing an app for BeagleBoneBlack running debian (3.8.13-bone50). I would like to use UART4 to communicate with RS485 transmitter over P9.24(UART4 Tx), P9.26(UART4 Rx) and P8.33 (UART4 RTS).
I’ve disabled HDMI and enabled overlays BB-UART4 and BB-UART4-RTSCTS
`
cat /sys/devices/bone_capemgr.9/slots
0: 54:PF—
1: 55:PF—
2: 56:PF—
3: 57:PF—
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
6: ff:P-O-- Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN
7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-UART4
10: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-UART4-RTSCTS
cat /proc/tty/driver/OMAP-SERIAL
serinfo:1.0 driver revision:
0: uart:OMAP UART0 mmio:0x44E09000 irq:72 tx:345 rx:0 RTS|CTS|DTR|DSR
4: uart:OMAP UART4 mmio:0x481A8000 irq:45 tx:61355 rx:1 brk:1 RTS|DTR|DSR
`
RS485 transmitter is connected through RS485-USB converter to PC. When I run screen /dev/ttyO4 9600 +crtscts and periodicaly write some data to it, PC receives it properly, but RTS line stays constantly low (I’m using scope on Tx and RTS lines).
I’ve also tried to write simple C program, using struct serial_rs485. When I write some data over this program, I got response: Resource temporarily unavailable and dmesg says omap_uart 481a8000.serial: Must use GPIO for RS485 Support.
When I tried to use:
struct serial_rs485 rs485conf; rs485conf.flags |= SER_RS485_USE_GPIO; rs485conf.gpio_pin = GPIO0_9;
I got error from gcc that it does not know those macros:
`
‘SER_RS485_USE_GPIO’ was not declared in this scope
rs485conf.flags |= SER_RS485_USE_GPIO;
‘struct serial_rs485’ has no member named ‘gpio_pin’
rs485conf.gpio_pin = GPIO0_9;
‘GPIO0_9’ was not declared in this scope
rs485conf.gpio_pin = GPIO0_9;
`
Could somebody help me? I have no more ideas.