Hi,
I am try setting gpio on Jetson nano with below interfaces and find out that , legacy interface is faster to toggle the gpio then new interface.
I use c program to toggle the gpio with legacy interface for example:
int uart_pin = 15;
for(int i = 0; i < 4; i++)
{
gpio_write(uart_pin, 1);
gpio_write(uart_pin, 0);
}
I found that it takes few microsecs to toggle the gpio, but when I update the interfaces to new IOCTL interface for example
rq.lineoffsets[0] = offset;
rq.flags = GPIOHANDLE_REQUEST_OUTPUT;
rq.lines = 1;
ret = ioctl(fd, GPIO_GET_LINEHANDLE_IOCTL, &rq);
close(fd);
if (ret == -1)
{
printf(“Unable to line handle from ioctl : %s”, strerror(errno));
return;
}
data.values[0] = value;
ret = ioctl(rq.fd, GPIOHANDLE_SET_LINE_VALUES_IOCTL, &data);
it takes ~2secs to toggle the GPIO. could you please let us know how can we use the new interface to quickly toggle the GPIO or nano has any limitation ?
may I know which GPIO pin you’re using, are you able to control the pin manually via sysnode to check the performance.
for example,
please enter the location of the GPIOs, $ cd /sys/class/gpio
taking gpio220 as an example, you should generate gpio220 name with… $ echo 220 > export
after that, you should able to enable the GPIO and toggle the pin, $ echo out > direction && echo 1 > value
I am using gpio 18 on the nano .
are you able to control the pin manually via sysnode to check the performance.
I used logic analyazer to check the performance and used gpio_export and gpio_set_dir () by which Gpio performance are fine.
the only issue is when we use IOCTL call to control the GPIOs.