27.6.4 PORT Access Priority

The PORT is accessed by different systems:

  • The Arm CPU through the Arm single-cycle I/O port (IOBUS)
  • The Arm CPU through the high-speed matrix and the AHB/APB bridge (APB)
  • EVSYS through four asynchronous input events

The CPU local bus (IOBUS) is an interface that connects the CPU directly to the PORT. It is a single-cycle bus interface, which does not support wait states. It supports 8-bit, 16-bit and 32-bit sizes.

This bus is generally used for low latency operation. The Data Direction (DIR) and Data Output Value (OUT) registers can be read, written, set, cleared or toggled using this bus, and the Data Input Value (IN) registers can be read.

Since the IOBUS cannot wait for IN register resynchronization, the Control register (CTRL) must be configured to continuous sampling of all pins that need to be read via the IOBUS in order to prevent stale data from being read.

Note: Refer to Product Mapping for the PORT IOBUS address.

The following priority is adopted:

  1. Arm CPU IOBUS (No wait tolerated)
  2. APB
  3. EVSYS input events, except for events with EVCTRL.EVACTx=OUT, where the output pin directly follows the event input signal, independently of the OUT register value.
Note: One clock cycle latency can be observed on the APB access in case of concurrent PORT accesses.

For input events that require different actions on the same I/O pin, refer to 27.6.5 Events.