- ...
- base images
- SDK
- ...
- ...
- tools
- premade packages
Access GPIOs#
GPIOs can be accessed with libgpiod and its command line tooling
gpioset
gpioget
libsimplecoreio#
To create a reliable mapping between libgpiod
and the GPIO on the respective board, we
provide libsimplecoreio
.
libsimplecoreio
is a small library can can be freely integrated into your code.
Usage in C#
A struct gpiod_line *
pointer can be obtained using
simplecoreio_get_gpio()
.
struct gpiod_chip *chip;
struct gpiod_line *line = simplecoreio_get_gpio("GPIO8", &chip);
gpiod_line_request_output(line, "mscio-lib2-test", 0);
gpiod_line_set_value(line, 1);
gpiod_chip_close(chip);
Usage in Python#
A gpiod.Line
handle can be obtained using simplecoreio.get_gpio()
.
line = simplecoreio.get_gpio("GPIO8")
line.request("mscio-lib2-test", gpiod.LINE_REQ_DIR_OUT)
line.set_value(1)
line.release()
Usage from command line#
From command line you can call
$ simplecoreio-list
GPIO0 gpiochip0 11
GPIO1 gpiochip3 1
GPIO2 gpiochip3 2
GPIO3 gpiochip3 3
GPIO4 gpiochip3 29
GPIO5 gpiochip4 2
GPIO6 gpiochip3 18
GPIO7 gpiochip0 10
GPIO8 gpiochip3 20
GPIO9 gpiochip3 21
GPIO10 gpiochip3 22
GPIO11 gpiochip3 28
GPIO12 gpiochip3 19
GPIO13 gpiochip3 0
which lists all supported GPIOs and their libgpiod
information.
The information can be easily combined to e.g. set GPIO0
as an output/high
$ gpioset $(simplecoreio-list | grep GPIO0 | cut -d' ' -f2-)=1
Important
Only one application can hold a GPIO (e.g. gpiod_line_request_output
) at a time.
Another application can only access the same GPIO after the first application released it again (e.g. gpiod_line_release
).
Appropriate error handling should be implemented into each application’s workflow.