SAADC — Successive approximation analog-to-digital converter

The SAADC peripheral is a differential successive approximation register (SAR) analog-to-digital converter.

The main features of SAADC are the following:

Overview

The ADC supports up to four external analog inputs. It can be operated in One-shot mode with sampling under software control, or Continuous mode with a programmable sampling rate.

The analog inputs can be configured as four single-ended inputs, two differential inputs or a combination of these. Each channel can be configured to select:
  • GPIO pins with analog input function, see Pin assignments, also marked with name AIN. Input range is 0 to VDD.
  • VDD (divided down to a valid range using the programmable gain stage)
  • DVDD
Channels can be sampled individually in one-shot or continuous sampling modes, or, using scan mode, multiple channels can be sampled in sequence. To improve noise performance, channels can be oversampled.
Figure 1. Simplified ADC block diagram

Simplified ADC block diagram

Internally, the ADC is always a differential analog-to-digital converter, but by default it is configured with single-ended input in the MODE field of the CH[n].CONFIG register. In single-ended mode, the negative input will be shorted to ground internally.

The assumption in single-ended mode is that the internal ground of the ADC is the same as the external ground that the measured voltage is referred to. The ADC is thus sensitive to ground bounce on the PCB in single-ended mode. If this is a concern we recommend using differential measurement.

Digital output

The output result of the ADC depends on the settings in the CH[n].CONFIG and RESOLUTION registers as follows:

RESULT = [V(P) – V(N) ] * 1/REFERENCE * 2(RESOLUTION - m)

where

V(P)
is the voltage at input P
V(N)
is the voltage at input N
m
is the mode setting. Use m=0 if CONFIG.MODE=SE, or m=1 if CONFIG.MODE=Diff
REFERENCE
is the selected reference voltage

The result generated by the ADC will deviate from the expected due to DC errors like offset, gain, differential non-linearity (DNL), and integral non-linearity (INL). See Electrical specification for details on these parameters. The result can also vary due to AC errors like non-linearities in the GAIN block, settling errors due to high source impedance and sampling jitter. For battery measurement, the DC errors are most noticeable.

The ADC has a temperature dependent offset. If the ADC is to operate over a large temperature range, we recommend running CALIBRATEOFFSET at regular intervals. The CALIBRATEDONE event will be generated when the calibration has been completed. Note that the DONE and RESULTDONE events will also be generated.

Analog inputs and channels

Up to four analog input channels, CH[n](n=0..3), can be configured.

See Shared resources for shared input with comparators.

Any one of the available channels can be enabled for the ADC to operate in one-shot mode. If more than one CH[n] is configured, the ADC enters scan mode.

An analog input is selected as a positive converter input if CH[n].PSELP is set, setting CH[n].PSELP also enables the particular channel.

An analog input is selected as a negative converter input if CH[n].PSELN is set. The CH[n].PSELN register will have no effect unless differential mode is enabled and CH[n].PSELP is set, see MODE field in CH[n].CONFIG register.

Important: It is not recommended to use the same analog input pin for multiple analog peripheral functions. See also Shared resources.

Operation modes

The ADC input configuration supports several modes of sampling.

  • One-shot, one channel
  • One-shot, scan (one sample for each channel)
  • Continuous, one channel
  • Continuous, scan
Note: Scan mode and oversampling should not be combined without burst.
  1. The ADC must be enabled and started via the ENABLE register and START task.
  2. At least one channel must be enabled (via the CH[n].CONFIG registers).
  3. Now the ADC can be sampled, by triggering the SAMPLE task.

The ADC indicates a single ongoing conversion via the register STATUS. During scan, oversampling, or continuous modes, multiple conversions take place in the ADC. As a result, the value in STATUS register toggles at the end of each single conversion.

One-shot mode

One-shot operation is configured by enabling only one of the available channels defined by CH[n].PSELP, CH[n].PSELN, and CH[n].CONFIG registers.

Upon a SAMPLE task, the ADC powers up and starts to sample the input voltage. The CH[n].CONFIG.TACQ controls the acquisition time.

