The general purpose I/O (GPIO) is a collection of input/output signals available to software applications. Each GPIO channel is independently and dynamically programmed as input, output, or interrupt sensing mode.
Software applications can read all GPIO values within a bank using a single load instruction. Software can write data to one or more GPIOs using a single store instruction on a half-bank boundary. The channel architecture is shown in the Channel Block Diagram.
The two GPIO controllers have the same functionality. There are a total of 174 channels in two controllers:
- PMC GPIO controller:
- Two banks (26 channels each) to PMC MIO
- Two banks (32 channels each) to PL EMIO
- LPD GPIO controller:
- One bank (26 channels) to LPD MIO
- One bank (32 channels) to PL EMIO
The GPIO channels are programmed via an APB programming interface; the Registers section summarizes them.
The Input Programming Model section shows how to configure a GPIO as an input. The model describes an input can generate a system interrupt.
The GPIO can be an output as described in the Output Programming Model chapter.
The I/O signal MIO muxing and EMIO port signals are listed in the GPIO I/O Signals section.