在c ++(linux)中设置GPIO的最快方法

时间:2017-02-09 21:11:41

标签: c++ linux gpio

有最快的方法在c ++中为GPIO设置“1”或“0”吗?

现在,我们正在使用此功能:

void gpioSet(int gpio, int value)
{
    sprintf(buf, "/sys/class/gpio/gpio%d/value", gpio);
    fd = open(buf, O_WRONLY);
    sprintf(buf, "%d", value);
    write(fd, buf, 1);
    close(fd);
}

使用此功能,CPU需要“时间”在C ++下设置它。

这个问题的原因是我们使用的嵌入式linux板在SPI中存在错误。我需要“手动”处理CS(芯片选择),这个功能需要时间来设置或重置CS的GPIO。

感谢。

2 个答案:

答案 0 :(得分:3)

不是每次需要写入时打开和关闭GPIO,只需在第一次需要写入时(或在启动时)打开它。然后你将跳过昂贵的操作。 (将此功能包含在类中以使其清洁。)

在写入GPIO时,还要检查是否使用了缓冲写入模式。

答案 1 :(得分:0)

顺便说一句,请在内核源代码中查看此驱动程序drivers / spi / spi-gpio.c。易于配置以处理GPIO上的SPI总线。