The time it takes to perform the first sample is tPWRUP + tACQ + tCONV, where tACQ is the acquisition time, tCONV is the conversion time, and tPWRUP is the time it takes to power up the ADC.

A DONE event signals that one sample has been taken.

In this mode, the RESULTDONE event has the same meaning as DONE when no oversampling takes place. Note that both events may occur before the actual value has been transferred into RAM by EasyDMA. For more information, see EasyDMA.

Continuous mode

Continuous sampling can be achieved by using the internal timer in the ADC, or triggering the SAMPLE task from one of the general purpose timers through the PPI system.

Care shall be taken to ensure that the sample rate fulfils the following criteria, depending on how many channels are active:
tSAMPLE > tACQ + tCONV

The SAMPLERATE register can be used as a local timer instead of triggering individual SAMPLE tasks. When SAMPLERATE.MODE is set to Timers, it is sufficient to trigger SAMPLE task only once in order to start the SAADC and triggering the STOP task will stop sampling. The SAMPLERATE.CC field controls the sample rate.

A DONE event signals that one sample has been taken.

In this mode, the RESULTDONE event has the same meaning as DONE when no oversampling takes place. Note that both events may occur before the actual value has been transferred into RAM by EasyDMA.

Improving sampling accuracy

Oversampling

Oversampling can improve the signal-to-noise ratio (SNR) by approximately 10log(OSR), where OSR is the oversampling ratio. Each oversampled result is obtained by acquiring 2OVERSAMPLE samples and combining them in an accumulate-and-average filter.

Oversampling and scanning can only be combined with BURST mode enabled. Without BURST mode, oversampling and scanning will average across multiple input channels.

The OVERSAMPLE register controls the accumulator. 2OVERSAMPLE samples must be taken before the result is written to RAM. This can be achieved by either of the following:
  • Use the built-in SAADC local timer and the SAMPLERATE register to perform sampling.
  • Use the TIMER peripheral and DPPI to trigger the SAADC SAMPLE task, to sample 2OVERSAMPLE times at a fixed rate.
  • Trigger the SAMPLE task 2OVERSAMPLE times from software.
  • Enable BURST mode and trigger the SAMPLE task once.

BURST mode can be enabled to avoid manually triggering the SAMPLE task 2OVERSAMPLE times. When BURST is enabled, the ADC automatically samples the input 2OVERSAMPLE times consecutively, with an approximate timing of (tACQ + tCONV) × 2OVERSAMPLE. Apart from extending the conversion time, it otherwise behaves like one-shot mode.

A DONE event indicates that a single sample has been acquired, while a RESULTDONE event indicates that enough samples have been gathered to transfer an oversampled result to RAM.

Chopping

Chopping is a technique used to cancel offset voltages and other low frequency errors, and is enabled in the CH[n].CONFIG.CHOPPING register. When chopping is enabled, the input to the ADC is alternately inverted (chopped) at the input mux, and a conversion is performed for each phase of chop. This is combined with oversampling, and ADC output is passed through the accumulate and average filter used in oversampling mode. Chopping is only avaible for slow channels.

Scan mode

A channel is considered enabled if CH[n].PSELP is set. If more than one channel, CH[n], is enabled, the ADC enters scan mode.

In scan mode, one SAMPLE task will trigger one conversion per enabled channel. The time it takes to sample all channels is:

Total time < Sum(CH[x].tACQ+tCONV), x=0..enabled channels

A DONE event signals that one channel has been sampled.

In this mode, the RESULTDONE event comes after each sample, that is, once for each channel.

High-speed channel

When the high-speed option is enabled, the the AIN0 (positive) and AIN1 (negative) pins can be used to sample signals with bandwidth up to 500 kHz.

High-speed mode is enabled by the HIGHSPEED field of the CH[n].CONFIG register.

In high-speed mode, AIN0 and AIN1 can be configured as either:
  • A single-ended input (AIN0 vs GND), with AIN1 not connected.
  • AIN0 as the positive side of a differential pair, with AIN1 as the negative input.

The other channels (AIN2 and AIN3 ) cannot be used in high-speed mode.

CHOPPING is not available in high-speed mode.

EasyDMA

