SPIS — Serial peripheral interface target with EasyDMA

The SPI target peripheral (SPIS) with EasyDMA provides a full duplex, 4-wire synchronous serial communication interface.

The main features of SPIS are the following:

Figure 1. SPIS
SPI slave

SPI modes

SPIS supports SPI modes [0..3]. Modes CPOL and CPHA are set in the CONFIG register.

Table 1. SPI modes
ModeClock polarity (CPOL)Clock phase (CPHA)
SPI_MODE00 (Active High)0 (Sample on Leading)
SPI_MODE10 (Active High)1 (Sample on Trailing)
SPI_MODE21 (Active Low)0 (Sample on Leading)
SPI_MODE31 (Active Low)1 (Sample on Trailing)

Shared resources

The SPIS peripheral shares registers and other resources with peripherals that have the same ID as SPIS. Before SPIS can be configured and used, all peripherals that have the same ID as SPIS must be disabled.

Disabling a peripheral with the same ID as SPIS will not reset any shared SPIS registers. Configure all SPIS registers to ensure they operate correctly.

See the Instantiation table in Instantiation for details on peripherals and their IDs.

EasyDMA

SPIS implements EasyDMA for accessing RAM without CPU involvement.

SPIS implements the EasyDMA channels found in the following table.
Table 2. SPIS EasyDMA Channels
ChannelTypeRegister Cluster
TXDREADERTXD
RXDWRITERRXD

For detailed information regarding the use of EasyDMA, see EasyDMA.

If RXD.MAXCNT is greater than TXD.MAXCNT, the remaining transmitted bytes will contain the value defined in the ORC register.

The END event indicates that EasyDMA is finished accessing the RAM buffer.

SPIS operation

SPIS uses two memory pointers. RXD.PTR points to the RXD buffer (receive buffer) and TXD.PTR points to the TXD buffer (transmit buffer). Because these buffers are located in RAM, which can be accessed by both SPIS and the CPU, a hardware based semaphore mechanism is implemented to enable safe sharing.

The CPU must acquire the SPI semaphore before it can safely update the RXD.PTR and TXD.PTR pointers. The ACQUIRE task must be triggered for the CPU to receive the ACQUIRED event and have access to the semaphore. When the CPU has updated the RXD.PTR and TXD.PTR pointers, the CPU must release the semaphore before SPIS can acquire it.

The CPU releases the semaphore by triggering the RELEASE task, as illustrated in the following figure. Triggering the RELEASE task when the CPU does not have access to the semaphore will have no effect. See Semaphore operation for more information.

Figure 2. SPI transaction when shortcut between END and ACQUIRE is enabled
SPI transaction when shortcut between END and ACQUIRE is enabled

If the CPU is not able to reconfigure TXD.PTR and RXD.PTR between granted transactions, the same TX data will be clocked out and the RX buffers will be overwritten. To prevent this from happening, the END_ACQUIRE shortcut can be used. With this shortcut enabled, the semaphore will be handed over to the CPU automatically after the granted transaction has completed. This enables the CPU to update the TXPTR and RXPTR between every granted transaction.

The ENDRX event is generated when the RX buffer has been filled.

The RXD.MAXCNT register specifies the maximum number of bytes SPIS can receive in one granted transaction. If SPIS receives more than RXD.MAXCNT number of bytes, an OVERFLOW will be indicated in the STATUS register and the incoming bytes will be discarded.

The TXD.MAXCNT parameter specifies the maximum number of bytes SPIS can transmit in one granted transaction. If SPIS is forced to transmit more than TXD.MAXCNT number of bytes, an OVERREAD will be indicated in the STATUS register and the ORC character will be clocked out.

The RXD.AMOUNT and TXD.AMOUNT registers are updated when a granted transaction is complete. The TXD.AMOUNT register indicates how many bytes were read from the TX buffer in the last transaction. ORC (over-read) characters are not included in this number. Similarly, the RXD.AMOUNT register indicates how many bytes were written into the RX buffer in the last transaction.

Semaphore operation

The semaphore is a mechanism implemented inside the SPIS peripheral that prevents SPIS and CPU from accessing data buffers simultaneously.

