GPIOTE — GPIO tasks and events
The GPIO tasks and events (GPIOTE) peripheral provides functionality for accessing GPIO pins using tasks and events. Each GPIOTE channel can be assigned to one pin.
The main features of GPIOTE are the following:
- GPIO pin state change by triggering tasks
- Event generation on GPIO pin state change
- PORT event generation on GPIO DETECT signal
- Support for split security on individual GPIOTE channels
A GPIOTE block enables GPIOs to generate events on pin state change which can be used to carry out tasks through the PPI system. A GPIO can also be driven to change state on system events using the PPI system. See Peripheral interface for additional information on tasks and events. GPIO is described in more detail in GPIO — General purpose input/output.
Detection of pin state changes when in low power mode is possible when in System ON or System OFF.
GPIOTE supports split-security. Each channel is assigned a security state (S/NS).
Up to three tasks can be used in each GPIOTE channel for performing write operations to a pin. Tasks SET and CLR are fixed. OUT can be configured to perform following operations:
- Set
- Clear
- Toggle
An event can be generated in each GPIOTE channel from one of the following input conditions:
- Rising edge
- Falling edge
- Any change
Pin events and tasks
The GPIOTE module has a number of tasks and events that can be configured to operate on individual GPIO pins.
The tasks SET[n], CLR[n], and OUT[n] can write to individual pins, and events IN[n] can be generated from input changes of individual pins.
The SET task will set the pin selected in CONFIG[n].PSEL to high. The CLR task will set the pin low.
The effect of the OUT task on the pin is configurable in CONFIG[n].POLARITY. It can set the pin high, set it low, or toggle it.
Tasks and events are configured using the CONFIG[n] registers. One CONFIG[n] register is associated with a set of SET[n], CLR[n], and OUT[n] tasks and IN[n] events.
As long as a SET[n], CLR[n], and OUT[n] task or an IN[n] event is configured to control pin n, the pin's output value will only be updated by the GPIOTE module. The pin's output value, as specified in the GPIO, will therefore be ignored as long as the pin is controlled by GPIOTE. Attempting to write to the pin as a normal GPIO pin will have no effect. When the GPIOTE is disconnected from a pin, the associated pin gets the output and configuration values specified in the GPIO module, see MODE field in CONFIG[n] register.
When conflicting tasks are triggered simultaneously (i.e. during the same clock cycle) in one channel, the priority of the tasks is as described in the following table.
| Priority | Task |
|---|---|
| 1 | OUT |
| 2 | CLR |
| 3 | SET |
When setting the CONFIG[n] registers, MODE=Disabled does not have the same effect as MODE=Task and POLARITY=None. In the latter case, a CLR or SET task occurring at the exact same time as OUT will end up with no change on the pin, based on the priorities described in the table above.
When a GPIOTE channel is configured to operate on a pin as a task, the initial value of that pin is configured in the OUTINIT field of CONFIG[n].
Port event
PORT is an event that can be generated from multiple input pins using the GPIO DETECT signal.
The event will be generated on the rising edge of the DETECT signal. See GPIO — General purpose input/output for more information about the DETECT signal.
There are two DETECT signals that come from the GPIO peripheral , the secure DETECT_SEC for pins marked as secure and the non-secure DETECT_NONSEC. Each signal has a corresponding port event, EVENTS_PORT[n].SECURE and EVENTS_PORT[n].NONSECURE. Secure events are not accessible from the non-secure side.
The GPIO DETECT signal will not wake the system up again if the system is put into System ON IDLE while the DETECT signal is high. Make sure to clear all DETECT sources before entering sleep. If the LATCH register is used as a source, a new rising edge will be generated on DETECT if any bit in LATCH is still high after clearing all or part of the register. This could occur if one of the PINx.DETECT signals is still high, for example. See Pin sense mechanism for more information.
Setting the system to System OFF while DETECT is high will cause a wakeup from System OFF reset.
This feature can be used to wake up the CPU from a WFI or WFE type sleep in System ON when all peripherals and the CPU are idle, meaning the lowest power consumption in System ON mode.
- Disable interrupts on the PORT event (through INTENCLR.PORT).
- Configure the sources (PIN_CNF[n].SENSE in GPIO).
- Clear any potential event that could have occurred during configuration (write '0' to EVENTS_PORT).
- Enable interrupts (through INTENSET.PORT).
Tasks and events pin configuration
Each GPIOTE channel is associated with one physical GPIO pin through the CONFIG.PSEL field.
When Event mode is selected in CONFIG.MODE, the pin specified by CONFIG.PSEL will be configured as an input, overriding the DIR setting in GPIO. Similarly, when Task mode is selected in CONFIG.MODE, the pin specified by CONFIG.PSEL will be configured as an output overriding the DIR setting and OUT value in GPIO. When Disabled is selected in CONFIG.MODE, the pin specified by CONFIG.PSEL will use its configuration from the PIN[n].CNF registers in GPIO.
For the range of possible CONFIG.PORT values in the product, see Instances. Writing other values may lead to undefined behavior.
Split security attribute
Individual GPIOTE channels and interrupts can have independent security attributes.
GPIOTE is implemented with split security, meaning it handles accesses from both secure and non-secure code. GPIOTE channels and interrupts can be defined as secure or non-secure.
For more information on GPIOTE security attributes, see GPIOTE.
Registers
Instances
| Instance | Domain | Base address | TrustZone | Split access | Description | ||
|---|---|---|---|---|---|---|---|
| Map | Att | DMA | |||||
GPIOTE20 : S | GLOBAL | 0x500DA000 | US | S | NA | Yes | 8 channels and 2 interrupts for GPIO port P1 GPIO tasks and events GPIOTE20 |
GPIOTE30 : S | GLOBAL | 0x5010C000 | US | S | NA | Yes | 4 channels and 2 interrupts for GPIO port P0 GPIO tasks and events GPIOTE30 |
Configuration
| Instance | Domain | Configuration |
|---|---|---|
GPIOTE20 : S | GLOBAL | Number of GPIOTE channels: 0..7 Number of GPIOTE port events: 0..0 Number of GPIOTE interrupts: 0..1 |
GPIOTE30 : S | GLOBAL | Number of GPIOTE channels: 0..3 Number of GPIOTE port events: 0..0 Number of GPIOTE interrupts: 0..1 |
Register overview
| Register | Offset | TZ | Description |
|---|---|---|---|
| TASKS_OUT[n] | 0x000 | Task for writing to pin specified in CONFIG[n].PSEL. Action on pin is configured in CONFIG[n].POLARITY. | |
| TASKS_SET[n] | 0x030 | Task for writing to pin specified in CONFIG[n].PSEL. Action on pin is to set it high. | |
| TASKS_CLR[n] | 0x060 | Task for writing to pin specified in CONFIG[n].PSEL. Action on pin is to set it low. | |
| SUBSCRIBE_OUT[n] | 0x080 | Subscribe configuration for task OUT[n] | |
| SUBSCRIBE_SET[n] | 0x0B0 | Subscribe configuration for task SET[n] | |
| SUBSCRIBE_CLR[n] | 0x0E0 | Subscribe configuration for task CLR[n] | |
| EVENTS_IN[n] | 0x100 | Event from pin specified in CONFIG[n].PSEL | |
| EVENTS_PORT[n].NONSECURE | 0x140 | NS | Non-secure port event |
| EVENTS_PORT[n].SECURE | 0x144 | S | Secure port event |
| PUBLISH_IN[n] | 0x180 | Publish configuration for event IN[n] | |
| PUBLISH_PORT[n].NONSECURE | 0x1C0 | NS | Publish configuration for event PORT[n].NONSECURE |
| PUBLISH_PORT[n].SECURE | 0x1C4 | S | Publish configuration for event PORT[n].SECURE |
| INTENSET0 | 0x304 | Enable interrupt | |
| INTENCLR0 | 0x308 | Disable interrupt | |
| INTENSET1 | 0x314 | Enable interrupt | |
| INTENCLR1 | 0x318 | Disable interrupt | |
| CONFIG[n] | 0x510 | Configuration for OUT[n], SET[n], and CLR[n] tasks and IN[n] event |
TASKS_OUT[n]
Address offset: 0x000 + (n × 0x4)
Task for writing to pin specified in CONFIG[n].PSEL. Action on pin is configured in CONFIG[n].POLARITY.
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | ||||||||||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | W | TASKS_OUT | Task for writing to pin specified in CONFIG[n].PSEL. Action on pin is configured in CONFIG[n].POLARITY. | ||||||||||||||||||||||||||||||||
Trigger | 1 | Trigger task | |||||||||||||||||||||||||||||||||
TASKS_SET[n]
Address offset: 0x030 + (n × 0x4)
Task for writing to pin specified in CONFIG[n].PSEL. Action on pin is to set it high.
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | ||||||||||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | W | TASKS_SET | Task for writing to pin specified in CONFIG[n].PSEL. Action on pin is to set it high. | ||||||||||||||||||||||||||||||||
Trigger | 1 | Trigger task | |||||||||||||||||||||||||||||||||
TASKS_CLR[n]
Address offset: 0x060 + (n × 0x4)
Task for writing to pin specified in CONFIG[n].PSEL. Action on pin is to set it low.
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | ||||||||||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | W | TASKS_CLR | Task for writing to pin specified in CONFIG[n].PSEL. Action on pin is to set it low. | ||||||||||||||||||||||||||||||||
Trigger | 1 | Trigger task | |||||||||||||||||||||||||||||||||
SUBSCRIBE_OUT[n]
Address offset: 0x080 + (n × 0x4)
Subscribe configuration for task OUT[n]
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | B | A | A | A | A | A | A | A | A | ||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | CHIDX | [0..255] | DPPI channel that task OUT[n] will subscribe to | |||||||||||||||||||||||||||||||
| B | RW | EN | |||||||||||||||||||||||||||||||||
Disabled | 0 | Disable subscription | |||||||||||||||||||||||||||||||||
Enabled | 1 | Enable subscription | |||||||||||||||||||||||||||||||||
SUBSCRIBE_SET[n]
Address offset: 0x0B0 + (n × 0x4)
Subscribe configuration for task SET[n]
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | B | A | A | A | A | A | A | A | A | ||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | CHIDX | [0..255] | DPPI channel that task SET[n] will subscribe to | |||||||||||||||||||||||||||||||
| B | RW | EN | |||||||||||||||||||||||||||||||||
Disabled | 0 | Disable subscription | |||||||||||||||||||||||||||||||||
Enabled | 1 | Enable subscription | |||||||||||||||||||||||||||||||||
SUBSCRIBE_CLR[n]
Address offset: 0x0E0 + (n × 0x4)
Subscribe configuration for task CLR[n]
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | B | A | A | A | A | A | A | A | A | ||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | CHIDX | [0..255] | DPPI channel that task CLR[n] will subscribe to | |||||||||||||||||||||||||||||||
| B | RW | EN | |||||||||||||||||||||||||||||||||
Disabled | 0 | Disable subscription | |||||||||||||||||||||||||||||||||
Enabled | 1 | Enable subscription | |||||||||||||||||||||||||||||||||
EVENTS_IN[n]
Address offset: 0x100 + (n × 0x4)
Event from pin specified in CONFIG[n].PSEL
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | ||||||||||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | EVENTS_IN | Event from pin specified in CONFIG[n].PSEL | ||||||||||||||||||||||||||||||||
NotGenerated | 0 | Event not generated | |||||||||||||||||||||||||||||||||
Generated | 1 | Event generated | |||||||||||||||||||||||||||||||||
EVENTS_PORT[n]
Peripheral events.
EVENTS_PORT[n].NONSECURE
Address offset: 0x140 + (n × 0x8)
Non-secure port event
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | |||||||||||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
| ID | R/W | TZ | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | NS | NONSECURE | Non-secure port event | ||||||||||||||||||||||||||||||||
NotGenerated | 0 | Event not generated | ||||||||||||||||||||||||||||||||||
Generated | 1 | Event generated | ||||||||||||||||||||||||||||||||||
EVENTS_PORT[n].SECURE
Address offset: 0x144 + (n × 0x8)
Secure port event
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | |||||||||||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
| ID | R/W | TZ | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | S | SECURE | Secure port event | ||||||||||||||||||||||||||||||||
NotGenerated | 0 | Event not generated | ||||||||||||||||||||||||||||||||||
Generated | 1 | Event generated | ||||||||||||||||||||||||||||||||||
PUBLISH_IN[n]
Address offset: 0x180 + (n × 0x4)
Publish configuration for event IN[n]
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | B | A | A | A | A | A | A | A | A | ||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | CHIDX | [0..255] | DPPI channel that event IN[n] will publish to | |||||||||||||||||||||||||||||||
| B | RW | EN | |||||||||||||||||||||||||||||||||
Disabled | 0 | Disable publishing | |||||||||||||||||||||||||||||||||
Enabled | 1 | Enable publishing | |||||||||||||||||||||||||||||||||
PUBLISH_PORT[n]
Publish configuration for events
PUBLISH_PORT[n].NONSECURE
Address offset: 0x1C0 + (n × 0x8)
Publish configuration for event PORT[n].NONSECURE
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | B | A | A | A | A | A | A | A | A | ||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | CHIDX | [0..255] | DPPI channel that event PORT[n].NONSECURE will publish to | |||||||||||||||||||||||||||||||
| B | RW | EN | |||||||||||||||||||||||||||||||||
Disabled | 0 | Disable publishing | |||||||||||||||||||||||||||||||||
Enabled | 1 | Enable publishing | |||||||||||||||||||||||||||||||||
PUBLISH_PORT[n].SECURE
Address offset: 0x1C4 + (n × 0x8)
Publish configuration for event PORT[n].SECURE
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | B | A | A | A | A | A | A | A | A | ||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | CHIDX | [0..255] | DPPI channel that event PORT[n].SECURE will publish to | |||||||||||||||||||||||||||||||
| B | RW | EN | |||||||||||||||||||||||||||||||||
Disabled | 0 | Disable publishing | |||||||||||||||||||||||||||||||||
Enabled | 1 | Enable publishing | |||||||||||||||||||||||||||||||||
INTENSET0
Address offset: 0x304
Enable interrupt
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | J | I | H | G | F | E | D | C | B | A | ||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
| ID | R/W | TZ | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A-H | RW | IN[i] (i=0..7) | Write '1' to enable interrupt for event IN[i] | |||||||||||||||||||||||||||||||||
Set | 1 | Enable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
| I | RW | NS | PORT0NONSECURE | Write '1' to enable interrupt for event PORT0NONSECURE | ||||||||||||||||||||||||||||||||
Set | 1 | Enable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
| J | RW | S | PORT0SECURE | Write '1' to enable interrupt for event PORT0SECURE | ||||||||||||||||||||||||||||||||
Set | 1 | Enable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
INTENCLR0
Address offset: 0x308
Disable interrupt
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | J | I | H | G | F | E | D | C | B | A | ||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
| ID | R/W | TZ | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A-H | RW | IN[i] (i=0..7) | Write '1' to disable interrupt for event IN[i] | |||||||||||||||||||||||||||||||||
Clear | 1 | Disable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
| I | RW | NS | PORT0NONSECURE | Write '1' to disable interrupt for event PORT0NONSECURE | ||||||||||||||||||||||||||||||||
Clear | 1 | Disable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
| J | RW | S | PORT0SECURE | Write '1' to disable interrupt for event PORT0SECURE | ||||||||||||||||||||||||||||||||
Clear | 1 | Disable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
INTENSET1
Address offset: 0x314
Enable interrupt
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | J | I | H | G | F | E | D | C | B | A | ||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
| ID | R/W | TZ | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A-H | RW | IN[i] (i=0..7) | Write '1' to enable interrupt for event IN[i] | |||||||||||||||||||||||||||||||||
Set | 1 | Enable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
| I | RW | NS | PORT0NONSECURE | Write '1' to enable interrupt for event PORT0NONSECURE | ||||||||||||||||||||||||||||||||
Set | 1 | Enable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
| J | RW | S | PORT0SECURE | Write '1' to enable interrupt for event PORT0SECURE | ||||||||||||||||||||||||||||||||
Set | 1 | Enable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
INTENCLR1
Address offset: 0x318
Disable interrupt
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | J | I | H | G | F | E | D | C | B | A | ||||||||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
| ID | R/W | TZ | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A-H | RW | IN[i] (i=0..7) | Write '1' to disable interrupt for event IN[i] | |||||||||||||||||||||||||||||||||
Clear | 1 | Disable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
| I | RW | NS | PORT0NONSECURE | Write '1' to disable interrupt for event PORT0NONSECURE | ||||||||||||||||||||||||||||||||
Clear | 1 | Disable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
| J | RW | S | PORT0SECURE | Write '1' to disable interrupt for event PORT0SECURE | ||||||||||||||||||||||||||||||||
Clear | 1 | Disable | ||||||||||||||||||||||||||||||||||
Disabled | 0 | Read: Disabled | ||||||||||||||||||||||||||||||||||
Enabled | 1 | Read: Enabled | ||||||||||||||||||||||||||||||||||
CONFIG[n]
Address offset: 0x510 + (n × 0x4)
Configuration for OUT[n], SET[n], and CLR[n] tasks and IN[n] event
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | E | D | D | C | C | C | C | B | B | B | B | B | A | A | |||||||||||||||||||||
| Reset 0x00000000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | MODE | Mode | ||||||||||||||||||||||||||||||||
Disabled | 0 | Disabled. Pin specified by PSEL will not be acquired by the GPIOTE module. | |||||||||||||||||||||||||||||||||
Event | 1 | Event mode The pin specified by PSEL will be configured as an input and the IN[n] event will be generated if operation specified in POLARITY occurs on the pin. | |||||||||||||||||||||||||||||||||
Task | 3 | Task mode The GPIO specified by PSEL will be configured as an output and triggering the SET[n], CLR[n] or OUT[n] task will perform the operation specified by POLARITY on the pin. When enabled as a task the GPIOTE module will acquire the pin and the pin can no longer be written as a regular output pin from the GPIO module. | |||||||||||||||||||||||||||||||||
| B | RW | PSEL | [0..31] | GPIO number associated with SET[n], CLR[n], and OUT[n] tasks and IN[n] event | |||||||||||||||||||||||||||||||
| C | RW | PORT | [0..15] | Port number | |||||||||||||||||||||||||||||||
| D | RW | POLARITY | When In task mode: Operation to be performed on output when OUT[n] task is triggered. When In event mode: Operation on input that shall trigger IN[n] event. | ||||||||||||||||||||||||||||||||
None | 0 | Task mode: No effect on pin from OUT[n] task. Event mode: no IN[n] event generated on pin activity. | |||||||||||||||||||||||||||||||||
LoToHi | 1 | Task mode: Set pin from OUT[n] task. Event mode: Generate IN[n] event when rising edge on pin. | |||||||||||||||||||||||||||||||||
HiToLo | 2 | Task mode: Clear pin from OUT[n] task. Event mode: Generate IN[n] event when falling edge on pin. | |||||||||||||||||||||||||||||||||
Toggle | 3 | Task mode: Toggle pin from OUT[n]. Event mode: Generate IN[n] when any change on pin. | |||||||||||||||||||||||||||||||||
| E | RW | OUTINIT | When in task mode: Initial value of the output when the GPIOTE channel is configured. When in event mode: No effect. | ||||||||||||||||||||||||||||||||
Low | 0 | Task mode: Initial value of pin before task triggering is low | |||||||||||||||||||||||||||||||||
High | 1 | Task mode: Initial value of pin before task triggering is high | |||||||||||||||||||||||||||||||||