Beagle Bone Black Serial Communication Issue

Hi All,

We are doing serial port configuration for uart1 port in beaglebone black board using yocto project.
We want to connect neoway GPRS module with beaglebone black.
BBB is able to detect the serial port enabled i.e as ttyS1.And opened the serial port using minicom.
115200 is the baud rate set on both BBB serial port and GPRS module.
However communication between BBB and GPRS module is not working.
Below is the dts configuration.

&uart1 {
pinctrl-names = “default”;
pinctrl-0 = <&uart1_pins>;

   status = "okay";

};

uart1_pins: pinmux_uart1_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x980, PIN_INPUT | MUX_MODE0) /* (D16) uart1_rxd.uart1_rxd /
AM33XX_IOPAD(0x984, PIN_OUTPUT | MUX_MODE0) /
(D15) uart1_txd.uart1_txd */
>;
};

Please let us know if we are missing something in the configuration.
Also let us know if you have any suggestions to resolve above issue.

Thanks,
Devika R

The dts looks correct. Assuming the device is being populated in /dev the driver is being loaded.

Obvious things to check.

Is the serial port actually ttyS1 ? I have seen various different naming conventions.
I am currently using an AM335x based board, running Debian where the serial ports come out as ttyOx

If you have a USB->serial port adapter (3v TTL) can you try connecting the BBB to a PC to check for output, or use a scope to check to see if you have data on the tx pin.

Are you swapping tx/rx connections (do they need swapping) between BBB and GPRS module? I assume the GPRS module is using 3v logic on the uart.

Hi,

Yes, serial port is ttyS1.
I have tried to connect BBB to a PC using USB->serial port adapter and transmit the data from BBB , however it is not received on PC.
And tx & rx connections need to be swapped between BBB and GPRS.

Thanks,
Devika R

just installed the IOT image on my BBB and enabling the UART1 overlay it works.

The pin overlay is different.

        fragment@2 {
                target = <&am33xx_pinmux>;
                __overlay__ {
                        bb_uart1_pins: pinmux_bb_uart1_pins {
                                pinctrl-single,pins = <
                                        BONE_P9_24 (PIN_OUTPUT | MUX_MODE0)     // uart1_txd.uart1_txd
                                        BONE_P9_26 (PIN_INPUT | MUX_MODE0)      // uart1_rxd.uart1_rxd
                                //      BONE_P9_19 (PIN_OUTPUT | MUX_MODE0)     // uart1_rtsn.uart1_rtsn
                                //      BONE_P9_20 (PIN_INPUT | MUX_MODE0)      // uart1_ctsn.uart1_ctsn
                                >;
                        };
                };
        };

BONE_P9_26 0x180
BONE_P9_24 0x184

According to the datasheet the pinmux registers are at 0x980 and 0x984, so perhaps the pinmux controller is adding the value to a base address in which case it would be wrong.

You could try using 0x180 & 0x184 see if that works.

1 Like

Hi,

We have checked by connecting BBB to a PC using USB->serial port adapter and transmit the data from BBB. It is able to receive the data on PC. When we connected Tx pin of BBB to Tx pin of USB->serial adapter and Rx pin of BBB to Rx pin of USB->serial adapter it started working.
However if we follow the same method between BBB and GPRS module it is not working.

Thanks,
Devika

What GPRS module are you using ?

Just because you connected BBB tx → PC tx and BBB rx → PC rx when connecting to a PC, it doesn’t follow that the same will work with the GPRS modem.

I assume you also tried both ways with the GPRS modem

Hi,

We are using Neoway N58-CA GPRS module.
Yes we have tried in both the ways of connection with GPRS module.

Thanks,
Devika R

Hi,

Thank you for the support.
This issue is resolved. It was related to hardware configuration with GPRS module.
There was no issue with the DTS configuration we were doing for serial ports in BBB.

Thanks,
Devika R