TS-4100 DIO: Difference between revisions
(Created page with "The i.MX6ul and FPGA GPIO are exposed using the kernel's sysfs GPIO interface. See the kernel's documentation [https://www.kernel.org/doc/Documentation/gpio/sysfs.txt here] f...") |
No edit summary |
||
Line 29: | Line 29: | ||
</source> | </source> | ||
As an output, the in can be written to 0 for low (GND), or 1 for high (3.3V). | As an output, the in can be written to 0 for low (GND), or 1 for high (3.3V). The GPIO pins directly off of the i.MX6ul processor support an absolute maximum of -0.5 to 3.6V. It is also possible to use any processor GPIO as an interrupt by writing the edge value, and then using select() or poll() on the value file for changes. | ||
Revision as of 15:04, 8 June 2016
The i.MX6ul and FPGA GPIO are exposed using the kernel's sysfs GPIO interface. See the kernel's documentation here for more detail. This interface provides a set of files and directories for interacting with GPIO which can be used from any language that can write files.
To interact with a pin, first export it to userspace:
echo "48" > /sys/class/gpio/export
If you receive a permission denied on a pin that means it is claimed by another kernel driver. In this case, you can "cat /sys/kernel/debug/gpio" to see what driver has claimed it. If it succeeds you will have a /sys/class/gpio/gpio48/ directory. The relevant files in this directory are:
direction - "in", "out" (out = low), "low", "high" value - write "1" or "0", or read "1" or "0" if direction is in edge - write with "rising", "falling", or "none"
With direction you can set it as an output and set the direction at the same time with high/low. If you just specify out this is the same as low.
# Set as a low output
echo "out" > /sys/class/gpio/gpio48/direction
# Set GPIO 48 high
echo "1" > /sys/class/gpio/gpio48/value
# Set GPIO 48 low
echo "0" > /sys/class/gpio/gpio48/value
# Read the value of GPIO 48
echo "in" > /sys/class/gpio/gpio48/direction
cat /sys/class/gpio/gpio48/value
# You can set it as a high output by setting the direction:
echo "high" > /sys/class/gpio/gpio48/direction
As an output, the in can be written to 0 for low (GND), or 1 for high (3.3V). The GPIO pins directly off of the i.MX6ul processor support an absolute maximum of -0.5 to 3.6V. It is also possible to use any processor GPIO as an interrupt by writing the edge value, and then using select() or poll() on the value file for changes.