Serial Communication through UART RX TX

I have configured Axon V1.0 UART commincation to custom ipcb board. connection is pi pin no 8 as GND, 10 to IPCB TX, 12 to IPCB RX and aa to IPCB DIR. when i sending command for read voltage unable to get response from RX. Even after sending cmd onlt tx count increasing no change happening in rx count. i am using baud rate 115200 and ttyS1

I hope you are talking about UART Debug pins.
https://docs.vicharak.in/vicharak_sbcs/axon/axon-getting-started/#using-serial-console

For Debug UART Pins, baudrate is 1500000

Could you make video and send it over here!?

If you want to use GPIO pins as header than Kindly go through the documentation.

Kindly go through documentation again.
https://docs.vicharak.in/vicharak_sbcs/axon/peripherals/uart/


attached the video and followed the same steps which mentioned in (UART | Vicharak)

Could you confirm your overlays is turned it or not !?

cat /boot/extlinux/extlinux.conf and also make sure after enabling it, you have rebooted axon.

yes rebooted and extlinux.conf has ##/boot/extlinux/extlinux.conf

IMPORTANT WARNING

The configuration of this file is generated automatically.

Do not edit this file manually, use: u-boot-update

default 10

menu title U-Boot menu

prompt 0

timeout 10

Label 10

menu label Vicharak Linux Kernel 6.1.75-axon

linux/Image-6.1.75-axon

initrd /initrd.img-6.1.75-axon

fdt/rk3588-axon-linux-6.1.75-axon.dtb

fdtoverlays /overlays-6.1.75-axon/rk3588-axon_v0.3-uart1.dtbo

append audit=0 earlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 irqchi

p.gicv3_pseudo_nmi=0 loglevel=4 earlyprintk plymouth.ignore-serial-consoles quiet root=PARTUUID=2376a9e2-c4b0-4028-975a-488b107fb0d0 rootwait rw splash coherent_poo

l=1m systemd.gpt_auto=0 cgroup_enable=memory swapaccount=1

root@AXONTEST1001:~#


We have also tried with Axon To Axon communication using UART1 with 115200 baudrate.

Confirm wire health as well.

even for me when looping then working fine but i have connected with ipcb board, there i am getting issues. is there any way to find out whether communication is establishing or not

1 Like

Hi,

Since loopback on Axon works and your TX count increases when you send commands, your Axon UART1 transmit path is working correctly. The issue is that Axon is not receiving anything back on RX (RX count stays at 0). So this is mainly an RX path or IPCB response problem, not an Axon TX or overlay problem.

Axon UART1 pin reference (30-pin header):

  • Pin 8 = GND
  • Pin 10 = UART1 RX (Axon receives here)
  • Pin 12 = UART1 TX (Axon sends here)
  • Device: /dev/ttyS1
  • Baud: 115200 (8N1 unless IPCB docs say otherwise)
    (try with lower baud rates also)

Correct wiring to IPCB:

  • Axon Pin 12 (TX) β†’ IPCB RX
  • Axon Pin 10 (RX) ← IPCB TX
  • Axon Pin 8 (GND) ↔ IPCB GND

Note: Pin 2 and Pin 4 are debug UART (1500000 baud), not UART1. You should use ttyS1 on Pin 10/12.

HOW TO CHECK IF COMMUNICATION IS ESTABLISHING

Test 1 - Loopback on Axon (confirm Axon UART is OK):

Short Pin 10 and Pin 12 together, then run:

stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb raw -echo
( cat /dev/ttyS1 | hexdump -C ) &
sleep 1
echo β€œHELLO_TEST” > /dev/ttyS1
sleep 1
kill %1 2>/dev/null

Expected: You should see HELLO_TEST in the output.
If yes, Axon UART hardware and driver are fine.

Test 2 - Listen on RX while sending command to IPCB:

Terminal 1 (listen):
stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb raw -echo
timeout 30 cat /dev/ttyS1 | hexdump -C

Terminal 2 (send your read-voltage command):
stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb raw -echo
echo -ne β€˜<YOUR_COMMAND_BYTES>’ > /dev/ttyS1

Replace <YOUR_COMMAND_BYTES> with your exact command from IPCB documentation.

Result:

  • If bytes appear in Terminal 1: RX path is working, check command/protocol format.
  • If no bytes at all: IPCB is not replying OR something is blocking the RX path.

Test 3 - Most important: Test IPCB alone with USB-TTL adapter (bypass Axon):

Connect USB-UART adapter directly to IPCB:

  • USB-TTL TX β†’ IPCB RX
  • USB-TTL RX ← IPCB TX
  • USB-TTL GND ↔ IPCB GND

Use same baud (115200) and send the same read-voltage command.

Result:

  • If IPCB responds on USB-TTL: IPCB is OK, problem is in Axon-to-IPCB link (wiring, DIR, voltage levels).
  • If IPCB does not respond on USB-TTL either: Problem is on IPCB side (command format, power, firmware).

Please share this result with us.

Test 4 - Test IPCB with another board (ESP / Arduino / Raspberry Pi):

If you have any other board available (ESP32, ESP8266, Arduino, Raspberry Pi, etc.), connect it directly to your IPCB board and test communication.

Important for this test:

  • Connect only TX, RX, and GND
  • Do NOT connect DIR pin for this test
  • Use same baud rate (115200) and same read-voltage command

Wiring:

  • Other board TX β†’ IPCB RX
  • Other board RX ← IPCB TX
  • Other board GND ↔ IPCB GND