By default, the semaphore is assigned to the CPU after the SPIS peripheral is enabled. An ACQUIRED event will not be generated for this initial semaphore handover. If the ACQUIRE task is triggered while the semaphore is assigned to the CPU, an ACQUIRED event will be generated immediately. The following figure illustrates the transitions between states in the semaphore based on the relevant tasks and events.

Figure 3. SPI semaphore FSM
Note: The semaphore mechanism does not prevent the CPU from performing read or write access to the RXD.PTR register, TXD.PTR registers, or RAM that these pointers are pointing to. The semaphore is only telling when these can be updated by the CPU so that safe sharing is achieved.

SPIS will try to acquire the semaphore when the STARTED event is detected. If SPIS does not obtain the semaphore, the transaction will be ignored and the semaphore is retained by the CPU. All incoming data on SDI will be discarded and the DEF (default) character will be clocked out on the SDO line throughout the transaction. This is also true if the semaphore is released by the CPU during the transaction. If a race condition occurs where the CPU and SPIS try to acquire the semaphore at the same time, as illustrated in lifeline item 2 in figure SPI transaction when shortcut between END and ACQUIRE is enabled, the CPU is given the semaphore.

If SPIS acquires the semaphore, the transaction will be granted. The incoming data on SDI will be stored in the RXD buffer and the data in the TXD buffer will be clocked out on SDO.

When a transaction is complete and CSN goes HIGH, SPIS will automatically release the semaphore and generate the END event.

SPIS can be granted multiple transactions in a row as long as the semaphore is available.

If the CPU tries to acquire the semaphore while it is assigned to SPIS, an immediate handover will not be granted. After the granted transaction is complete, SPIS releases the semaphore to the CPU. If the END_ACQUIRE shortcut is enabled and the CPU has triggered the ACQUIRE task during a granted transaction, only one ACQUIRE request will be served following the END event.

Pin configuration

The CSN, SCK, SDI, and SDO signals associated with SPIS are mapped to physical pins according to the configuration specified in the PSEL.CSN, PSEL.SCK, PSEL.MOSI, and PSEL.MISO registers, respectively. If the CONNECT field is set to Disconnected, the associated SPIS signal will not be connected to any physical pins.

These registers and their configurations are only used when SPIS is enabled, and retained as long as the device is in System ON mode. See POWER — Power control for more information about power modes. When the peripheral is disabled, the pins behave as regular GPIOs, and use the configuration in their respective OUT bit field and PIN_CNF[n] register. Only configure PSEL.CSN, PSEL.SCK, PSEL.MOSI, and PSEL.MISO when SPIS is disabled.

Before enabling SPIS, the pins used by SPIS must be configured in the GPIO peripheral as described in GPIO configuration before enabling peripheral. This ensures that the pins are driven correctly if SPIS becomes temporarily disabled, or if the device enters System OFF mode. This configuration must be retained in the GPIO for the selected pins to be recognized by an external SPI controller.

The SDO line is set HIGH as long as SPIS is not selected with CSN.

Only one peripheral can be assigned to drive a particular GPIO pin at a time. Failing to do so may result in unpredictable behavior.

Table 3. GPIO configuration before enabling peripheral
SPI signalSPI pinDirectionOutput valueComment
CSNAs specified in PSEL.CSNInputNot applicable
SCKAs specified in PSEL.SCKInputNot applicable
SDIAs specified in PSEL.MOSIInputNot applicable
SDOAs specified in PSEL.MISOInputNot applicableEmulates that SPIS is not selected.

Registers

Instances

InstanceDomainBase addressDescription
SPIS20GLOBAL0x400C6000

SPI peripheral SPIS20

SPIS21GLOBAL0x400C7000

SPI peripheral SPIS21

SPIS22GLOBAL0x400C8000

SPI peripheral SPIS22

Configuration

InstanceDomainConfiguration
SPIS20GLOBAL

Use GPIO port P1

SPIS21GLOBAL

Use GPIO port P1

SPIS22GLOBAL

Use GPIO port P1

Register overview

RegisterOffsetDescription
TASKS_ACQUIRE0x014

Acquire SPI semaphore

TASKS_RELEASE0x018

Release SPI semaphore, enabling the SPI slave to acquire it

TASKS_DMA.RX.ENABLEMATCH[n]0x030

Enables the MATCH[n] event by setting the ENABLE[n] bit in the CONFIG register.