After configuring RESULT.PTR and RESULT.MAXCNT, the ADC resources are started by triggering the START task. The ADC is using EasyDMA to store results in a Result buffer in RAM.

The Result buffer is located at the address specified in the RESULT.PTR register. The RESULT.PTR register is double-buffered and it can be updated and prepared for the next START task immediately after the STARTED event is generated. The size of the Result buffer (in bytes) is specified in the RESULT.MAXCNT register and the ADC will generate an END event when it has filled up the Result buffer, see ADC. Results are stored in little-endian byte order in Data RAM. Every sample will be sign extended to 16 bit before stored in the Result buffer.

The ADC is stopped by triggering the STOP task. The STOP task will terminate an ongoing sampling. The ADC will generate a STOPPED event when it has stopped. If the ADC is already stopped when the STOP task is triggered, the STOPPED event will still be generated.

Figure 2. ADC
ADC

If the RESULT.PTR is not pointing to a RAM region accessible from the peripheral, an EasyDMA transfer may result in a HardFault and/or memory corruption. See Memory for more information about the different memory regions.

The EasyDMA will have finished accessing the RAM when the END or STOPPED event has been generated.

The RESULT.AMOUNT register can be read following an END event or a STOPPED event to see how many bytes have been transferred to the Result buffer in RAM since the START task was triggered.

In scan mode, SAMPLE tasks can be triggered once the START task is triggered. The END event is generated when the number of samples transferred to memory reaches the value specified by RESULT.MAXCNT. After an END event, the START task needs to be triggered again before new samples can be taken.For more information about the scan mode, see Scan mode.

Note: Ensure the Result buffer can hold at least one result for each enabled channel by setting RESULT.MAXCNT ≥ 2 × (number of enabled channels). Each sample requires two bytes. Insufficient space leads to undefined behavior.

Reference

The ADC can use different reference voltages VREF, controlled in the REFSEL field of the CH[n].CONFIG register.

These are:

  • Internal reference, VREF = 1.024V
  • External reference (0.4 V up to VDD) , VREF provided by the EXTREF pin
  • VDD

The AIN0-AIN3 inputs cannot exceed VDD, or be lower than VSS. The input ranges are also limited by the REFERENCE used. The condition

 [V(P) - V(N) ] * 1/REFERENCE <= 1 

must always hold true for valid measurements, otherwise the ADC will saturate and report the max value determined by the RESOLUTION.

Acquisition time

To sample the input voltage, the ADC connects a capacitor to the input.

For illustration, see the following figure. The acquisition time indicates how long the capacitor is connected, see TACQ field in CH[n].CONFIG register. The required acquisition time depends on the source (Rsource) resistance. For high source resistance the acquisition time should be increased, see Acquisition time.

Figure 3. Simplified ADC sample network
Table 1. Acquisition time
TACQMaximum source resistance [kOhm]
1<1
310
540
10100
15200
20400
40800

Limits event monitoring

A channel can be event monitored by configuring limit register CH[n].LIMIT.

If the conversion result is higher than the defined high limit, or lower than the defined low limit, the appropriate event will be generated.

Figure 4. Example of limits monitoring on channel 'n'

Note that when setting the limits, CH[n].LIMIT.HIGH shall always be higher than or equal to CH[n].LIMIT.LOW. In other words, an event can be generated only when the input signal has been sampled outside of the defined limits. It is not possible to fire an event when the input signal is inside a defined range by swapping high and low limits.

The comparison to limits always takes place, there is no need to enable it. If comparison is not required on a channel, the software shall simply ignore the related events. In that situation, the value of the limits registers is irrelevant, so it does not matter if CH[n].LIMIT.LOW is lower than CH[n].LIMIT.HIGH or not.

Performance factors

Clock jitter, affecting sample timing accuracy, and circuit noise can affect ADC performance.

Jitter can be between START tasks or from START task to acquisition. START timer accuracy and startup times of regulators and references will contribute to variability. Sources of circuit noise may include CPU activity and the DC/DC regulator. Best ADC performance is achieved using START timing based on the TIMER module, HFXO clock source, and Constant Latency mode.

Registers

Instances

