GPIO with custom devicetree binding¶
In Zephyr, all hardware-specific configuration is described in the devicetree.
Consequently, also GPIO pins are configured in the devicetree and assigned to a specific purpose using a compatible.
This is in contrast to other embedded environments like Arduino, where e.g. the direction (input / output) of a GPIO pin is configured in the application firmware.
This sample demonstrates how to use a GPIO pin for other purposes with a custom devicetree binding.
We assume that a load with high current demands should be switched on or off via a MOSFET. The
custom devicetree binding for the power output controlled via a GPIO pin is specified in the file
samples/basic/custom_dts_binding/dts/bindings/power-switch.yaml. The gate driver for
the MOSFET would be connected to the pin as specified in the
.overlay file in the boards
Building and Running¶
For each board that should be supported, a
.overlay file has to be defined
Afterwards, the sample can be built and executed for the
<board> as follows:
west build -b <board> samples/basic/custom_dts_binding west flash
For demonstration purposes, some boards use the GPIO pin of the built-in LED.
The GPIO pin should be switched to active level after one second.
The following output is printed:
Initializing pin with inactive level. Waiting one second. Setting pin to active level.