TASKS_DMA.RX.DISABLEMATCH[n]0x040

Disables the MATCH[n] event by clearing the ENABLE[n] bit in the CONFIG register.

SUBSCRIBE_ACQUIRE0x094

Subscribe configuration for task ACQUIRE

SUBSCRIBE_RELEASE0x098

Subscribe configuration for task RELEASE

SUBSCRIBE_DMA.RX.ENABLEMATCH[n]0x0B0

Subscribe configuration for task ENABLEMATCH[n]

SUBSCRIBE_DMA.RX.DISABLEMATCH[n]0x0C0

Subscribe configuration for task DISABLEMATCH[n]

EVENTS_END0x104

Granted transaction completed

EVENTS_ACQUIRED0x118

Semaphore acquired

EVENTS_DMA.RX.END0x14C

Generated after all MAXCNT bytes have been transferred

EVENTS_DMA.RX.READY0x150

Generated when EasyDMA has buffered the .PTR and .MAXCNT registers for the channel, allowing them to be written to prepare for the next sequence.

EVENTS_DMA.RX.BUSERROR0x154

An error occured during the bus transfer.

EVENTS_DMA.RX.MATCH[n]0x158

Pattern match is detected on the DMA data bus.

EVENTS_DMA.TX.END0x168

Generated after all MAXCNT bytes have been transferred

EVENTS_DMA.TX.READY0x16C

Generated when EasyDMA has buffered the .PTR and .MAXCNT registers for the channel, allowing them to be written to prepare for the next sequence.

EVENTS_DMA.TX.BUSERROR0x170

An error occured during the bus transfer.

PUBLISH_END0x184

Publish configuration for event END

PUBLISH_ACQUIRED0x198

Publish configuration for event ACQUIRED

PUBLISH_DMA.RX.END0x1CC

Publish configuration for event END

PUBLISH_DMA.RX.READY0x1D0

Publish configuration for event READY

PUBLISH_DMA.RX.BUSERROR0x1D4

Publish configuration for event BUSERROR

PUBLISH_DMA.RX.MATCH[n]0x1D8

Publish configuration for event MATCH[n]

PUBLISH_DMA.TX.END0x1E8

Publish configuration for event END

PUBLISH_DMA.TX.READY0x1EC

Publish configuration for event READY

PUBLISH_DMA.TX.BUSERROR0x1F0

Publish configuration for event BUSERROR

SHORTS0x200

Shortcuts between local events and tasks

INTENSET0x304

Enable interrupt

INTENCLR0x308

Disable interrupt

SEMSTAT0x400

Semaphore status register

STATUS0x440

Status from last transaction

ENABLE0x500

Enable SPI slave

CONFIG0x554

Configuration register

DEF0x55C

Default character. Character clocked out in case of an ignored transaction.

ORC0x5C0

Over-read character

PSEL.SCK0x600

Pin select for SCK

PSEL.MISO0x604

Pin select for SDO signal

PSEL.MOSI0x608

Pin select for SDI signal

PSEL.CSN0x610

Pin select for CSN signal

DMA.RX.PTR0x704

RAM buffer start address

DMA.RX.MAXCNT0x708

Maximum number of bytes in channel buffer

DMA.RX.AMOUNT0x70C

Number of bytes transferred in the last transaction, updated after the END event.

Also updated after each MATCH event.

DMA.RX.TERMINATEONBUSERROR0x71C

Terminate the transaction if a BUSERROR event is detected.

DMA.RX.BUSERRORADDRESS0x720

Address of transaction that generated the last BUSERROR event.

DMA.RX.MATCH.CONFIG0x724

Configure individual match events

DMA.RX.MATCH.CANDIDATE[n]0x728

The data to look for - any match will trigger the MATCH[n] event, if enabled.

DMA.TX.PTR0x73C

RAM buffer start address

DMA.TX.MAXCNT0x740

Maximum number of bytes in channel buffer

DMA.TX.AMOUNT0x744

Number of bytes transferred in the last transaction, updated after the END event.

Also updated after each MATCH event.

DMA.TX.TERMINATEONBUSERROR0x754

Terminate the transaction if a BUSERROR event is detected.

DMA.TX.BUSERRORADDRESS0x758

