Each channel in the GPIO modules has the following features:
- Supports 9 banks of 16 GPIO signals
- Supports up to 9 banks of interrupt capable GPIOs
- Interrupts:
- Can enable interrupts for each bank of 16 GPIO signals
- Interrupts can be triggered by rising and/or falling edge, specified for each interrupt capable GPIO signal
- Set/clear functionality:
- Firmware writes 1 to corresponding bit position(s) to set or to clear GPIO signal(s). This allows multiple firmware processes to toggle GPIO output signals without critical section protection (disable interrupts, program GPIO, re-enable interrupts, to prevent context switching to another process during GPIO programming).
- Separate Input/Output registers:
- If preferred by firmware, some GPIO output signals can be toggled by direct write to the output register(s) in addition to set/clear.
- Output register, when read in, reflects output drive status. This, in addition to the input register reflecting pin status, allows wired logic be implemented.