InstanceDomainBase addressDescription
SAADCGLOBAL0x400D5000

Successive approximation analog-to-digital converter SAADC

Configuration

InstanceDomainConfiguration
SAADCGLOBAL

CURRENTAMOUNT register not included.

Register overview

RegisterOffsetDescription
TASKS_START0x000

Start the ADC and prepare the result buffer in RAM

TASKS_SAMPLE0x004

Take one ADC sample, if scan is enabled all channels are sampled. This task requires that SAADC has started, i.e. EVENTS_STARTED was set and EVENTS_STOPPED was not.

TASKS_STOP0x008

Stop the ADC and terminate any on-going conversion

TASKS_CALIBRATEOFFSET0x00C

Starts offset auto-calibration

SUBSCRIBE_START0x080

Subscribe configuration for task START

SUBSCRIBE_SAMPLE0x084

Subscribe configuration for task SAMPLE

SUBSCRIBE_STOP0x088

Subscribe configuration for task STOP

SUBSCRIBE_CALIBRATEOFFSET0x08C

Subscribe configuration for task CALIBRATEOFFSET

EVENTS_STARTED0x100

The ADC has started

EVENTS_END0x104

The ADC has filled up the Result buffer

EVENTS_DONE0x108

A conversion task has been completed. Depending on the mode, multiple conversions might be needed for a result to be transferred to RAM.

EVENTS_RESULTDONE0x10C

A result is ready to get transferred to RAM.

EVENTS_CALIBRATEDONE0x110

Calibration is complete

EVENTS_STOPPED0x114

The ADC has stopped

EVENTS_CH[n].LIMITH0x118

Last results is equal or above CH[n].LIMIT.HIGH

EVENTS_CH[n].LIMITL0x11C

Last results is equal or below CH[n].LIMIT.LOW

PUBLISH_STARTED0x180

Publish configuration for event STARTED

PUBLISH_END0x184

Publish configuration for event END

PUBLISH_DONE0x188

Publish configuration for event DONE

PUBLISH_RESULTDONE0x18C

Publish configuration for event RESULTDONE

PUBLISH_CALIBRATEDONE0x190

Publish configuration for event CALIBRATEDONE

PUBLISH_STOPPED0x194

Publish configuration for event STOPPED

PUBLISH_CH[n].LIMITH0x198

Publish configuration for event CH[n].LIMITH

PUBLISH_CH[n].LIMITL0x19C

Publish configuration for event CH[n].LIMITL

INTEN0x300

Enable or disable interrupt

INTENSET0x304

Enable interrupt

INTENCLR0x308

Disable interrupt

STATUS0x400

Status

ENABLE0x500

Enable or disable ADC

CH[n].PSELP0x510

Input positive pin selection for CH[m]

CH[n].PSELN0x514

Input negative pin selection for CH[m]

CH[n].CONFIG0x518

Input configuration for CH[m]

CH[n].LIMIT0x51C

High/low limits for event monitoring a channel

BURST0x5E8

Enable burst mode

RESOLUTION0x5F0

Resolution configuration

OVERSAMPLE0x5F4

Oversampling configuration. OVERSAMPLE should not be combined with SCAN. The RESOLUTION is applied before averaging, thus for high OVERSAMPLE a higher RESOLUTION should be used.

SAMPLERATE0x5F8

Controls normal or continuous sample rate

RESULT.PTR0x62C

Data pointer

RESULT.MAXCNT0x630

Maximum number of buffer bytes to transfer

RESULT.AMOUNT0x634

Number of buffer bytes transferred since last START, updated after the END or STOPPED events

RESULT.CURRENTAMOUNT0x638

Number of buffer bytes transferred since last START, continuously updated

TASKS_START

Address offset: 0x000

Start the ADC and prepare the result buffer in RAM

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

W

TASKS_START

Start the ADC and prepare the result buffer in RAM

Trigger

1

Trigger task

TASKS_SAMPLE

Address offset: 0x004

Take one ADC sample, if scan is enabled all channels are sampled. This task requires that SAADC has started, i.e. EVENTS_STARTED was set and EVENTS_STOPPED was not.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

W