Address of transaction that generated the last BUSERROR event.

TASKS_ACQUIRE

Address offset: 0x014

Acquire SPI semaphore

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

W

TASKS_ACQUIRE

Acquire SPI semaphore

Trigger

1

Trigger task

TASKS_RELEASE

Address offset: 0x018

Release SPI semaphore, enabling the SPI slave to acquire it

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

W

TASKS_RELEASE

Release SPI semaphore, enabling the SPI slave to acquire it

Trigger

1

Trigger task

TASKS_DMA

Peripheral tasks.

TASKS_DMA.RX

Peripheral tasks.

TASKS_DMA.RX.ENABLEMATCH[n]

Address offset: 0x030 + (n × 0x4)

Enables the MATCH[n] event by setting the ENABLE[n] bit in the CONFIG register.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

W

ENABLEMATCH

Enables the MATCH[n] event by setting the ENABLE[n] bit in the CONFIG register.

Trigger

1

Trigger task

TASKS_DMA.RX.DISABLEMATCH[n]

Address offset: 0x040 + (n × 0x4)

Disables the MATCH[n] event by clearing the ENABLE[n] bit in the CONFIG register.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

W

DISABLEMATCH

Disables the MATCH[n] event by clearing the ENABLE[n] bit in the CONFIG register.

Trigger

1

Trigger task

SUBSCRIBE_ACQUIRE

Address offset: 0x094

Subscribe configuration for task ACQUIRE

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that task ACQUIRE will subscribe to

B

RW

EN

Disabled

0

Disable subscription

Enabled

1

Enable subscription

SUBSCRIBE_RELEASE

Address offset: 0x098

Subscribe configuration for task RELEASE

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that task RELEASE will subscribe to

B

RW

EN

Disabled

0

Disable subscription

Enabled

1

Enable subscription

SUBSCRIBE_DMA

Subscribe configuration for tasks

SUBSCRIBE_DMA.RX

Subscribe configuration for tasks

SUBSCRIBE_DMA.RX.ENABLEMATCH[n]

Address offset: 0x0B0 + (n × 0x4)

Subscribe configuration for task ENABLEMATCH[n]

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that task ENABLEMATCH[n] will subscribe to

B

RW

EN

Disabled

0

Disable subscription

Enabled

1

Enable subscription

SUBSCRIBE_DMA.RX.DISABLEMATCH[n]

Address offset: 0x0C0 + (n × 0x4)

Subscribe configuration for task DISABLEMATCH[n]

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that task DISABLEMATCH[n] will subscribe to

B

RW

EN

Disabled

0

Disable subscription

Enabled

1

Enable subscription

EVENTS_END

Address offset: 0x104

Granted transaction completed

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

EVENTS_END

Granted transaction completed

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_ACQUIRED

Address offset: 0x118

Semaphore acquired

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

EVENTS_ACQUIRED

Semaphore acquired

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_DMA

Peripheral events.

EVENTS_DMA.RX

Peripheral events.

EVENTS_DMA.RX.END

Address offset: 0x14C

Generated after all MAXCNT bytes have been transferred

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

END

Generated after all MAXCNT bytes have been transferred

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_DMA.RX.READY

Address offset: 0x150

Generated when EasyDMA has buffered the .PTR and .MAXCNT registers for the channel, allowing them to be written to prepare for the next sequence.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

READY

Generated when EasyDMA has buffered the .PTR and .MAXCNT registers for the channel, allowing them to be written to prepare for the next sequence.

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_DMA.RX.BUSERROR

Address offset: 0x154

An error occured during the bus transfer.

When this event is generated, the address which caused the error can be read from the BUSERRORADDRESS register.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

BUSERROR

An error occured during the bus transfer.

When this event is generated, the address which caused the error can be read from the BUSERRORADDRESS register.

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_DMA.RX.MATCH[n]

Address offset: 0x158 + (n × 0x4)

Pattern match is detected on the DMA data bus.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

MATCH

Pattern match is detected on the DMA data bus.

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_DMA.TX

Peripheral events.

EVENTS_DMA.TX.END

Address offset: 0x168

Generated after all MAXCNT bytes have been transferred

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

END

Generated after all MAXCNT bytes have been transferred

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_DMA.TX.READY

