GPIO Expander¶
This firmware allows to configure, read and write all GPIOs over CAN.
Usage¶
Build and flash
west build -b ardep -p auto samples/gpio_expander west flash
Enable can interface
sudo ip link set can0 type can bitrate 500000 sudo ip link set up can0
There should be a can interface, linke a USB-CAN adapter connected. The CAN adapter should be connected to the CAN A of the board. Termination should be activated on both ends.
Read pin values
candump can0
The frame with 0x003 provides the values of the pins
Confiure pins as output
cansend can0 001#0F00000000000000
This configures the first 4 pins as output
Confiure pins as output
cansend can0 001#0800000000000000
This writes a high value to pin 3 and low to 0, 1, 2, if the first 4 pins are configured as output.
Protocol¶
The order of the pins, depends on the pin definiton in the overlay. Initially all pins are configured as input.
Config frame (client request)
8 byte: 7 byte config + 1 byte reserved
bit 0 → Input, bit 1 → Output
GPIO State frame (server update)
8 byte: 7byte io States, 1 byte reserved
bit 0 → IO Low, bit 1 → io High
Write GPIOs (client request)
8 byte: 7byte io States, 1 byte reserved
bit 0 → IO Low, bit 1 → io High
Pins not configured as output are ignore, but value might be stored if pin is later configured as output.