TASKS_SAMPLE

Take one ADC sample, if scan is enabled all channels are sampled. This task requires that SAADC has started, i.e. EVENTS_STARTED was set and EVENTS_STOPPED was not.

Trigger

1

Trigger task

TASKS_STOP

Address offset: 0x008

Stop the ADC and terminate any on-going conversion

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

W

TASKS_STOP

Stop the ADC and terminate any on-going conversion

Trigger

1

Trigger task

TASKS_CALIBRATEOFFSET

Address offset: 0x00C

Starts offset auto-calibration

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

W

TASKS_CALIBRATEOFFSET

Starts offset auto-calibration

Trigger

1

Trigger task

SUBSCRIBE_START

Address offset: 0x080

Subscribe configuration for task START

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that task START will subscribe to

B

RW

EN

Disabled

0

Disable subscription

Enabled

1

Enable subscription

SUBSCRIBE_SAMPLE

Address offset: 0x084

Subscribe configuration for task SAMPLE

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that task SAMPLE will subscribe to

B

RW

EN

Disabled

0

Disable subscription

Enabled

1

Enable subscription

SUBSCRIBE_STOP

Address offset: 0x088

Subscribe configuration for task STOP

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that task STOP will subscribe to

B

RW

EN

Disabled

0

Disable subscription

Enabled

1

Enable subscription

SUBSCRIBE_CALIBRATEOFFSET

Address offset: 0x08C

Subscribe configuration for task CALIBRATEOFFSET

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that task CALIBRATEOFFSET will subscribe to

B

RW

EN

Disabled

0

Disable subscription

Enabled

1

Enable subscription

EVENTS_STARTED

Address offset: 0x100

The ADC has started

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

EVENTS_STARTED

The ADC has started

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_END

Address offset: 0x104

The ADC has filled up the Result buffer

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

EVENTS_END

The ADC has filled up the Result buffer

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_DONE

Address offset: 0x108

A conversion task has been completed. Depending on the mode, multiple conversions might be needed for a result to be transferred to RAM.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

EVENTS_DONE

A conversion task has been completed. Depending on the mode, multiple conversions might be needed for a result to be transferred to RAM.

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_RESULTDONE

Address offset: 0x10C

A result is ready to get transferred to RAM.

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

EVENTS_RESULTDONE

A result is ready to get transferred to RAM.

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_CALIBRATEDONE

Address offset: 0x110

Calibration is complete

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

EVENTS_CALIBRATEDONE

Calibration is complete

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_STOPPED

Address offset: 0x114

The ADC has stopped

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

EVENTS_STOPPED

The ADC has stopped

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_CH[n]

Peripheral events.

EVENTS_CH[n].LIMITH

Address offset: 0x118 + (n × 0x8)

Last results is equal or above CH[n].LIMIT.HIGH

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

LIMITH

Last results is equal or above CH[n].LIMIT.HIGH

NotGenerated

0

Event not generated

Generated

1

Event generated

EVENTS_CH[n].LIMITL

Address offset: 0x11C + (n × 0x8)

Last results is equal or below CH[n].LIMIT.LOW

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

LIMITL

Last results is equal or below CH[n].LIMIT.LOW

NotGenerated

0

Event not generated

Generated

1

Event generated

PUBLISH_STARTED

Address offset: 0x180

Publish configuration for event STARTED

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event STARTED will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

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_DONE

Address offset: 0x188

Publish configuration for event DONE

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event DONE will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_RESULTDONE

Address offset: 0x18C

Publish configuration for event RESULTDONE

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event RESULTDONE will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_CALIBRATEDONE

Address offset: 0x190

Publish configuration for event CALIBRATEDONE

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event CALIBRATEDONE will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_STOPPED

Address offset: 0x194

Publish configuration for event STOPPED

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event STOPPED will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_CH[n]

Publish configuration for events

PUBLISH_CH[n].LIMITH

Address offset: 0x198 + (n × 0x8)

Publish configuration for event CH[n].LIMITH

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event CH[n].LIMITH will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

PUBLISH_CH[n].LIMITL

Address offset: 0x19C + (n × 0x8)