Address offset: 0x16C

Generated when EasyDMA has buffered the .PTR and .MAXCNT registers for the channel, allowing them to be written to prepare for the next sequence.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

READY

Generated when EasyDMA has buffered the .PTR and .MAXCNT registers for the channel, allowing them to be written to prepare for the next sequence.

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_DMA.TX.BUSERROR

Address offset: 0x170

An error occured during the bus transfer.

When this event is generated, the address which caused the error can be read from the BUSERRORADDRESS register.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

BUSERROR

An error occured during the bus transfer.

When this event is generated, the address which caused the error can be read from the BUSERRORADDRESS register.

NotGenerated

0

Event not generated

Generated

1

Event generated

PUBLISH_END

Address offset: 0x184

Publish configuration for event END

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event END will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_ACQUIRED

Address offset: 0x198

Publish configuration for event ACQUIRED

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event ACQUIRED will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_DMA

Publish configuration for events

PUBLISH_DMA.RX

Publish configuration for events

PUBLISH_DMA.RX.END

Address offset: 0x1CC

Publish configuration for event END

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event END will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_DMA.RX.READY

Address offset: 0x1D0

Publish configuration for event READY

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event READY will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_DMA.RX.BUSERROR

Address offset: 0x1D4

Publish configuration for event BUSERROR

When this event is generated, the address which caused the error can be read from the BUSERRORADDRESS register.

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event BUSERROR will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_DMA.RX.MATCH[n]

Address offset: 0x1D8 + (n × 0x4)

Publish configuration for event MATCH[n]

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event MATCH[n] will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_DMA.TX

Publish configuration for events

PUBLISH_DMA.TX.END

Address offset: 0x1E8

Publish configuration for event END

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event END will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_DMA.TX.READY

Address offset: 0x1EC

Publish configuration for event READY

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event READY will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_DMA.TX.BUSERROR

Address offset: 0x1F0

Publish configuration for event BUSERROR

When this event is generated, the address which caused the error can be read from the BUSERRORADDRESS register.

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event BUSERROR will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

SHORTS

Address offset: 0x200

Shortcuts between local events and tasks

Bit number313029282726252423222120191817161514131211109876543210
IDIHGFEDCBA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

END_ACQUIRE

Shortcut between event END and task ACQUIRE

Disabled

0

Disable shortcut

Enabled

1

Enable shortcut

B-E

RW

DMA_RX_MATCH[i]_DMA_RX_ENABLEMATCH[(i+1)%4] (i=0..3)

Shortcut between event DMA.RX.MATCH[n] and task DMA.RX.ENABLEMATCH[(i+1)%4]

Allows daisy-chaining match events.

Disabled

0

Disable shortcut

Enabled

1

Enable shortcut

F-I

RW

DMA_RX_MATCH[i]_DMA_RX_DISABLEMATCH[i] (i=0..3)

Shortcut between event DMA.RX.MATCH[n] and task DMA.RX.DISABLEMATCH[n]

Disabled

0

Disable shortcut

Enabled

1

Enable shortcut

INTENSET

Address offset: 0x304

Enable interrupt

Bit number313029282726252423222120191817161514131211109876543210
IDLKJIHGFEDCBA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW
W1S

END

Write '1' to enable interrupt for event END

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

B

RW
W1S

ACQUIRED

Write '1' to enable interrupt for event ACQUIRED

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

C

RW
W1S

DMARXEND

Write '1' to enable interrupt for event DMARXEND

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

D

RW
W1S

DMARXREADY

Write '1' to enable interrupt for event DMARXREADY

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

E

RW
W1S

DMARXBUSERROR

Write '1' to enable interrupt for event DMARXBUSERROR

When this event is generated, the address which caused the error can be read from the BUSERRORADDRESS register.

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

F-I

RW
W1S

DMARXMATCH[i] (i=0..3)

Write '1' to enable interrupt for event DMARXMATCH[i]

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

J

RW
W1S

DMATXEND

Write '1' to enable interrupt for event DMATXEND

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

K

RW
W1S

DMATXREADY

Write '1' to enable interrupt for event DMATXREADY

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

L

RW
W1S

DMATXBUSERROR

Write '1' to enable interrupt for event DMATXBUSERROR