Example with Arduino/ESP (basic test sketch idea):

  • Open Serial Monitor or use HardwareSerial at 115200 baud
  • Send your read-voltage command
  • Check if IPCB sends any response back

Result:

  • If IPCB works with ESP/Arduino/other board: IPCB is OK, issue is specific to Axon connection (DIR pin, voltage level, wiring, or timing).
  • If IPCB does not work with ESP/Arduino/other board either: Problem is on IPCB side (command format, power, firmware, or IPCB hardware fault).

This test helps confirm whether IPCB itself is responding correctly, independent of Axon.

Test 5 - Check UART stats on Axon:

cat /proc/tty/driver/serial

Compare before and after sending command. If TX increases but RX does not, it confirms Axon is sending but not receiving anything back.

Test 6 - Hardware check (if you have multimeter or logic analyzer):

Probe IPCB TX line (connected to Axon Pin 10) while sending your command.

  • If IPCB TX toggles: IPCB is trying to respond, check wiring, DIR, or voltage levels.
  • If IPCB TX stays idle: IPCB is not responding, check command format, power, firmware.

TX WORKS BUT RX DOES NOT - CHECKLIST

  1. Wiring
  • Pin 10 (Axon RX) must connect to IPCB TX
  • Pin 12 (Axon TX) must connect to IPCB RX
  • Pin 8 (GND) must connect to IPCB GND
  • Try swapping TX and RX once as a test (wrong labels on custom boards are common)
  • Check cable continuity on RX line (Pin 10)
  1. DIR pin (very important)
    You mentioned connecting a pin to IPCB DIR. If IPCB uses RS485 or has direction control, you must switch DIR:
  • TX mode when Axon sends data
  • RX mode when Axon waits for response

If DIR stays in TX mode, Axon will send fine (TX count increases) but will never receive the reply (RX count stays 0).

Please confirm:

  • Which exact Axon pin is connected to IPCB DIR?
  • Is IPCB TTL UART or RS485 (A/B differential lines)?
  • What is DIR polarity? (HIGH = transmit or HIGH = receive?) Check this with a multimeter while sending on TX and while waiting on RX.
  • Study/check how you can toggle this pin if it stays in a single state. DIR must change state between Transmitting and Receiving β€” it cannot stay fixed in one state for both.

How to check DIR polarity with multimeter:

  • Set multimeter to DC voltage between DIR pin and GND.
  • While Axon is transmitting (sending command): note DIR voltage level (HIGH or LOW).
  • While Axon is idle and waiting for response on RX: note DIR voltage level again.
  • Compare both readings. If DIR level is the same during TX and RX wait, the pin is NOT toggling; this is likely why RX is not working.

How to toggle DIR correctly:

  • Before sending command: set DIR to TRANSMIT state
  • Send command on TX
  • After sending: switch DIR to RECEIVE state
  • Wait and read response on RX

If DIR stays in one state always, study your IPCB documentation or control DIR from Axon GPIO in software. You may need to manually drive the GPIO HIGH/LOW at the right time around each transmit/receive cycle.

  1. Serial settings
    Run on Axon:
    stty -F /dev/ttyS1 -a

Confirm with IPCB docs:

  • Baud: 115200
  • 8 data bits, no parity, 1 stop bit (8N1) unless IPCB requires different settings
  • No flow control unless IPCB requires RTS/CTS
  1. Command / protocol
    Even with correct wiring, IPCB will not reply if command format is wrong.
    Please share:
  • Exact read-voltage command (hex or ASCII)
  • Expected response format
  • Any delay required after sending command
  • Any CRC or checksum requirement
  1. RS485 (if applicable)
    If IPCB uses RS485, TX/RX/GND alone is not enough. You also need:
  • RS485 transceiver (e.g. MAX3485) on Axon side
  • A and B lines connected correctly
  • DIR (DE/RE) controlled from GPIO
  • Proper bus termination if required

WHAT WE NEED FROM YOU

  1. Result of USB-TTL test on IPCB (with Axon removed from path)
  2. Result of ESP/Arduino/other board test on IPCB (without DIR pin connected)
  3. IPCB type: TTL UART or RS485?
  4. Full wiring table: Axon pin β†’ IPCB signal (including DIR pin)
  5. Exact read-voltage command bytes and expected response
  6. Logic analyzer capture on IPCB TX line (if available)

SUMMARY

Your Axon TX is working. RX is not receiving data from IPCB. Most likely causes are:

  • IPCB not responding (wrong command or protocol)
  • DIR pin not switched to receive mode after sending
  • Wiring issue on RX line (Pin 10)
  • TTL vs RS485 mismatch
  • 3.3V vs 5V level mismatch

That will tell us whether the problem is on IPCB side or in the Axon-to-IPCB connection.

Thanks.

i have tested voltage from multimeter, my ipcb board producing 4.2v approx in ipcb TX pin, is it the cause?

Hi,

Yes, that can be the cause. Axon UART1 RX (Pin 10) is 3.3 V, but your IPCB TX is about 4.2 V., that usually means 5 V TTL from the IPCB. Connecting it directly to Axon RX can prevent proper communication (TX works, RX stays 0) and may damage the Axon pin over time.

What to do: Use a 3.3 V ↔ 5 V level shifter between IPCB TX β†’ Axon Pin 10 (RX) and Axon Pin 12 (TX) β†’ IPCB RX. Keep GND common (Pin 8 ↔ IPCB GND). Then test again at 115200 on /dev/ttyS1.

Thanks.