Publish configuration for event CH[n].LIMITL

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHIDX

[0..255]

DPPI channel that event CH[n].LIMITL will publish to

B

RW

EN

Disabled

0

Disable publishing

Enabled

1

Enable publishing

INTEN

Address offset: 0x300

Enable or disable interrupt

Bit number313029282726252423222120191817161514131211109876543210
IDNMLKJIHGFEDCBA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

STARTED

Enable or disable interrupt for event STARTED

Disabled

0

Disable

Enabled

1

Enable

B

RW

END

Enable or disable interrupt for event END

Disabled

0

Disable

Enabled

1

Enable

C

RW

DONE

Enable or disable interrupt for event DONE

Disabled

0

Disable

Enabled

1

Enable

D

RW

RESULTDONE

Enable or disable interrupt for event RESULTDONE

Disabled

0

Disable

Enabled

1

Enable

E

RW

CALIBRATEDONE

Enable or disable interrupt for event CALIBRATEDONE

Disabled

0

Disable

Enabled

1

Enable

F

RW

STOPPED

Enable or disable interrupt for event STOPPED

Disabled

0

Disable

Enabled

1

Enable

G

RW

CH0LIMITH

Enable or disable interrupt for event CH0LIMITH

Disabled

0

Disable

Enabled

1

Enable

H

RW

CH0LIMITL

Enable or disable interrupt for event CH0LIMITL

Disabled

0

Disable

Enabled

1

Enable

I

RW

CH1LIMITH

Enable or disable interrupt for event CH1LIMITH

Disabled

0

Disable

Enabled

1

Enable

J

RW

CH1LIMITL

Enable or disable interrupt for event CH1LIMITL

Disabled

0

Disable

Enabled

1

Enable

K

RW

CH2LIMITH

Enable or disable interrupt for event CH2LIMITH

Disabled

0

Disable

Enabled

1

Enable

L

RW

CH2LIMITL

Enable or disable interrupt for event CH2LIMITL

Disabled

0

Disable

Enabled

1

Enable

M

RW

CH3LIMITH

Enable or disable interrupt for event CH3LIMITH

Disabled

0

Disable

Enabled

1

Enable

N

RW

CH3LIMITL

Enable or disable interrupt for event CH3LIMITL

Disabled

0

Disable

Enabled

1

Enable

INTENSET

Address offset: 0x304

Enable interrupt

Bit number313029282726252423222120191817161514131211109876543210
IDNMLKJIHGFEDCBA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW
W1S

STARTED

Write '1' to enable interrupt for event STARTED

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

B

RW
W1S

END

Write '1' to enable interrupt for event END

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

C

RW
W1S

DONE

Write '1' to enable interrupt for event DONE

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

D

RW
W1S

RESULTDONE

Write '1' to enable interrupt for event RESULTDONE

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

E

RW
W1S

CALIBRATEDONE

Write '1' to enable interrupt for event CALIBRATEDONE

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

F

RW
W1S

STOPPED

Write '1' to enable interrupt for event STOPPED

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

G

RW
W1S

CH0LIMITH

Write '1' to enable interrupt for event CH0LIMITH

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

H

RW
W1S

CH0LIMITL

Write '1' to enable interrupt for event CH0LIMITL

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

I

RW
W1S

CH1LIMITH

Write '1' to enable interrupt for event CH1LIMITH

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

J

RW
W1S

CH1LIMITL

Write '1' to enable interrupt for event CH1LIMITL

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

K

RW
W1S

CH2LIMITH

Write '1' to enable interrupt for event CH2LIMITH

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

L

RW
W1S

CH2LIMITL

Write '1' to enable interrupt for event CH2LIMITL

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

M

RW
W1S

CH3LIMITH

Write '1' to enable interrupt for event CH3LIMITH

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

N

RW
W1S

CH3LIMITL

Write '1' to enable interrupt for event CH3LIMITL

Set

1

Enable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

INTENCLR

Address offset: 0x308

Disable interrupt

Bit number313029282726252423222120191817161514131211109876543210
IDNMLKJIHGFEDCBA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW
W1C

STARTED

Write '1' to disable interrupt for event STARTED

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

