UART1 Isn't Reading

I’m trying to have a Beaglebone Black Wireless(debian image 2017-07-01) communicate to another device using UART serial communication. In an example program, the bone waits for the device to send the letter “A”, then, upon receiving the right letter, outputs a message and transmits the letter “B”. The pins used for transmitting and receiving are “P9_24” and “P9_26” respectively. Here is the following program:

import Adafruit_BBIO.UART as UART
import serial

#Enabling the serial ports
UART.setup("UART1")

#Serial setup values
ser = serial.Serial()
ser.port = "/dev/ttyO1"
ser.baudrate = 9600  
READ_LEN = 1
ser.close()

rx = ""

while True:
    print "Waiting for A... "
    ser.open()
    rx = ser.read()
    ser.close()

    if (rx == 'A'):
        print "Got it!"
        ser.open()
        ser.write("B")
        ser.close()
        break

The program doesn’t throw any errors, however, when testing it out with the device, the program gets stuck on the “Waiting for A” line. I have thoroughly checked that all connections are correct and that the other device is sending data. Additionally, the program runs perfectly on an older Beaglebone (debian image 2015-11-12).

Any help into this matter would be greatly appreciated.

Hello,

My name is Seth. Tomas, you may need to add the BB-UART1_TXD and BB-UART1_RXD or whatever pins you are using in the uEnv.txt file. You can add these specific lines, now this is if the pins are still called this on your specific board, by going to the /boot directory and finding your uEnv.txt file. This file can be altered or changed by using vim or emacs or nano and you would have to change the section cape_enable=bone_capemgr.enable_partno= to cape_enable=bone_capemgr.enable_partno=BB-UART1_TXD,BB-UART1_RXD.

I am pretty sure this is how it is done. Let me know if this works.

Seth

P.S. I have tried to comment the Universal Cape section and delete the comment on the cape_enable=bone_capemgr.enable_partno= section to try this override before. It has worked at times.

Tomas,

Seth here, again. This is just a thought. You may need python-smbus installed on your machine with the correct PATH.

Seth

P.S. You can find the documentation on this at https://learn.adafruit.com/setting-up-io-python-library-on-beaglebone-black/installation-on-ubuntu.

You may need to configure those pins for uart mode:

config-pin P9_24 uart
config-pin P9_26 uart

If that does not fix the problem, then please create an issue in the
GitHub repo:
https://github.com/adafruit/adafruit-beaglebone-io-python

and paste the output of these commands in the issue:

config-pin -q P9_24
config-pin -q P9_26
sudo /opt/scripts/tools/version.sh

thanks,
drew

Thanks Drew! The commands seem to make it work. I’ll leave this open in case I run into any more problems.

Hello,

That works…cool! I will know how to handle things in the future.

Seth

Hi,

I’m also having some issues enabling/disabling UART1, 2 through the device tree, am57xx-evm-reva3.dtb, on the BB-X15.

I’m attempting this on an am572xEVM, rev a3 with beagleboard image with debian 8.6 and kernel 4.4.30. Thus far, nothing is coming out the TXD pins when I run minicom on the Beagle and type characters. I plan to collect some more data and create a separate thread on enabling UARTX on here for the BBX-15, as this seems like it could be of interest to the community and I need its help…

In the meantime, I was wondering if config-pin also works on the BB-X15 as well as the BBB…

I briefly tried the “config-pin” on the BB-X15, but could not figure out how to make config-pin recognize the pins on the BB-X15. Also, I’m not yet sure how to refer to the BB-X15’s pins. I tried expansion_header_pin (e.g. P18_30), but config-pin didn’t recognize that

However, when I referred to the BBB’s P8 and P9 header config-pin generated the following output:

debian@BeagleBoard-X15:~$ config-pin -i p8_24
Pin name: P8_24
Function if no cape loaded: emmc
Function if cape loaded: default gpio gpio_pu gpio_pd
Function information: mmc1_dat1 default gpio1_1 gpio1_1 gpio1_1
Cape: cape-universala cape-univ-emmc
Kernel GPIO id: 33
PRU GPIO id: 65

debian@BeagleBoard-X15:~$ config-pin -i p9_24
Pin name: P9_24
Function if no cape loaded: gpio
Function if cape loaded: default gpio gpio_pu gpio_pd uart can i2c pru_uart pruin
Function information: gpio0_15 default gpio0_15 gpio0_15 gpio0_15 uart1_txd dcan1_rx i2c1_scl pr1_uart0_txd pr1_pru0_pru_r31_16
Cape: cape-universala cape-universal cape-universaln
Kernel GPIO id: 15
PRU GPIO id: 47

debian@BeagleBoard-X15:~$ cat /etc/dogtag
BeagleBoard.org Debian Image 2016-11-06

Thanks, jeff…