04-Expansion_Pins_Testing

K4B Extension Pins

image-20250520102455370

Serial Ports

Check device nodes

ls /dev/ttyS*
/dev/ttyS1  /dev/ttyS3  /dev/ttyS4  /dev/ttyS5

Serial port device nodes explanation:

  • TTL signals are on the expansion pins; RS485/232 signals are on the white terminals.

    • ttyS1 ↔ UART1 (RS485)

    • ttyS5 ↔ UART5 (RS232)

    • ttyS3 ↔ UART3 (Debug port)

    • ttyS4 ↔ UART4 (TTL)

Set baud rate

stty -F /dev/ttyS4 ispeed 115200 ospeed 115200 cs8

Send data via serial port

echo kickpi > /dev/ttyS4

Receive data

cat /dev/ttyS4

GPIO

sys LED Control GPIO pins can be registered as LEDs for direct control via the brightness node.

Check registered LEDs

$ ls /sys/class/leds/
PD14      PE11      PG0       PG12      PG13      PG14      PG15      work-led

Example: Control PD14 pin

console:/ # ls /sys/class/leds/PD14
brightness device max_brightness power subsystem trigger uevent
console:/ # cat /sys/class/leds/PD14/brightness
255
console:/ # echo 0 > /sys/class/leds/PD14/brightness  # Set low level
console:/ # echo 1 > /sys/class/leds/PD14/brightness  # Set high level

Sunxi GPIO Control

cd /sys/kernel/debug/sunxi_pinctrl

# View pin configuration
echo PH8 > sunxi_pin
cat sunxi_pin_configure

# Configure pin as GPIO output
echo 'PH8 1' > function

# Check pin level
cat data
echo 'PH8 1' > data  # Output high
echo 'PH8 0' > data  # Output low

# For PL and later pins, switch device name first:
echo pio > /sys/kernel/debug/sunxi_pinctrl/dev_name
echo r_pio > /sys/kernel/debug/sunxi_pinctrl/dev_name

PWM

echo 3 > /sys/class/pwm/pwmchip0/export
echo normal > /sys/class/pwm/pwmchip0/pwm3/polarity  # or "inversed"
echo 100000 > /sys/class/pwm/pwmchip0/pwm3/period    # Period in ns
echo 20000 > /sys/class/pwm/pwmchip0/pwm3/duty_cycle # Duty cycle = duty_cycle/period
echo 1 > /sys/class/pwm/pwmchip0/pwm3/enable

Output waveforms

  • Normal polarity:

  • Inversed polarity:

SPI

Test command

spi_test -p "hello" -v

Hardware setup: Short-circuit PIN19 and PIN21.

I2C

Allwinner TWI bus = I2C bus.

dmesg -n1  # Reduce log level to avoid interference
i2cdetect -y 3  # Scan devices on bus 3 (e.g., device at 0x51)
image-20250520142914945

USB

Supported pins: PIN9, PIN11, PIN13, PIN15 (for USB devices).

Last updated