B

RW
W1C

END

Write '1' to disable interrupt for event END

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

C

RW
W1C

DONE

Write '1' to disable interrupt for event DONE

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

D

RW
W1C

RESULTDONE

Write '1' to disable interrupt for event RESULTDONE

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

E

RW
W1C

CALIBRATEDONE

Write '1' to disable interrupt for event CALIBRATEDONE

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

F

RW
W1C

STOPPED

Write '1' to disable interrupt for event STOPPED

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

G

RW
W1C

CH0LIMITH

Write '1' to disable interrupt for event CH0LIMITH

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

H

RW
W1C

CH0LIMITL

Write '1' to disable interrupt for event CH0LIMITL

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

I

RW
W1C

CH1LIMITH

Write '1' to disable interrupt for event CH1LIMITH

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

J

RW
W1C

CH1LIMITL

Write '1' to disable interrupt for event CH1LIMITL

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

K

RW
W1C

CH2LIMITH

Write '1' to disable interrupt for event CH2LIMITH

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

L

RW
W1C

CH2LIMITL

Write '1' to disable interrupt for event CH2LIMITL

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

M

RW
W1C

CH3LIMITH

Write '1' to disable interrupt for event CH3LIMITH

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

N

RW
W1C

CH3LIMITL

Write '1' to disable interrupt for event CH3LIMITL

Clear

1

Disable

Disabled

0

Read: Disabled

Enabled

1

Read: Enabled

STATUS

Address offset: 0x400

Status

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

R

STATUS

Status

Ready

0

ADC is ready. No on-going conversion.

Busy

1

ADC is busy. Single conversion in progress.

ENABLE

Address offset: 0x500

Enable or disable ADC

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

ENABLE

Enable or disable ADC

Disabled

0

Disable ADC

Enabled

1

Enable ADC

When enabled, the ADC will acquire access to the GPIO pins specified in the CH[n].PSELP and CH[n].PSELN registers.

CH[n].PSELP

Address offset: 0x510 + (n × 0x10)

Input positive pin selection for CH[m]

The analog input is selected based on CH[m].PSELP.PORT and CH[m].PSELP.PIN

Bit number313029282726252423222120191817161514131211109876543210
IDDDCCCBBBBAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

PIN

GPIO pin selection.

B

RW

PORT

GPIO port selection

C

RW

INTERNAL

Internal input selection for analog positive input when CH[m].PSELP.CONNECT = Internal

Vdd

2

Connected to VDD, and divided by 8/30 (0.267)

Vss

4

D

RW

CONNECT

Connection

NC

0

Not connected

AnalogInput

1

Select analog input

The analog input is connected based on CH[m].PSELP.PIN and CH[m].PSELP.PORT

Internal

2

Selects internal inputs.

The analog input is connected based on CH[m].PSELP.INTERNAL

CH[n].PSELN

Address offset: 0x514 + (n × 0x10)

Input negative pin selection for CH[m]

The analog input is selected based on CH[m].PSELN.PORT and CH[m].PSELN.PIN

Bit number313029282726252423222120191817161514131211109876543210
IDDDCCCBBBBAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

PIN

GPIO pin selection.

B

RW

PORT

GPIO Port selection

C

RW

INTERNAL

Internal input selection for Analog negative input when CH[m].PSELN.CONNECT = Internal

Vdd

2

Connected to VDD, and divided by 8/30 (0.267)

Vss

4

D

RW

CONNECT

Connection

NC

0

Not connected

AnalogInput

1

Select analog input

The analog input is connected based on CH[m].PSELN.PIN and CH[m].PSELN.PORT

Internal

2

Selects internal inputs.

The actual analog input is CH[m].PSELN.INTERNAL

CH[n].CONFIG

Address offset: 0x518 + (n × 0x10)

Input configuration for CH[m]

Bit number313029282726252423222120191817161514131211109876543210
IDGGGFFFFFFFFFEDDDCBA
Reset 0x0002000000000000000000100000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CHOPPING

Enable chopping

Disabled

0

Chopping is disabled

Enabled

1

Chopping is enabled

B

RW

VREFPLPFDISABLE

