A general purpose input/output ( GPIO ) is a digital signal pin that is not tied to an integrated circuit or electronic circuit board whose behavior - including whether it acts as an input or output - can be controlled by the user at run time.
GPIO has no predefined destination and is not used by default. If used, GPIO objectives and behaviors are determined and implemented by higher level assembly level designers: circuit board designers in the case of GPIO integrated circuits, or system integrators in GPIO board-level cases.
Video General-purpose input/output
GPIO sirkuit terpadu
Integrated GPIO (IC) is implemented in various ways. Some ICs provide GPIO as a primary function while others include GPIO as a convenient "accessory" for some other major functions. Examples include Intel 8255, which connects 24 GPIOs with parallel bus, and various GPIO "expander" ICs, which connect GPIO to serial buses such as IÃ,ÃC and SMBus. The last example is the Realtek ALC260 IC, which provides eight GPIOs in addition to the main function of audio codecs.
Microcontroller ICs usually include GPIO. Depending on the application, the GPIO microcontroller may consist of its main interface to an external circuit or maybe only one type of I/O is used among several, such as analog I/O, timer, and serial communications.
In some ICs, especially microcontrollers, GPIO pins may work interchangeably. Often in such cases, it is necessary to configure the pin to operate as GPIO (vs. its alternate function) in addition to configuring GPIO behavior. Some microcontroller devices (eg, Microchip dsPIC33 family) incorporate an internal signal routing circuitry that allows programmable GPIOs to be programmed to device pins. The FPGA extends this capability by allowing GPIO pin mapping, instantiation and architecture to be programmatically controlled.
Maps General-purpose input/output
GPIO Board level
Many circuit boards expose GPIO-level boards to external circuits through an integrated power connector. Typically, each GPIO can be accessed via a special connector pin.
Like IC-based GPIOs, some boards only include GPIO as a convenient additional resource that adds to the main function of the board, whereas on the other board, GPIO is a board's main function. Some boards, which are usually classified as multi-function I/O boards, are a combination of both; Such boards provide GPIO along with other general purpose I/O types. GPIO is also found on embedded controller boards such as Arduino, BeagleBone and Raspberry Pi.
GPIO board levels are often blessed with capabilities not normally found in GPIO-based ICs. For example, schmitt trigger inputs, high output current drivers, optical isolators, or combinations of these can be used to buffer and condition GPIO signals and to protect circuit boards. Also, higher level functions are sometimes implemented, such as debounce input, input signal input detection, and pulse width-modulation output (PWM).
Usage
GPIO is used in a variety of applications, limited only by the electrical specifications and the GPIO interface time and software capabilities to interact with GPIO in sufficient time.
GPIO usually uses standard logic levels and can not provide significant current to the output load. When followed by a suitable high-output current buffer (or mechanical or solid-state relay), GPIO can be used to control high-power devices such as lamps, solenoids, heaters, and motors (eg, Fans and blowers). Similarly, input buffers, relays or optoisolators are often used to translate incompatible signals (eg, high voltage) to the logic level required by GPIO.
GPIO integrated circuits are commonly used to control or monitor other circuits (including other ICs) on the board. Examples include enabling and disabling the operation (or power to) other circuits, reading on-board switch status and shunt configurations, and directing the LED status indicator. In the latter case, GPIO can, in many cases, provide sufficient output current to directly turn on the LED without using a medium buffer.
Some GPIOs are sometimes used together as intermittent communication interfaces. For example, two GPIOs can be used to implement serial communication buses such as IÃ, ²C, and four GPIOs can be used to implement SPI bus; this is typically used to facilitate serial communication with ICs and other devices that have compatible serial interfaces, such as sensors (eg, temperature sensors, pressure sensors, accelerometers) and motor controllers. Taken to the extreme, this technique can be used to implement the entire parallel bus, thus enabling communication with IC or bus-oriented circuit board.
Although GPIOs are essentially digital, they are often used to control linear processes. For example, GPIO can be used to control motor speed, light intensity, or temperature. Typically, this is done via PWM, where the duty cycle of the GPIO output signal determines the effective magnitude of the process control signal. For example, when controlling the intensity of light, light can be dimmed by reducing the GPIO duty cycle. Some linear processes require linear control voltage; in such cases it might be feasible to connect GPIO - which operated as PWM output - to the RC filter to make simple and inexpensive digital-to-analog converters.
Implementation
The GPIO interface varies greatly. In some cases, they are simple - a group of pins that can switch as a group to input or output. On the other hand, each pin can be set to receive or different logic voltage sources, with configurable drive strength and pull up/down. The input and output voltages are usually - though not always - limited to the supply voltage of the device with GPIO, and can be damaged by larger voltages.
GPIO states may be exposed to software developers through any of a number of different interfaces, such as memory mapped devices, or through special IO port instructions. Some GPIO have a tolerant input of 5Ã,V: even when the device has a low supply voltage (like 2 V), the device can receive 5Ã,V without damage.
GPIO ports are a group of GPIO pins (usually 8 GPIO pins) arranged in groups and controlled as a group.
GPIO capabilities may include:
- GPIO pins can be configured to be input or output
- GPIO pin can be enabled/disabled
- The input value is readable (usually high or low)
- The output value can be written/read
- The input value can often be used as an IRQ (usually for wake-up events)
See also
- Programmatic input/output
- SGPIO
- Special input/output
References
External links
- GPIO Framework for FreeBSD
- FreeBSD gpio (3) API guide
- FreeBSD Manual gpioctl (8)
- FreeBSD gpio (4) manual
- ALSA Development List
- Linux Kernel Doc in GPIO
- GPIO Info Pin LinuxTV
Source of the article : Wikipedia