When this event is generated, the address which caused the error can be read from the BUSERRORADDRESS register.

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

INTENCLR

Address offset: 0x308

Disable interrupt

Bit number313029282726252423222120191817161514131211109876543210
IDLKJIHGFEDCBA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW
W1C

END

Write '1' to disable interrupt for event END

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

B

RW
W1C

ACQUIRED

Write '1' to disable interrupt for event ACQUIRED

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

C

RW
W1C

DMARXEND

Write '1' to disable interrupt for event DMARXEND

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

D

RW
W1C

DMARXREADY

Write '1' to disable interrupt for event DMARXREADY

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

E

RW
W1C

DMARXBUSERROR

Write '1' to disable interrupt for event DMARXBUSERROR

When this event is generated, the address which caused the error can be read from the BUSERRORADDRESS register.

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

F-I

RW
W1C

DMARXMATCH[i] (i=0..3)

Write '1' to disable interrupt for event DMARXMATCH[i]

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

J

RW
W1C

DMATXEND

Write '1' to disable interrupt for event DMATXEND

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

K

RW
W1C

DMATXREADY

Write '1' to disable interrupt for event DMATXREADY

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

L

RW
W1C

DMATXBUSERROR

Write '1' to disable interrupt for event DMATXBUSERROR

When this event is generated, the address which caused the error can be read from the BUSERRORADDRESS register.

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

SEMSTAT

Address offset: 0x400

Semaphore status register

Bit number313029282726252423222120191817161514131211109876543210
IDAA
Reset 0x0000000100000000000000000000000000000001
IDR/WFieldValue IDValueDescription
A

R

SEMSTAT

Semaphore status

Free

0

Semaphore is free

CPU

1

Semaphore is assigned to CPU

SPIS

2

Semaphore is assigned to SPI slave

CPUPending

3

Semaphore is assigned to SPI but a handover to the CPU is pending

STATUS

Address offset: 0x440

Status from last transaction

Individual bits are cleared by writing a '1' to the bits that shall be cleared.

Bit number313029282726252423222120191817161514131211109876543210
IDBA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

OVERREAD

TX buffer over-read detected, and prevented

NotPresent

0

Read: error not present

Present

1

Read: error present

Clear

1

Write: clear error on writing '1'

B

RW

OVERFLOW

RX buffer overflow detected, and prevented

NotPresent

0

Read: error not present

Present

1

Read: error present

Clear

1

Write: clear error on writing '1'

ENABLE

Address offset: 0x500

Enable SPI slave

Bit number313029282726252423222120191817161514131211109876543210
IDAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

ENABLE

Enable or disable SPI slave

Disabled

0

Disable SPI slave

Enabled

2

Enable SPI slave

CONFIG

Address offset: 0x554

Configuration register

Bit number313029282726252423222120191817161514131211109876543210
IDCBA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

ORDER

Bit order

MsbFirst

0

Most significant bit shifted out first

LsbFirst

1

Least significant bit shifted out first

B

RW

CPHA

Serial clock (SCK) phase

Leading

0

Sample on leading edge of clock, shift serial data on trailing edge

Trailing

1

Sample on trailing edge of clock, shift serial data on leading edge

C

RW

CPOL

Serial clock (SCK) polarity

ActiveHigh

0

Active high

ActiveLow

1

Active low

DEF

Address offset: 0x55C

Default character. Character clocked out in case of an ignored transaction.

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

DEF

Default character. Character clocked out in case of an ignored transaction.

ORC

Address offset: 0x5C0

Over-read character

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

ORC

Over-read character. Character clocked out after an over-read of the transmit buffer.

PSEL.SCK

Address offset: 0x600

Pin select for SCK

Bit number313029282726252423222120191817161514131211109876543210
IDCBBBAAAAA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
A

RW

PIN

[0..31]

Pin number

B

RW

PORT

[0..7]

Port number

C

RW

CONNECT

Connection

Disconnected

1

Disconnect

Connected

0

Connect

PSEL.MISO

Address offset: 0x604

Pin select for SDO signal

Bit number313029282726252423222120191817161514131211109876543210
IDCBBBAAAAA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
A

RW

PIN

[0..31]

Pin number

B

RW

PORT

[0..7]

Port number

C

RW

CONNECT

Connection

Disconnected

