GPIO方向的目的是什么?

时间:2014-03-26 03:03:24

标签: gpio

我一直在寻找一些node.js gpio库,虽然我非常喜欢onoff,但我不想依赖已安装的python版本(它在我的笔记本电脑上失败,因为我有python 3.3 .2),所以我正在编写自己的gpio库。

GPIO的基本思想似乎只是读取和写入特定的GPIO文件,我猜测操作系统正在寻找更改,或者可以对该文件进行更改。

我看到的所有图书馆都有一个'方向',但我认为这对我来说似乎有些过分。如果我正在读取一个值,我的方向是'out',如果我正在写一个文件,我的方向是'in'。是否有其他原因在大多数库中分离出来?

来自pi-gpio的例子,这是一个非常简单的库 https://github.com/rakeshpai/pi-gpio/blob/master/pi-gpio.js

gpio.open(16, "output", function(err) {     // Open pin 16 for output
    gpio.write(16, 1, function() {          // Set pin 16 high (1)
        gpio.close(16);                     // Close pin 16
    });
});

并且库中的open方法是

open: function(pinNumber, direction, callback) {
        pinNumber = sanitizePinNumber(pinNumber);

        if(!callback && typeof direction === "function") {
            callback = direction;
            direction = "out";
        }

        direction = sanitizeDirection(direction);

        exec(gpioAdmin + " export " + pinMapping[pinNumber], handleExecResponse("open", pinNumber, function(err) {
            if(err) return (callback || noop)(err);

            gpio.setDirection(pinNumber, direction, callback);
        }));
    },

1 个答案:

答案 0 :(得分:2)

如果您深入了解所有抽象层,您会发现许多微处理器/ SoC设备通过(至少)两个硬件寄存器公开GPIO

  • 数据寄存器
  • 方向寄存器

数据寄存器当然是您读取/写入从输入引脚获取值或更改输出引脚值的内容。

方向寄存器控制引脚是输入还是输出(或两者)。这会影响与该引脚相关的内部缓冲/输出驱动器电路。

例如,GPIO引脚配置为"输入" (或读取)将处于高阻抗(高Z)状态,因此它对连接电路几乎没有负载。另一方面,输出引脚通常会被拉至Vcc或GND。

你所看到的是这个必要的方向注册被抽象到Javascript级别,它似乎毫无意义。然而,作为电气工程师。这是必要的。