Disable the internal low pass filter for the reference voltage

Disabling the internal low pass filter enables a trade-off between faster reference voltage settling time and noise.

Disabled

1

The internal low pass filter for the reference voltage is disabled (reference voltage is unfiltered and has faster settling time)

Enabled

0

The internal low pass filter for the reference voltage is enabled (reference voltage is filtered)

C

RW

HIGHSPEED

Enable high speed inputs for the ADC, allowing the highest sampling bandwidth

Disabled

0

High speed inputs are disabled

Enabled

1

High speed inputs are enabled

D

RW

REFSEL

Reference control

Internal

0

Internal 1.024 V reference

External

1

External reference voltage

Vdd

3

Reference given at VDD

E

RW

MODE

Enable differential mode

SE

0

Single ended, PSELN will be ignored, negative input to ADC shorted to GND

Diff

1

Differential

F

RW

TACQ

[3..319]

Acquisition time, the time the ADC uses to sample the input voltage. Resulting acquistion time is ((TACQ+1) x 125 ns)

G

RW

TCONV

[1..7]

Conversion time. Resulting conversion time is ((TCONV+1) x 250 ns)

CH[n].LIMIT

Address offset: 0x51C + (n × 0x10)

High/low limits for event monitoring a channel

Bit number313029282726252423222120191817161514131211109876543210
IDBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA
Reset 0x7FFF800001111111111111111000000000000000
IDR/WFieldValue IDValueDescription
A

RW

LOW

[-32768 to +32767]

Low level limit

B

RW

HIGH

[-32768 to +32767]

High level limit

BURST

Address offset: 0x5E8

Enable burst mode

Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

BURST

Enable burst mode

Disabled

0

Burst mode is disabled (normal operation)

Enabled

1

Burst mode is enabled. SAADC takes 2^OVERSAMPLE number of samples and sends the average to Data RAM.

RESOLUTION

Address offset: 0x5F0

Resolution configuration

Bit number313029282726252423222120191817161514131211109876543210
IDAAA
Reset 0x0000000100000000000000000000000000000001
IDR/WFieldValue IDValueDescription
A

RW

VAL

Set the resolution

8bit

0

8 bit

10bit

1

10 bit

12bit

2

12 bit

14bit

3

14 bit

OVERSAMPLE

Address offset: 0x5F4

Oversampling configuration. OVERSAMPLE should not be combined with SCAN. The RESOLUTION is applied before averaging, thus for high OVERSAMPLE a higher RESOLUTION should be used.

Bit number313029282726252423222120191817161514131211109876543210
IDAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

OVERSAMPLE

Oversample control

Bypass

0

Bypass oversampling

Over2x

1

Oversample 2x

Over4x

2

Oversample 4x

Over8x

3

Oversample 8x

Over16x

4

Oversample 16x

Over32x

5

Oversample 32x

Over64x

6

Oversample 64x

Over128x

7

Oversample 128x

Over256x

8

Oversample 256x

SAMPLERATE

Address offset: 0x5F8

Controls normal or continuous sample rate

Bit number313029282726252423222120191817161514131211109876543210
IDBAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

CC

[16..2047]

Capture and compare value. Sample rate is 16 MHz/CC

B

RW

MODE

Select mode for sample rate control

Task

0

Rate is controlled from SAMPLE task

Timers

1

Rate is controlled from local timer (use CC to control the rate)

RESULT

RESULT EasyDMA channel

RESULT.PTR

Address offset: 0x62C

Data pointer

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

PTR

Data pointer

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

RESULT.MAXCNT

Address offset: 0x630

Maximum number of buffer bytes to transfer

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

MAXCNT

Maximum number of buffer bytes to transfer

RESULT.AMOUNT

Address offset: 0x634

Number of buffer bytes transferred since last START, updated after the END or STOPPED events

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

R

AMOUNT

Number of buffer bytes transferred since last START, updated after the END or STOPPED events.

RESULT.CURRENTAMOUNT

Address offset: 0x638

Number of buffer bytes transferred since last START, continuously updated

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

R

AMOUNT

Number of buffer bytes transferred since last START, continuously updated.