1

Disconnect

Connected

0

Connect

PSEL.MOSI

Address offset: 0x608

Pin select for SDI signal

Bit number313029282726252423222120191817161514131211109876543210
IDCBBBAAAAA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
A

RW

PIN

[0..31]

Pin number

B

RW

PORT

[0..7]

Port number

C

RW

CONNECT

Connection

Disconnected

1

Disconnect

Connected

0

Connect

PSEL.CSN

Address offset: 0x610

Pin select for CSN signal

Bit number313029282726252423222120191817161514131211109876543210
IDCBBBAAAAA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
A

RW

PIN

[0..31]

Pin number

B

RW

PORT

[0..7]

Port number

C

RW

CONNECT

Connection

Disconnected

1

Disconnect

Connected

0

Connect

DMA.RX.PTR

Address offset: 0x704

RAM buffer start address

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Reset 0x2000000000100000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

PTR

RAM buffer start address for this EasyDMA channel. This address is a word aligned Data RAM address.

Note: See the memory chapter for details about which memories are available for EasyDMA.

DMA.RX.MAXCNT

Address offset: 0x708

Maximum number of bytes in channel buffer

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

MAXCNT

[1..0xffff]

Maximum number of bytes in channel buffer

DMA.RX.AMOUNT

Address offset: 0x70C

Number of bytes transferred in the last transaction, updated after the END event.

Also updated after each MATCH event.

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

R

AMOUNT

[1..0xffff]

Number of bytes transferred in the last transaction. In case of NACK error, includes the NACK'ed byte.

DMA.RX.TERMINATEONBUSERROR

Address offset: 0x71C

Terminate the transaction if a BUSERROR event is detected.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

ENABLE

Disabled

0

Disable

Enabled

1

Enable

DMA.RX.BUSERRORADDRESS

Address offset: 0x720

Address of transaction that generated the last BUSERROR event.

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

R

ADDRESS

DMA.RX.MATCH

Registers to control the behavior of the pattern matcher engine

DMA.RX.MATCH.CONFIG

Address offset: 0x724

Configure individual match events

Bit number313029282726252423222120191817161514131211109876543210
IDHGFEDCBA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A-D

RW

ENABLE[i] (i=0..3)

Enable match filter i

Disabled

0

Match filter disabled

Enabled

1

Match filter enabled

E-H

RW

ONESHOT[i] (i=0..3)

Configure match filter i as one-shot or sticky

One-shot match filters can be used together with shortcuts to check for continuous data sequences by disabling the filter if the next data is not a match.
Note: The presence of these shorts depends on the configuration of the peripheral integrating this EasyDMA.

Continuous

0

Match filter stays enabled until disabled by task

Oneshot

1

Match filter stays enabled until next data word is received

DMA.RX.MATCH.CANDIDATE[n]

Address offset: 0x728 + (n × 0x4)

The data to look for - any match will trigger the MATCH[n] event, if enabled.

Note: This register can be updated while a transfer is in progress, but the new value will not take effect until a match has been found or the transfer is done. That makes it possible to write a new set of match words which will be searched for immediately after the event triggers.
Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

DATA

Data to look for

DMA.TX.PTR

Address offset: 0x73C

RAM buffer start address

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Reset 0x2000000000100000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

PTR

RAM buffer start address for this EasyDMA channel. This address is a word aligned Data RAM address.

Note: See the memory chapter for details about which memories are available for EasyDMA.

DMA.TX.MAXCNT

Address offset: 0x740

Maximum number of bytes in channel buffer

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

MAXCNT

[1..0xffff]

Maximum number of bytes in channel buffer

DMA.TX.AMOUNT

Address offset: 0x744

Number of bytes transferred in the last transaction, updated after the END event.

Also updated after each MATCH event.

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

R

AMOUNT

[1..0xffff]

Number of bytes transferred in the last transaction. In case of NACK error, includes the NACK'ed byte.

DMA.TX.TERMINATEONBUSERROR

Address offset: 0x754

Terminate the transaction if a BUSERROR event is detected.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

ENABLE

Disabled

0

Disable

Enabled

1

Enable

DMA.TX.BUSERRORADDRESS

Address offset: 0x758

Address of transaction that generated the last BUSERROR event.

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

R

ADDRESS