The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Linux - Доступ к GPIO из пространства пользователя

Linux - Доступ к GPIO из пространства пользователя

Предыдущая  Содержание  Следующая V*D*V

http://brew-j2me.blogspot.com/

 

Android Karthik Wednesday, March 24, 2010

 

Для доступа к контактам GPIO из пространства пользователя ядро Linux предоставляет интерфейс GPIOLIB. Для получения интерфейса GPIOLIB убедитесь, что вы скомпилировали ядро со следующими опциями.

 

CONFIG_ARCH_REQUIRE_GPIOLIB

CONFIG_GPIOLIB

CONFIG_GPIO_SYSFS

 

Теперь вы можете обращаться и манипулировать контактами GPIO из пространства пользователя, используя стандартные вызовы Си, такие как Open, Write, Read, Close и другие.

 

Перед манипулированием GPIO, необходимые контакты GPIO должны быть экспортированы и должным образом сконфигурированы. Каждый контакт GPIO процессора имеет уникальный номер, обратитесь к документации на процессор.

 

Для экспорта GPIO необходимо необходимо открыть интерфейс GPIOLIB export и записать номер GPIO, который вы хотите экспортировать.

 

int exportfd;

exportfd = open("/sys/class/gpio/export", O_WRONLY);

if (exportfd < 0)

{

    printf("Cannot open GPIO to export it %d\n", errno);

    return -1;

}

 

Запишите GPIO, который вы хотите экспортировать и закройте интерфейс экспорта.

 

write(exportfd, "149", 4);

close(exportfd);

 

Затем необходимо сконфигурировать направление GPIO, используя интерфейс GPIOLIB direction.

 

int directionfd;

directionfd = open("/sys/class/gpio/gpio149/direction", O_RDWR);

if (directionfd < 0)

{

    printf("Cannot open GPIO direction for 149\n");

    return -1;

}

 

Запишите "in", если GPIO является входом или "out", если GPIO является выходом и закройте интерфейс.

 

write(directionfd, "out", 4);

close(directionfd);

 

Теперь, чтобы установить/сбросить сигнал на контакте GPIO, можно использовать интерфейс GPIOLIB value.

Установим ВЫСОКИЙ уровень на линии GPIO:

 

int valuefd;

valuefd = open("/sys/class/gpio/gpio149/value", O_RDWR);

if (valuefd < 0)

{

    printf("Cannot open GPIO value for 149\n");

    return -1;

}

write(valuefd, "1", 2);

close(valuefd);

 

Установим НИЗКИЙ уровень на линии GPIO:

 

int valuefd;

valuefd = open("/sys/class/gpio/gpio149/value", O_RDWR);

if (valuefd < 0)

{

    printf("Cannot open GPIO value for 149\n");

    return -1;

}

write(valuefd, "0", 2);

close(valuefd);

 

Для чтения состояния GPIO можно использовать функцию read().

 

Предыдущая  Содержание  Следующая