30. Digital filter for sigma delta modulators (DFSDM)

30.1 Introduction

Digital filter for sigma delta modulators (DFSDM) is a high-performance module dedicated to interface external \( \Sigma\Delta \) modulators. It is featuring up to 8 external digital serial interfaces (channels) and up to 4 digital filters with flexible Sigma Delta stream digital processing options to offer up to 24-bit final ADC resolution. DFSDM also features optional parallel data stream input from internal ADC peripherals or from device memory.

An external \( \Sigma\Delta \) modulator provides digital data stream of converted analog values from the external \( \Sigma\Delta \) modulator analog input. This digital data stream is sent into a DFSDM input channel through a serial interface. DFSDM supports several standards to connect various \( \Sigma\Delta \) modulator outputs: SPI interface and Manchester coded 1-wire interface (both with adjustable parameters). DFSDM module supports the connection of up to 8 multiplexed input digital serial channels which are shared with up to 4 DFSDM modules. DFSDM module also supports alternative parallel data inputs from up to 8 internal 16-bit data channels (from internal ADCs or from device memory).

DFSDM is converting an input data stream into a final digital data word which represents an analog input value on a \( \Sigma\Delta \) modulator analog input. The conversion is based on a configurable digital process: the digital filtering and decimation of the input serial data stream.

The conversion speed and resolution are adjustable according to configurable parameters for digital processing: filter type, filter order, length of filter, integrator length. The maximum output data resolution is up to 24 bits. There are two conversion modes: single conversion mode and continuous mode. The data can be automatically stored in a system RAM buffer through DMA, thus reducing the software overhead.

A flexible timer triggering system can be used to control the start of conversion of DFSDM. This timing control is capable of triggering simultaneous conversions or inserting a programmable delay between conversions.

DFSDM features an analog watchdog function. Analog watchdog can be assigned to any of the input channel data stream or to final output data. Analog watchdog has its own digital filtering of input data stream to reach the required speed and resolution of watched data.

To detect short-circuit in control applications, there is a short-circuit detector. This block watches each input channel data stream for occurrence of stable data for a defined time duration (several 0's or 1's in an input data stream).

An extremes detector block watches final output data and stores maximum and minimum values from the output data values. The extremes values stored can be restarted by software.

Two power modes are supported: normal mode and stop mode.

30.2 DFSDM main features

30.3 DFSDM implementation

This section describes the configuration implemented in DFSDMx.

Table 247. DFSDM1 implementation

DFSDM featuresDFSDM1
Number of channels8
Number of filters4
Input from internal ADCX
Supported trigger sources32 (1)
Pulses skipper-
  1. 1. Refer to Table 250: DFSDM triggers connection for available trigger sources.

30.4 DFSDM functional description

30.4.1 DFSDM block diagram

Figure 229. Single DFSDM block diagram

Figure 229. Single DFSDM block diagram. This block diagram illustrates the internal architecture of a DFSDM. At the top, an APB bus connects to a control unit and parallel input data registers (Sample 0 and Sample 1) for channels 0 and 7. These registers feed into a central Channel multiplexer. Below the multiplexer, four filter channels are shown (0, 1, 2, 3). Each channel consists of a Sinc* filter and an Integrator unit, with parameters for Filter order and Oversampling ratio. The output of the integrators goes to DFSDM data registers (0 and 3), which include a right bit-shift count and calibration data correction unit. These registers then connect to an APB bus via a Data output. The data from the registers also feeds into 8 watchdog filters and 8 watchdog comparators. Below this, there are 1's, 0's counter thresholds and Short circuit detectors (0 and 7). The Short circuit detectors have threshold and interrupt/break outputs. The watchdog comparators have High threshold and Low threshold settings, with Filter 0 config and Filter 3 config. They also have interrupt/break outputs. The Control unit at the bottom left contains Configuration registers and DMA, interrupt, break control, clock control. It generates Interrupts and events: 1) end of conversion, 2) analog watchdog, 3) short circuit detection, 4) overrun. It also connects to the Short circuit detectors and the watchdog comparators. The diagram also shows various input pins: EXTRG[1:0], CKOUT, DATIN0, CKIN0, DATIN7, CKIN7, and internal signals like Data in, Clock in, and Data output. The diagram is labeled MS35355V5.
Figure 229. Single DFSDM block diagram. This block diagram illustrates the internal architecture of a DFSDM. At the top, an APB bus connects to a control unit and parallel input data registers (Sample 0 and Sample 1) for channels 0 and 7. These registers feed into a central Channel multiplexer. Below the multiplexer, four filter channels are shown (0, 1, 2, 3). Each channel consists of a Sinc* filter and an Integrator unit, with parameters for Filter order and Oversampling ratio. The output of the integrators goes to DFSDM data registers (0 and 3), which include a right bit-shift count and calibration data correction unit. These registers then connect to an APB bus via a Data output. The data from the registers also feeds into 8 watchdog filters and 8 watchdog comparators. Below this, there are 1's, 0's counter thresholds and Short circuit detectors (0 and 7). The Short circuit detectors have threshold and interrupt/break outputs. The watchdog comparators have High threshold and Low threshold settings, with Filter 0 config and Filter 3 config. They also have interrupt/break outputs. The Control unit at the bottom left contains Configuration registers and DMA, interrupt, break control, clock control. It generates Interrupts and events: 1) end of conversion, 2) analog watchdog, 3) short circuit detection, 4) overrun. It also connects to the Short circuit detectors and the watchdog comparators. The diagram also shows various input pins: EXTRG[1:0], CKOUT, DATIN0, CKIN0, DATIN7, CKIN7, and internal signals like Data in, Clock in, and Data output. The diagram is labeled MS35355V5.
  1. 1. This example shows 4 DFSDM filters and 8 input channels (max. configuration).

30.4.2 DFSDM pins and internal signals

Table 248. DFSDM external pins

NameSignal TypeRemarks
VDDPower supplyDigital power supply.
VSSPower supplyDigital ground power supply.
CKIN[7:0]Clock inputClock signal provided from external \( \Sigma\Delta \) modulator. FT input.
DATIN[7:0]Data inputData signal provided from external \( \Sigma\Delta \) modulator. FT input.
CKOUTClock outputClock output to provide clock signal into external \( \Sigma\Delta \) modulator.
EXTRG[1:0]External trigger signalInput trigger from two EXTI signals to start analog conversion (from GPIOs: EXTI11, EXTI15).

Table 249. DFSDM internal signals

NameSignal TypeRemarks
dfsdm_jtrg[31:0]Internal/external trigger signalInput trigger from internal/external trigger sources in order to start analog conversion (from internal sources: synchronous input, from external sources: asynchronous input with synchronization). See Table 250 for details.
dfsdm_break[3:0]break signal outputBreak signals event generation from Analog watchdog or short-circuit detector
dfsdm_dma[3:0]DMA request signalDMA request signal from each DFSDM_FLTx (x=0..3): end of injected conversion event.
dfsdm_it[3:0]Interrupt request signalInterrupt signal for each DFSDM_FLTx (x=0..3)
dfsdm_dat_adc[15:0]ADC input dataUp to 4 internal ADC data buses as parallel inputs.

Table 250. DFSDM triggers connection

Trigger nameTrigger source
dfsdm_jtrg0TIM1_TRGO
dfsdm_jtrg1TIM1_TRGO2
dfsdm_jtrg2TIM8_TRGO
dfsdm_jtrg3TIM8_TRGO2
dfsdm_jtrg4TIM3_TRGO
dfsdm_jtrg5TIM4_TRGO
dfsdm_jtrg6TIM16_OC1
dfsdm_jtrg7TIM6_TRGO
dfsdm_jtrg8TIM7_TRGO
dfsdm_jtrg9HRTIM1_ADCTRG1

Table 250. DFSDM triggers connection (continued)

Trigger nameTrigger source
dfsdm_jtrg10HRTIM1_ADCTRG3
dfsdm_jtrg[23:11]Reserved
dfsdm_jtrg24EXTI11
dfsdm_jtrg25EXTI15
dfsdm_jtrg26LPTIMER1
dfsdm_jtrg27LPTIMER2
dfsdm_jtrg28LPTIMER3
dfsdm_jtrg[31:29]Reserved

Table 251. DFSDM break connection

Break nameBreak destination
dfsdm_break[0]TIM1 break / TIM15 break
dfsdm_break[1]TIM1 break2 / TIM16 break
dfsdm_break[2]TIM8 break / TIM17 break
dfsdm_break[3]TIM8 break2

30.4.3 DFSDM reset and clocks

DFSDM on-off control

The DFSDM interface is globally enabled by setting DFSDMEN=1 in the DFSDM_CH0CFGR1 register. Once DFSDM is globally enabled, all input channels (y=0..7) and digital filters DFSDM_FLTx (x=0..3) start to work if their enable bits are set (channel enable bit CHEN in DFSDM_CHyCFGR1 and DFSDM_FLTx enable bit DFEN in DFSDM_FLTxCR1).

Digital filter x DFSDM_FLTx (x=0..3) is enabled by setting DFEN=1 in the DFSDM_FLTxCR1 register. Once DFSDM_FLTx is enabled (DFEN=1), both Sinc x digital filter unit and integrator unit are reinitialized.

By clearing DFEN, any conversion which may be in progress is immediately stopped and DFSDM_FLTx is put into stop mode. All register settings remain unchanged except DFSDM_FLTxAWSR and DFSDM_FLTxISR (which are reset).

Channel y (y=0..7) is enabled by setting CHEN=1 in the DFSDM_CHyCFGR1 register. Once the channel is enabled, it receives serial data from the external \( \Sigma\Delta \) modulator or parallel internal data sources (ADCs or CPU/DMA wire from memory).

DFSDM must be globally disabled (by DFSDMEN=0 in DFSDM_CH0CFGR1) before stopping the system clock to enter in the STOP mode of the device.

DFSDM clocks

The internal DFSDM clock \( f_{\text{DFSDMCLK}} \) , which is used to drive the channel transceivers, digital processing blocks (digital filter, integrator) and next additional blocks (analog watchdog, short-circuit detector, extremes detector, control block) is generated by the RCC block and is derived from the system clock SYSCLK or peripheral clock PCLK2 (see Section 8.7.20: RCC domain 2 kernel clock configuration register (RCC_D2CCIP1R) ). The DFSDM clock is automatically stopped in stop mode (if DFEN = 0 for all DFSDM_FLTx, x=0..3).

The DFSDM serial channel transceivers can receive an external serial clock to sample an external serial data stream. The internal DFSDM clock must be at least 4 times faster than the external serial clock if standard SPI coding is used, and 6 times faster than the external serial clock if Manchester coding is used.

DFSDM can provide one external output clock signal to drive external \( \Sigma\Delta \) modulator(s) clock input(s). It is provided on CKOUT pin. This output clock signal must be in the range specified in given device datasheet and is derived from DFSDM clock or from audio clock (see CKOUTSRC bit in DFSDM_CH0CFGR1 register) by programmable divider in the range 2 - 256 (CKOUTDIV in DFSDM_CH0CFGR1 register). Audio clock source is SAI1 clock selected by SAI1SEL[1:0] field in RCC configuration (see Section 8.7.20: RCC domain 2 kernel clock configuration register (RCC_D2CCIP1R) ).

30.4.4 Serial channel transceivers

There are 8 multiplexed serial data channels which can be selected for conversion by each filter or Analog watchdog or Short-circuit detector. Those serial transceivers receive data stream from external \( \Sigma\Delta \) modulator. Data stream can be sent in SPI format or Manchester coded format (see SITP[1:0] bits in DFSDM_CHyCFGR1 register).

The channel is enabled for operation by setting CHEN=1 in DFSDM_CHyCFGR1 register.

Channel inputs selection

Serial inputs (data and clock signals) from DATINy and CKINy pins can be redirected from the following channel pins. This serial input channel redirection is set by CHINSEL bit in DFSDM_CHyCFGR1 register.

Channel redirection can be used to collect audio data from PDM (pulse density modulation) stereo microphone type. PDM stereo microphone has one data and one clock signal. Data signal provides information for both left and right audio channel (rising clock edge samples for left channel and falling clock edge samples for right channel).

Configuration of serial channels for PDM microphone input:

Figure 230. Input channel pins redirection

Diagram illustrating input channel pins redirection for DFSDM. On the left, multiple input pins are shown: DATIN(y_max), CKIN(y_max), DATIN(y), CKIN(y), DATIN(y-1), CKIN(y-1), DATAIN0, and CKIN0. Each pair of pins is connected to a 'Decode' block. The 'Decode' blocks output signals labeled CH(y_max), CHy, CH(y-1), and CH0. These signals are then connected to a central switching matrix. The matrix is controlled by two inputs: CHINSEL and RCH. The outputs of the matrix are connected to a series of digital filters labeled FLT(x_max), FLT(x+1), FLTx, and FLT0. The diagram shows that the input pins are redirected through the matrix to the appropriate filters based on the configuration.

The diagram illustrates the internal architecture for input channel pin redirection in a DFSDM. On the left, multiple pairs of input pins are shown, labeled from top to bottom as DATIN \( (y_{max}) \) /CKIN \( (y_{max}) \) , DATIN \( y \) /CKIN \( y \) , DATIN \( (y-1) \) /CKIN \( (y-1) \) , and DATAIN0/CKIN0. Each pair is connected to a 'Decode' block. The 'Decode' blocks output signals labeled CH \( (y_{max}) \) , CH \( y \) , CH \( (y-1) \) , and CH0. These signals are then connected to a central switching matrix. The matrix is controlled by two inputs: CHINSEL and RCH. The outputs of the matrix are connected to a series of digital filters labeled FLT \( (x_{max}) \) , FLT \( (x+1) \) , FLTx, and FLT0. The diagram shows that the input pins are redirected through the matrix to the appropriate filters based on the configuration.

Diagram illustrating input channel pins redirection for DFSDM. On the left, multiple input pins are shown: DATIN(y_max), CKIN(y_max), DATIN(y), CKIN(y), DATIN(y-1), CKIN(y-1), DATAIN0, and CKIN0. Each pair of pins is connected to a 'Decode' block. The 'Decode' blocks output signals labeled CH(y_max), CHy, CH(y-1), and CH0. These signals are then connected to a central switching matrix. The matrix is controlled by two inputs: CHINSEL and RCH. The outputs of the matrix are connected to a series of digital filters labeled FLT(x_max), FLT(x+1), FLTx, and FLT0. The diagram shows that the input pins are redirected through the matrix to the appropriate filters based on the configuration.

MSv41632V1

Output clock generation

A clock signal can be provided on CKOUT pin to drive external \( \Sigma\Delta \) modulator clock inputs. The frequency of this CKOUT signal is derived from DFSDM clock or from audio clock (see CKOUTSRC bit in DFSDM_CH0CFGR1 register) divided by a predivider (see CKOUTDIV bits in DFSDM_CH0CFGR1 register). If the output clock is stopped, then CKOUT signal is set to low state (output clock can be stopped by CKOUTDIV=0 in DFSDM_CHyCFGR1 register or by DFSDMEN=0 in DFSDM_CH0CFGR1 register). The output clock stopping is performed:

Before changing CKOUTSRC the software has to wait for CKOUT being stopped to avoid glitch on CKOUT pin. The output clock signal frequency must be in the range 0 - 20 MHz.

SPI data input format operation

In SPI format, the data stream is sent in serial format through data and clock signals. Data signal is always provided from DATINy pin. A clock signal can be provided externally from CKINy pin or internally from a signal derived from the CKOUT signal source.

In case of external clock source selection (SPICKSEL[1:0]=0) data signal (on DATINy pin) is sampled on rising or falling clock edge (of CKINy pin) according SITP[1:0] bits setting (in DFSDM_CHyCFGR1 register).

Internal clock sources - see SPICKSEL[1:0] in DFSDM_CHyCFGR1 register:

Note: An internal clock source can only be used when the external \( \Sigma\Delta \) modulator uses CKOUT signal as a clock input (to have synchronous clock and data operation).

Internal clock source usage can save CKINy pin connection (CKINy pins can be used for other purpose).

The clock source signal frequency must be in the range 0 - 20 MHz for SPI coding and less than \( f_{\text{DFSDMCLK}}/4 \) .

Manchester coded data input format operation

In Manchester coded format, the data stream is sent in serial format through DATINy pin only. Decoded data and clock signal are recovered from serial stream after Manchester

decoding. There are two possible settings of Manchester codings (see SITP[1:0] bits in DFSDM_CHyCFGR1 register):

The recovered clock signal frequency for Manchester coding must be in the range 0 - 10 MHz and less than \( f_{\text{DFSDMCLK}}/6 \) .

To correctly receive Manchester coded data, the CKOUTDIV divider (in DFSDM_CH0CFGR1 register) must be set with respect to expected Manchester data rate according formula:

\[ ((\text{CKOUTDIV} + 1) \times T_{\text{SYSCLK}}) < T_{\text{Manchester clock}} < (2 \times \text{CKOUTDIV} \times T_{\text{SYSCLK}}) \]

Figure 231. Channel transceiver timing diagrams

Figure 231: Channel transceiver timing diagrams showing SPI and Manchester timing modes.

The figure illustrates timing diagrams for three main configurations:

SPI timing : SPICKSEL = 0

SPI timing : SPICKSEL = 1, 2, 3

Manchester timing

MS30766V3

Figure 231: Channel transceiver timing diagrams showing SPI and Manchester timing modes.

Clock absence detection

Channels serial clock inputs can be checked for clock absence/presence to ensure the correct operation of conversion and error reporting. Clock absence detection can be enabled or disabled on each input channel y by bit CKABEN in DFSDM_CHyCFGR1 register. If enabled, then this clock absence detection is performed continuously on a given channel. A clock absence flag is set (CKABF[y] = 1) and an interrupt can be invoked (if CKABIE=1) in case of an input clock error (see CKABF[7:0] in DFSDM_FLT0ISR register and CKABEN in DFSDM_CHyCFGR1). After a clock absence flag clearing (by CLRCKABF in DFSDM_FLT0ICR register), the clock absence flag is refreshed. Clock absence status bit CKABF[y] is set also by hardware when corresponding channel y is disabled (if CHEN[y] = 0 then CKABF[y] is held in set state).

When a clock absence event has occurred, the data conversion (and/or analog watchdog and short-circuit detector) provides incorrect data. The user should manage this event and discard given data while a clock absence is reported.

The clock absence feature is available only when the system clock is used for the CKOUT signal (CKOUTSRC=0 in DFSDM_CH0CFGR1 register).

When the transceiver is not yet synchronized, the clock absence flag is set and cannot be cleared by CLRCKABF[y] bit (in DFSDM_FLT0ICR register). The software sequence concerning clock absence detection feature should be:

If SPI data format is used, then the clock absence detection is based on the comparison of an external input clock with an output clock generation (CKOUT signal). The external input clock signal into the input channel must be changed at least once per 8 signal periods of CKOUT signal (which is controlled by CKOUTDIV field in DFSDM_CH0CFGR1 register).

Figure 232. Clock absence timing diagram for SPI

Timing diagram for SPI clock absence detection. The diagram shows three signals: CKOUT (output clock), CKINy (input clock), and CKABF[y] (clock absence flag). CKOUT is a periodic square wave with periods labeled 2, 0, 1, 2, 3, 4, 5, 6, 7, 0. CKINy is a signal that is initially high and then goes low. A bracket on the left labeled 'SPI clock presence timing' groups CKOUT and CKINy. A horizontal double-headed arrow labeled 'max. 8 periods' spans from the first falling edge of CKOUT to the falling edge of CKINy. A dashed line labeled 'restart counting' points to the first falling edge of CKOUT. A dashed line labeled 'last clock change' points to the falling edge of CKINy. CKABF[y] is initially low and goes high at the falling edge of CKINy, labeled 'error reported'. The diagram is labeled MS30767V2.
Timing diagram for SPI clock absence detection. The diagram shows three signals: CKOUT (output clock), CKINy (input clock), and CKABF[y] (clock absence flag). CKOUT is a periodic square wave with periods labeled 2, 0, 1, 2, 3, 4, 5, 6, 7, 0. CKINy is a signal that is initially high and then goes low. A bracket on the left labeled 'SPI clock presence timing' groups CKOUT and CKINy. A horizontal double-headed arrow labeled 'max. 8 periods' spans from the first falling edge of CKOUT to the falling edge of CKINy. A dashed line labeled 'restart counting' points to the first falling edge of CKOUT. A dashed line labeled 'last clock change' points to the falling edge of CKINy. CKABF[y] is initially low and goes high at the falling edge of CKINy, labeled 'error reported'. The diagram is labeled MS30767V2.

If Manchester data format is used, then the clock absence means that the clock recovery is unable to perform from Manchester coded signal. For a correct clock recovery, it is first necessary to receive data with 1 to 0 or 0 to 1 transition (see Figure 234 for Manchester synchronization).

The detection of a clock absence in Manchester coding (after a first successful synchronization) is based on changes comparison of coded serial data input signal with output clock generation (CKOUT signal). There must be a voltage level change on DATINy pin during 2 periods of CKOUT signal (which is controlled by CKOUTDIV bits in DFSDM_CH0CFGR1 register). This condition also defines the minimum data rate to be able to correctly recover the Manchester coded data and clock signals.

The maximum data rate of Manchester coded data must be less than the CKOUT signal.

So to correctly receive Manchester coded data, the CKOUTDIV divider must be set according the formula:

\[ ((CKOUTDIV + 1) \times T_{SYSCLK}) < T_{Manchester\ clock} < (2 \times CKOUTDIV \times T_{SYSCLK}) \]

A clock absence flag is set (CKABF[y] = 1) and an interrupt can be invoked (if CKABIE=1) in case of an input clock recovery error (see CKABF[7:0] in DFSDM_FLT0ISR register and CKABEN in DFSDM_CHyCFGR1). After a clock absence flag clearing (by CLRCKABF in DFSDM_FLT0ICR register), the clock absence flag is refreshed.

Figure 233. Clock absence timing diagram for Manchester coding

Timing diagram for Manchester coding clock absence detection. The diagram shows five waveforms: CKOUT (output clock), DATINy (input data, with SITP=2 and SITP=3 paths), recovered clock, recovered data, and CKABF[y] (clock absence flag). CKOUT is a square wave with bits 0, 0, 0, 1, 0. DATINy shows Manchester-coded data. The recovered clock is derived from the data transitions. The recovered data shows bits 0, 0, 1, ?, ?. The CKABF[y] flag is low until a clock absence is detected, at which point it goes high, labeled 'error reported'. A 'max. 2 periods' timer is shown starting from the last data change. A 'restart counting' label is present near the third bit of CKOUT.
Timing diagram for Manchester coding clock absence detection. The diagram shows five waveforms: CKOUT (output clock), DATINy (input data, with SITP=2 and SITP=3 paths), recovered clock, recovered data, and CKABF[y] (clock absence flag). CKOUT is a square wave with bits 0, 0, 0, 1, 0. DATINy shows Manchester-coded data. The recovered clock is derived from the data transitions. The recovered data shows bits 0, 0, 1, ?, ?. The CKABF[y] flag is low until a clock absence is detected, at which point it goes high, labeled 'error reported'. A 'max. 2 periods' timer is shown starting from the last data change. A 'restart counting' label is present near the third bit of CKOUT.

Manchester/SPI code synchronization

The Manchester coded stream must be synchronized the first time after enabling the channel (CHEN=1 in DFSDM_CHyCFGR1 register). The synchronization ends when a data transition from 0 to 1 or from 1 to 0 (to be able to detect valid data edge) is received. The end of the synchronization can be checked by polling CKABF[y]=0 for a given channel after it has been cleared by CLRCKABF[y] in DFSDM_FLT0ICR, following the software sequence detailed hereafter:

CKABF[y] flag is cleared by setting CLRCKABF[y] bit. If channel y is not yet synchronized the hardware immediately set the CKABF[y] flag. Software is then reading back the CKABF[y] flag and if it is set then perform again clearing of this flag by setting CLRCKABF[y] bit. This software sequence (polling of CKABF[y] flag) continues until CKABF[y] flag is set (signalizing that Manchester stream is synchronized). To be able to synchronize/receive Manchester coded data the CKOUTDIV divider (in DFSDM_CH0CFGR1 register) must be set with respect to expected Manchester data rate according the formula below.

\[ ((CKOUTDIV + 1) \times T_{\text{SYSCLK}}) < T_{\text{Manchester clock}} < (2 \times CKOUTDIV \times T_{\text{SYSCLK}}) \]

SPI coded stream is synchronized after first detection of clock input signal (valid rising/falling edge).

Note: When the transceiver is not yet synchronized, the clock absence flag is set and cannot be cleared by CLRCKABF[y] bit (in DFSDM_FLT0ICR register).

Figure 234. First conversion for Manchester coding (Manchester synchronization)

Timing diagram for Manchester coding synchronization showing DATINy, recovered clock, data from modulator, CHEN, first conversion start trigger, recovered data, and CKABF[y] signals.

The figure is a timing diagram illustrating the first conversion for Manchester coding. It consists of several signal traces:

Key timing points and annotations:

Reference code: MS30769V2

Timing diagram for Manchester coding synchronization showing DATINy, recovered clock, data from modulator, CHEN, first conversion start trigger, recovered data, and CKABF[y] signals.

External serial clock frequency measurement

The measuring of a channel serial clock input frequency provides a real data rate from an external \( \Sigma\Delta \) modulator, which is important for application purposes.

An external serial clock input frequency can be measured by a timer counting DFSDM clocks ( \( f_{\text{DFSDMCLK}} \) ) during one conversion duration. The counting starts at the first input data clock after a conversion trigger (regular or injected) and finishes by last input data clock before conversion ends (end of conversion flag is set). Each conversion duration (time between first serial sample and last serial sample) is updated in counter CNVCNT[27:0] in register DFSDM_FLTxCNVTIMR when the conversion finishes (JEOCF=1 or REOCF=1). The user can then compute the data rate according to the digital filter settings (FORD, FOSR, IOSR, FAST). The external serial frequency measurement is stopped only if the filter is bypassed (FOSR=0, only integrator is active, CNVCNT[27:0]=0 in DFSDM_FLTxCNVTIMR register).

In case of parallel data input ( Section 30.4.6: Parallel data inputs ) the measured frequency is the average input data rate during one conversion.

Note: When conversion is interrupted (e.g. by disabling/enabling the selected channel) the interruption time is also counted in CNVCNT[27:0]. Therefore it is recommended to not interrupt the conversion for correct conversion duration result.

Conversion times:

injected conversion or regular conversion with FAST = 0 (or first conversion if FAST=1):

for Sinc x filters (x=1..5):

\[ t = \text{CNVCNT}/f_{\text{DFSDMCLK}} = [F_{\text{OSR}} * (I_{\text{OSR}}-1 + F_{\text{ORD}}) + F_{\text{ORD}}] / f_{\text{CKIN}} \]

for FastSinc filter:

\[ t = \text{CNVCNT}/f_{\text{DFSDMCLK}} = [F_{\text{OSR}} * (I_{\text{OSR}}-1 + 4) + 2] / f_{\text{CKIN}} \]

regular conversion with FAST = 1 (except first conversion):

for Sinc x and FastSinc filters:

\[ t = \text{CNVCNT}/f_{\text{DFSDMCLK}} = [F_{\text{OSR}} * I_{\text{OSR}}] / f_{\text{CKIN}} \]

in case if \( F_{\text{OSR}} = F_{\text{OSR}}[9:0]+1 = 1 \) (filter bypassed, active only integrator):

\[ t = I_{\text{OSR}} / f_{\text{CKIN}} \text{ (} \dots \text{ but CNVCNT=0)} \]

where:

Channel offset setting

Each channel has its own offset setting (in register) which is finally subtracted from each conversion result (injected or regular) from a given channel. Offset correction is performed after the data right bit shift. The offset is stored as a 24-bit signed value in OFFSET[23:0] field in DFSDM_CHyCFGR2 register.

Data right bit shift

To have the result aligned to a 24-bit value, each channel defines a number of right bit shifts which will be applied on each conversion result (injected or regular) from a given channel. The data bit shift number is stored in DTRBS[4:0] bits in DFSDM_CHyCFGR2 register.

The right bit-shift is rounding the result to nearest integer value. The sign of shifted result is maintained, in order to have valid 24-bit signed format of result data.

30.4.5 Configuring the input serial interface

The following parameters must be configured for the input serial interface:

30.4.6 Parallel data inputs

Each input channel provides a register for 16-bit parallel data input (besides serial data input). Each 16-bit parallel input can be sourced from internal data sources only:

The selection for using serial or parallel data input for a given channel is done by field DATMPX[1:0] of DFSDM_CHyCFGR1 register. In DATMPX[1:0] is also defined the parallel data source: internal ADC or direct write by CPU/DMA.

Each channel contains a 32-bit data input register DFSDM_CHyDATINR in which it can be written a 16-bit data. Data are in 16-bit signed format. Those data can be used as input to the digital filter which is accepting 16-bit parallel data.

If serial data input is selected (DATMPX[1:0] = 0), the DFSDM_CHyDATINR register is write protected.

Input from internal ADC

In case of ADC data parallel input (DATMPX[1:0]=1) the ADC[y+1] result is assigned to channel y input (ADC1 is filling DFSDM_CHDATIN0R register, ADC2 is filling DFSDM_CHDATIN1R register, ... , ADC8 is filling DFSDM_CHDATIN7R register). End of conversion event from ADC[y+1] causes update of channel y data (parallel data from ADC[y+1] are put as next sample to digital filter). Data from ADC[y+1] is written into DFSDM_CHyDATINR register (field INDAT0[15:0]) when end of conversion event occurred.

The setting of data packing mode (DATPACK[1:0] in the DFSDM_CHyCFGR1 register) has no effect in case of ADC data input.

Note: Extension of ADC specification: in case the internal ADC is configured in interleaved mode (e.g. ADC1 together with ADC2 - see ADC specification) then each result from ADC1 or from ADC2 will come to the same 16-bit bus - to the bus of ADC1 - which is coming into DFSDM channel 0 (fixed connection). So there will be double input data rate into DFSDM channel 0 (even samples come from ADC1 and odd samples from ADC2). Channel 1 associated with ADC2 will be free.

Input from memory (direct CPU/DMA write)

The direct data write into DFSDM_CHyDATINR register by CPU or DMA (DATMPX[1:0]=2) can be used as data input in order to process digital data streams from memory or peripherals.

Data can be written by CPU or DMA into DFSDM_CHyDATINR register:

1. CPU data write:

Input data are written directly by CPU into DFSDM_CHyDATINR register.

2. DMA data write:

The DMA should be configured in memory-to-memory transfer mode to transfer data from memory buffer into DFSDM_CHyDATINR register. The destination memory address is the address of DFSDM_CHyDATINR register. Data are transferred at DMA transfer speed from memory to DFSDM parallel input.

This DMA transfer is different from DMA used to read DFSDM conversion results. Both DMA can be used at the same time - first DMA (configured as memory-to-memory transfer) for input data writings and second DMA (configured as peripheral-to-memory transfer) for data results reading.

The accesses to DFSDM_CHyDATINR can be either 16-bit or 32-bit wide, allowing to load respectively one or two samples in one write operation. 32-bit input data register (DFSDM_CHyDATINR) can be filled with one or two 16-bit data samples, depending on the data packing operation mode defined in field DATPACK[1:0] of DFSDM_CHyCFGR1 register:

1. Standard mode (DATPACK[1:0]=0):

Only one sample is stored in field INDAT0[15:0] of DFSDM_CHyDATINR register which is used as input data for channel y. The upper 16 bits (INDAT1[15:0]) are ignored and write protected. The digital filter must perform one input sampling (from INDAT0[15:0]) to empty data register after it has been filled by CPU/DMA. This mode is used together with 16-bit CPU/DMA access to DFSDM_CHyDATINR register to load one sample per write operation.

2. Interleaved mode (DATPACK[1:0]=1):

DFSDM_CHyDATINR register is used as a two sample buffer. The first sample is stored in INDAT0[15:0] and the second sample is stored in INDAT1[15:0]. The digital filter must perform two input samplings from channel y to empty DFSDM_CHyDATINR register. This mode is used together with 32-bit CPU/DMA access to DFSDM_CHyDATINR register to load two samples per write operation.

3. Dual mode (DATPACK[1:0]=2):

Two samples are written into DFSDM_CHyDATINR register. The data INDAT0[15:0] is for channel y, the data in INDAT1[15:0] is for channel y+1. The data in INDAT1[15:0] is automatically copied INDAT0[15:0] of the following (y+1) channel data register (DFSDM_CH[y+1]DATINR). The digital filters must perform two samplings - one from

channel y and one from channel (y+1) - in order to empty DFSDM_CHyDATINR registers.

Dual mode setting (DATPACK[1:0]=2) is available only on even channel numbers (y = 0, 2, 4, 6). If odd channel (y = 1, 3, 5, 7) is set to Dual mode then both INDAT0[15:0] and INDAT1[15:0] parts are write protected for this channel. If even channel is set to Dual mode then the following odd channel must be set into Standard mode (DATPACK[1:0]=0) for correct cooperation with even channels.

See Figure 235 for DFSDM_CHyDATINR registers data modes and assignments of data samples to channels.

Figure 235. DFSDM_CHyDATINR registers operation modes and assignment

Standard modeInterleaved modeDual mode
3116 15 03116 15 03116 15 0
UnusedCh0 (sample 0)Ch0 (sample 1)Ch0 (sample 0)Ch1 (sample 0)Ch0 (sample 0)y = 0
UnusedCh1 (sample 0)Ch1 (sample 1)Ch1 (sample 0)UnusedCh1 (sample 0)y = 1
UnusedCh2 (sample 0)Ch2 (sample 1)Ch2 (sample 0)Ch3 (sample 0)Ch2 (sample 0)y = 2
UnusedCh3 (sample 0)Ch3 (sample 1)Ch3 (sample 0)UnusedCh3 (sample 0)y = 3
UnusedCh4 (sample 0)Ch4 (sample 1)Ch4 (sample 0)Ch5 (sample 0)Ch4 (sample 0)y = 4
UnusedCh5 (sample 0)Ch5 (sample 1)Ch5 (sample 0)UnusedCh5 (sample 0)y = 5
UnusedCh6 (sample 0)Ch6 (sample 1)Ch6 (sample 0)Ch7 (sample 0)Ch6 (sample 0)y = 6
UnusedCh7 (sample 0)Ch7 (sample 1)Ch7 (sample 0)UnusedCh7 (sample 0)y = 7

MS35354V3

The write into DFSDM_CHyDATINR register to load one or two samples must be performed after the selected input channel (channel y) is enabled for data collection (starting conversion for channel y). Otherwise written data are lost for next processing.

For example: for single conversion and interleaved mode, do not start writing pair of data samples into DFSDM_CHyDATINR before the single conversion is started (any data present in the DFSDM_CHyDATINR before starting a conversion is discarded).

30.4.7 Channel selection

There are 8 multiplexed channels which can be selected for conversion using the injected channel group and/or using the regular channel.

The injected channel group is a selection of any or all of the 8 channels. JCHG[7:0] in the DFSDM_FLTxJCHGR register selects the channels of the injected group, where JCHG[y]=1 means that channel y is selected.

Injected conversions can operate in scan mode (JSCAN=1) or single mode (JSCAN=0). In scan mode, each of the selected channels is converted, one after another. The lowest channel (channel 0, if selected) is converted first, followed immediately by the next higher channel until all the channels selected by JCHG[7:0] have been converted. In single mode (JSCAN=0), only one channel from the selected channels is converted, and the channel selection is moved to the next channel. Writing to JCHG[7:0] if JSCAN=0 resets the channel selection to the lowest selected channel.

Injected conversions can be launched by software or by a trigger. They are never interrupted by regular conversions.

The regular channel is a selection of just one of the 8 channels. RCH[2:0] in the DFSDM_FLTxCR1 register indicates the selected channel.

Regular conversions can be launched only by software (not by a trigger). A sequence of continuous regular conversions is temporarily interrupted when an injected conversion is requested.

Performing a conversion on a disabled channel (CHEN=0 in DFSDM_CHyCFGR1 register) causes that the conversion will never end - because no input data is provided (with no clock signal). In this case, it is necessary to enable a given channel (CHEN=1 in DFSDM_CHyCFGR1 register) or to stop the conversion by DFEN=0 in DFSDM_FLTxCR1 register.

30.4.8 Digital filter configuration

DFSDM contains a Sinc x type digital filter implementation. This Sinc x filter performs an input digital data stream filtering, which results in decreasing the output data rate (decimation) and increasing the output data resolution. The Sinc x digital filter is configurable in order to reach the required output data rates and required output data resolution. The configurable parameters are:

The filter has the following transfer function (impulse response in H domain):

Figure 236. Example: Sinc 3 filter response Figure 236. Example: Sinc3 filter response. A graph showing Gain (dB) on the y-axis (from -140 to 0) versus Normalized frequency (fin/fDATA) on the x-axis (from 0 to 5). The response shows a main lobe starting at 0 dB at 0 normalized frequency, with nulls at 1, 2, 3, 4, and 5. The gain decreases as frequency increases, with secondary lobes peaking at approximately -60 dB, -80 dB, -100 dB, and -120 dB between the nulls. The text MS30770V1 is visible in the bottom right corner of the plot area.
Figure 236. Example: Sinc3 filter response. A graph showing Gain (dB) on the y-axis (from -140 to 0) versus Normalized frequency (fin/fDATA) on the x-axis (from 0 to 5). The response shows a main lobe starting at 0 dB at 0 normalized frequency, with nulls at 1, 2, 3, 4, and 5. The gain decreases as frequency increases, with secondary lobes peaking at approximately -60 dB, -80 dB, -100 dB, and -120 dB between the nulls. The text MS30770V1 is visible in the bottom right corner of the plot area.

Table 252. Filter maximum output resolution (peak data values from filter output) for some FOSR values

FOSRSinc 1Sinc 2FastSincSinc 3Sinc 4Sinc 5
x+/- x+/- x 2+/- 2x 2+/- x 3+/- x 4+/- x 5
4+/- 4+/- 16+/- 32+/- 64+/- 256+/- 1024
8+/- 8+/- 64+/- 128+/- 512+/- 4096-
32+/- 32+/- 1024+/- 2048+/- 32768+/- 1048576+/- 33554432
64+/- 64+/- 4096+/- 8192+/- 262144+/- 16777216+/- 1073741824
128+/- 128+/- 16384+/- 32768+/- 2097152+/- 268435456
256+/- 256+/- 65536+/- 131072+/- 16777216Result can overflow on full scale input (> 32-bit signed integer)
1024+/- 1024+/- 1048576+/- 2097152+/- 1073741824

For more information about Sinc filter type properties and usage, it is recommended to study the theory about digital filters (more resources can be downloaded from internet).

30.4.9 Integrator unit

The integrator performs additional decimation and a resolution increase of data coming from the digital filter. The integrator simply performs the sum of data from a digital filter for a given number of data samples from a filter.

The integrator oversampling ratio parameter defines how many data counts will be summed to one data output from the integrator. IOSR can be set in the range 1-256 (see IOSR[7:0] bits description in DFSDM_FLTxFCR register).

Table 253. Integrator maximum output resolution (peak data values from integrator output) for some IOSR values and FOSR = 256 and Sinc 3 filter type (largest data)
IOSRSinc 1Sinc 2FastSincSinc 3Sinc 4Sinc 5
x+/- FOSR. x+/- FOSR 2 . x+/- 2.FOSR 2 . x+/- FOSR 3 . x+/- FOSR 4 . x+/- FOSR 5 . x
4---+/- 67 108 864--
32---+/- 536 870 912--
128---+/- 2 147 483 648--
256---+/- 2 32--

30.4.10 Analog watchdog

The analog watchdog purpose is to trigger an external signal (break or interrupt) when an analog signal reaches or crosses given maximum and minimum threshold values. An interrupt/event/break generation can then be invoked.

Each analog watchdog will supervise serial data receiver outputs (after the analog watchdog filter on each channel) or data output register (current injected or regular conversion result) according to AWFSEL bit setting (in DFSDM_FLTxCR1 register). The input channels to be monitored or not by the analog watchdog x will be selected by AWDCH[7:0] in DFSDM_FLTxCR2 register.

Analog watchdog conversions on input channels are independent from standard conversions. In this case, the analog watchdog uses its own filters and signal processing on each input channel independently from the main injected or regular conversions. Analog watchdog conversions are performed in a continuous mode on the selected input channels in order to watch channels also when main injected or regular conversions are paused (RCIP = 0, JCIP = 0).

There are high and low threshold registers which are compared with given data values (set by AWHT[23:0] bits in DFSDM_FLTxAWHTR register and by AWLT[23:0] bits in DFSDM_FLTxAWLTR register).

There are 2 options for comparing the threshold registers with the data values

In case of input channels monitoring (AWFSEL=1), the data for comparison to threshold is taken from channels selected by AWDCH[7:0] field (DFSDM_FLTxCR2 register). Each of the selected channels filter result is compared to one threshold value pair (AWHT[23:0] / AWLT[23:0]). In this case, only higher 16 bits (AWHT[23:8] / AWLT[23:8]) define the 16-bit threshold compared with the analog watchdog filter output because data coming from the analog watchdog filter is up to a 16-bit resolution. Bits AWHT[7:0] / AWLT[7:0] are not taken into comparison in this case (AWFSEL=1).

Parameters of the analog watchdog filter configuration for each input channel are set in DFSDM_CHyAWSCDR register (filter order AWFORR[1:0] and filter oversampling ratio AWFOISR[4:0]).

Each input channel has its own comparator which compares the analog watchdog data (from analog watchdog filter) with analog watchdog threshold values (AWHT/AWLT). When several channels are selected (field AWDCH[7:0] field of DFSDM_FLTxCR2 register), several comparison requests may be received simultaneously. In this case, the channel request with the lowest number is managed first and then continuing to higher selected channels. For each channel, the result can be recorded in a separate flag (fields AWHTF[7:0], AWLTF[7:0] of DFSDM_FLTxAWSR register). Each channel request is executed in 8 DFSDM clock cycles. So, the bandwidth from each channel is limited to 8 DFSDM clock cycles (if AWDCH[7:0] = 0xFF). Because the maximum input channel sampling clock frequency is the DFSDM clock frequency divided by 4, the configuration AWFOISR = 0 (analog watchdog filter is bypassed) cannot be used for analog watchdog feature at this input clock speed. Therefore user must properly configure the number of watched channels and analog watchdog filter parameters with respect to input sampling clock speed and DFSDM frequency.

Analog watchdog filter data for given channel y is available for reading by firmware on field WDATA[15:0] in DFSDM_CHyWDATR register. That analog watchdog filter data is converted continuously (if CHEN=1 in DFSDM_CHyCFGR1 register) with the data rate given by the analog watchdog filter setting and the channel input clock frequency.

The analog watchdog filter conversion works like a regular Fast Continuous Conversion without the integrator. The number of serial samples needed for one result from analog watchdog filter output (at channel input clock frequency \( f_{CKIN} \) ):

first conversion:

for Sinc x filters (x=1..5): number of samples = \( [F_{OSR} * F_{ORD} + F_{ORD} + 1] \)

for FastSinc filter: number of samples = \( [F_{OSR} * 4 + 2 + 1] \)

next conversions:

for Sinc x and FastSinc filters: number of samples = \( [F_{OSR} * I_{OSR}] \)

where:

\( F_{OSR} \) ..... filter oversampling ratio: \( F_{OSR} = AWFOSR[4:0]+1 \) (see DFSDM_CHyAWSCDR register)

\( F_{ORD} \) ..... the filter order: \( F_{ORD} = AWFORD[1:0] \) (see DFSDM_CHyAWSCDR register)

In case of output data register monitoring (AWFSEL=0), the comparison is done after a right bit shift and an offset correction of final data (see OFFSET[23:0] and DTRBS[4:0] fields in DFSDM_CHyCFGR2 register). A comparison is performed after each injected or regular end of conversion for the channels selected by AWDCH[7:0] field (in DFSDM_FLTxCR2 register).

The status of an analog watchdog event is signalized in DFSDM_FLTxAWSR register where a given event is latched. AWHTF[y]=1 flag signalizes crossing AWHT[23:0] value on channel y. AWLTF[y]=1 flag signalizes crossing AWLT[23:0] value on channel y. Latched events in DFSDM_FLTxAWSR register are cleared by writing '1' into the corresponding clearing bit CLRAWHTF[y] or CLRAWLTF[y] in DFSDM_FLTxAWCFR register.

The global status of an analog watchdog is signalized by the AWDF flag bit in DFSDM_FLTxISR register (it is used for the fast detection of an interrupt source). AWDF=1 signalizes that at least one watchdog occurred (AWHTF[y]=1 or AWLTF[y]=1 for at least one channel). AWDF bit is cleared when all AWHTF[7:0] and AWLTF[7:0] are cleared.

An analog watchdog event can be assigned to break output signal. There are four break outputs to be assigned to a high or low threshold crossing event (dfsdm_break[3:0]). The break signal assignment to a given analog watchdog event is done by BKAWH[3:0] and BKAWL[3:0] fields in DFSDM_FLTxAWHTR and DFSDM_FLTxAWLTR register.

30.4.11 Short-circuit detector

The purpose of a short-circuit detector is to signalize with a very fast response time if an analog signal reached saturated values (out of full scale ranges) and remained on this value given time. This behavior can detect short-circuit or open circuit errors (e.g. overcurrent or overvoltage). An interrupt/event/break generation can be invoked.

Input data into a short-circuit detector is taken from channel transceiver outputs.

There is an upcounting counter on each input channel which is counting consecutive 0's or 1's on serial data receiver outputs. A counter is restarted if there is a change in the data stream received - 1 to 0 or 0 to 1 change of data signal. If this counter reaches a short-circuit threshold register value (SCDT[7:0] bits in DFSDM_CHyAWSCDR register), then a short-

circuit event is invoked. Each input channel has its short-circuit detector. Any channel can be selected to be continuously monitored by setting the SCDEN bit (in DFSDM_CHyCFGR1 register) and it has its own short-circuit detector settings (threshold value in SCDT[7:0] bits, status bit SCDF[7:0], status clearing bits CLRSCDF[7:0]). Status flag SCDF[y] is cleared also by hardware when corresponding channel y is disabled (CHEN[y] = 0).

On each channel, a short-circuit detector event can be assigned to break output signal dfsdm_break[3:0]. There are four break outputs to be assigned to a short-circuit detector event. The break signal assignment to a given channel short-circuit detector event is done by BKSCD[3:0] field in DFSDM_CHyAWSCDR register.

Short circuit detector cannot be used in case of parallel input data channel selection (DATMPX[1:0] ≠ 0 in DFSDM_CHyCFGR1 register).

Four break outputs are totally available (shared with the analog watchdog function).

30.4.12 Extreme detector

The purpose of an extremes detector is to collect the minimum and maximum values of final output data words (peak to peak values).

If the output data word is higher than the value stored in the extremes detector maximum register (EXMAX[23:0] bits in DFSDM_FLTxEXMAX register), then this register is updated with the current output data word value and the channel from which the data is stored is in EXMAXCH[2:0] bits (in DFSDM_FLTxEXMAX register) .

If the output data word is lower than the value stored in the extremes detector minimum register (EXMIN[23:0] bits in DFSDM_FLTxEXMIN register), then this register is updated with the current output data word value and the channel from which the data is stored is in EXMINCH[2:0] bits (in DFSDM_FLTxEXMIN register).

The minimum and maximum register values can be refreshed by software (by reading given DFSDM_FLTxEXMAX or DFSDM_FLTxEXMIN register). After refresh, the extremes detector minimum data register DFSDM_FLTxEXMIN is filled with 0x7FFFFFF (maximum positive value) and the extremes detector maximum register DFSDM_FLTxEXMAX is filled with 0x800000 (minimum negative value).

The extremes detector performs a comparison after a right bit shift and an offset data correction. For each extremes detector, the input channels to be considered into computing the extremes value are selected in EXCH[7:0] bits (in DFSDM_FLTxCR2 register).

30.4.13 Data unit block

The data unit block is the last block of the whole processing path: External \( \Sigma\Delta \) modulators - Serial transceivers - Sinc filter - Integrator - Data unit block.

The output data rate depends on the serial data stream rate, and filter and integrator settings. The maximum output data rate is:

\[ \text{Datarate}[\text{samples / s}] = \frac{f_{\text{CKIN}}}{F_{\text{OSR}} \cdot (I_{\text{OSR}} - 1 + F_{\text{ORD}}) + (F_{\text{ORD}} + 1)} \quad \dots \text{FAST} = 0, \text{Sincx filter} \]

\[ \text{Datarate}[\text{samples / s}] = \frac{f_{\text{CKIN}}}{F_{\text{OSR}} \cdot (I_{\text{OSR}} - 1 + 4) + (2 + 1)} \quad \dots \text{FAST} = 0, \text{FastSinc filter} \]

or

\[ \text{Datarate}[\text{samples / s}] = \frac{f_{\text{CKIN}}}{F_{\text{OSR}} \cdot I_{\text{OSR}}} \quad \dots \text{FAST} = 1 \]

Maximum output data rate in case of parallel data input:

\[ \text{Datarate}[\text{samples / s}] = \frac{f_{\text{DATAIN\_RATE}}}{F_{\text{OSR}} \cdot (I_{\text{OSR}} - 1 + F_{\text{ORD}}) + (F_{\text{ORD}} + 1)} \quad \dots \text{FAST} = 0, \text{ Sincx filter} \]

or

\[ \text{Datarate}[\text{samples / s}] = \frac{f_{\text{DATAIN\_RATE}}}{F_{\text{OSR}} \cdot (I_{\text{OSR}} - 1 + 4) + (2 + 1)} \quad \dots \text{FAST} = 0, \text{ FastSinc filter} \]

or

\[ \text{Datarate}[\text{samples / s}] = \frac{f_{\text{DATAIN\_RATE}}}{F_{\text{OSR}} \cdot I_{\text{OSR}}} \quad \dots \text{FAST}=1 \text{ or any filter bypass case } (F_{\text{OSR}} = 1) \]

where: \( f_{\text{DATAIN\_RATE}} \) ...input data rate from ADC or from CPU/DMA

The right bit-shift of final data is performed in this module because the final data width is 24-bit and data coming from the processing path can be up to 32 bits. This right bit-shift is configurable in the range 0-31 bits for each selected input channel (see DTRBS[4:0] bits in DFSDM_CHyCFGR2 register). The right bit-shift is rounding the result to nearest integer value. The sign of shifted result is maintained - to have valid 24-bit signed format of result data.

In the next step, an offset correction of the result is performed. The offset correction value (OFFSET[23:0] stored in register DFSDM_CHyCFGR2) is subtracted from the output data for a given channel. Data in the OFFSET[23:0] field is set by software by the appropriate calibration routine.

Due to the fact that all operations in digital processing are performed on 32-bit signed registers, the following conditions must be fulfilled not to overflow the result:

\[ \begin{aligned} F_{\text{OSR}}^{\text{FORD}} \cdot I_{\text{OSR}} &\leq 2^{31} && \dots \text{for Sinc}^x \text{ filters, } x = 1..5) \\ 2 \cdot F_{\text{OSR}}^2 \cdot I_{\text{OSR}} &\leq 2^{31} && \dots \text{for FastSinc filter)} \end{aligned} \]

Note: In case of filter and integrator bypass ( \( I_{\text{OSR}}[7:0]=0 \) , \( F_{\text{OSR}}[9:0]=0 \) ), the input data rate ( \( f_{\text{DATAIN\_RATE}} \) ) must be limited to be able to read all output data:
\( f_{\text{DATAIN\_RATE}} \leq f_{\text{APB}} \)
where \( f_{\text{APB}} \) is the bus frequency to which the DFSDM peripheral is connected.

30.4.14 Signed data format

Each DFSDM input serial channel can be connected to one external \( \Sigma\Delta \) modulator. An external \( \Sigma\Delta \) modulator can have 2 differential inputs (positive and negative) which can be used for a differential or single-ended signal measurement.

A \( \Sigma\Delta \) modulator output is always assumed in a signed format (a data stream of zeros and ones from a \( \Sigma\Delta \) modulator represents values -1 and +1).

Signed data format in registers: Data is in a signed format in registers for final output data, analog watchdog, extremes detector, offset correction. The msb of output data word represents the sign of value (two's complement format).

30.4.15 Launching conversions

Injected conversions can be launched using the following methods:

If the scan conversion is enabled (bit JSCAN=1) then, each time an injected conversion is triggered, all of the selected channels in the injected group (JCHG[7:0] bits in DFSDM_FLTxJCHGR register) are converted sequentially, starting with the lowest channel (channel 0, if selected).

If the scan conversion is disabled (bit JSCAN=0) then, each time an injected conversion is triggered, only one of the selected channels in the injected group (JCHG[7:0] bits in DFSDM_FLTxJCHGR register) is converted and the channel selection is then moved to the next selected channel. Writing to the JCHG[7:0] bits when JSCAN=0 sets the channel selection to the lowest selected injected channel.

Only one injected conversion can be ongoing at a given time. Thus, any request to launch an injected conversion is ignored if another request for an injected conversion has already been issued but not yet completed.

Regular conversions can be launched using the following methods:

Only one regular conversion can be pending or ongoing at a given time. Thus, any request to launch a regular conversion is ignored if another request for a regular conversion has already been issued but not yet completed. A regular conversion can be pending if it was interrupted by an injected conversion or if it was started while an injected conversion was in progress. This pending regular conversion is then delayed and is performed when all injected conversion are finished. Any delayed regular conversion is signalized by RPEND bit in DFSDM_FLTxRDATA register.

30.4.16 Continuous and fast continuous modes

Setting RCONT in the DFSDM_FLTxCR1 register causes regular conversions to execute in continuous mode. RCONT=1 means that the channel selected by RCH[2:0] is converted repeatedly after '1' is written to RSWSTART.

The regular conversions executing in continuous mode can be stopped by writing '0' to RCONT. After clearing RCONT, the on-going conversion is stopped immediately.

In continuous mode, the data rate can be increased by setting the FAST bit in the DFSDM_FLTxCR1 register. In this case, the filter does not need to be refilled by new fresh data if converting continuously from one channel because data inside the filter is valid from previously sampled continuous data. The speed increase depends on the chosen filter order. The first conversion in fast mode (FAST=1) after starting a continuous conversion by RSWSTART=1 takes still full time (as when FAST=0), then each subsequent conversion is finished in shorter intervals.

Conversion time in continuous mode:

if FAST = 0 (or first conversion if FAST=1):

for Sinc x filters:

\[ t = \text{CNVCNT}/f_{\text{DFSDMCLK}} = [F_{\text{OSR}} * (I_{\text{OSR}}-1 + F_{\text{ORD}}) + F_{\text{ORD}}] / f_{\text{CKIN}} \]

for FastSinc filter:

\[ t = \text{CNVCNT}/f_{\text{DFSDMCLK}} = [F_{\text{OSR}} * (I_{\text{OSR}}-1 + 4) + 2] / f_{\text{CKIN}} \]

if FAST = 1 (except first conversion):

for Sinc x and FastSinc filters:

\[ t = \text{CNVCNT}/f_{\text{DFSDMCLK}} = [F_{\text{OSR}} * I_{\text{OSR}}] / f_{\text{CKIN}} \]

in case \( F_{\text{OSR}} = F_{\text{OSR}}[9:0]+1 = 1 \) (filter bypassed, only integrator active):

\[ t = I_{\text{OSR}} / f_{\text{CKIN}} \text{ (... but CNVCNT=0)} \]

Continuous mode is not available for injected conversions. Injected conversions can be started by timer trigger to emulate the continuous mode with precise timing.

If a regular continuous conversion is in progress (RCONT=1) and if a write access to DFSDM_FLTxCR1 register requesting regular continuous conversion (RCONT=1) is performed, then regular continuous conversion is restarted from the next conversion cycle (like new regular continuous conversion is applied for new channel selection - even if there is no change in DFSDM_FLTxCR1 register).

30.4.17 Request precedence

An injected conversion has a higher precedence than a regular conversion. A regular conversion which is already in progress is immediately interrupted by the request of an injected conversion; this regular conversion is restarted after the injected conversion finishes.

An injected conversion cannot be launched if another injected conversion is pending or already in progress: any request to launch an injected conversion (either by JSWSTART or by a trigger) is ignored as long as bit JCP is '1' (in the DFSDM_FLTxISR register).

Similarly, a regular conversion cannot be launched if another regular conversion is pending or already in progress: any request to launch a regular conversion (using RSWSTART) is ignored as long as bit RCP is '1' (in the DFSDM_FLTxISR register).

However, if an injected conversion is requested while a regular conversion is already in progress, the regular conversion is immediately stopped and an injected conversion is launched. The regular conversion is then restarted and this delayed restart is signalized in bit RPEND.

Injected conversions have precedence over regular conversions in that a injected conversion can temporarily interrupt a sequence of continuous regular conversions. When

the sequence of injected conversions finishes, the continuous regular conversions start again if RCONT is still set (and RPEND bit will signalize the delayed start on the first regular conversion result).

Precedence also matters when actions are initiated by the same write to DFSDM, or if multiple actions are pending at the end of another action. For example, suppose that, while an injected conversion is in process (JCIP=1), a single write operation to DFSDM_FLTxCR1 writes '1' to RSWSTART, requesting a regular conversion. When the injected sequence finishes, the precedence dictates that the regular conversion is performed next and its delayed start is signalized in RPEND bit.

30.4.18 Power optimization in run mode

In order to reduce the consumption, the DFSDM filter and integrator are automatically put into idle when not used by conversions (RCIP=0, JCIP=0).

30.5 DFSDM interrupts

In order to increase the CPU performance, a set of interrupts related to the CPU event occurrence has been implemented:

Table 254. DFSDM interrupt requests

Interrupt eventEvent flagEvent/Interrupt clearing methodInterrupt enable control bit
End of injected conversionJEOCFreading DFSDM_FLTxJDATARJEOCIE
End of regular conversionREOCFreading DFSDM_FLTxRDATARREOCIE
Injected data overrunJOVRFwriting CLRJOVRF = 1JOVRIE
Regular data overrunROVRFwriting CLRROVRF = 1ROVRIE
Analog watchdogAWDF,
AWHTF[7:0],
AWLTF[7:0]
writing CLRAWHTF[7:0] = 1
writing CLRAWLTF[7:0] = 1
AWDIE,
(AWDCH[7:0])
short-circuit detectorSCDF[7:0]writing CLRSCDF[7:0] = 1SCDIE,
(SCDEN)
Channel clock absenceCKABF[7:0]writing CLRCKABF[7:0] = 1CKABIE,
(CKABEN)

30.6 DFSDM DMA transfer

To decrease the CPU intervention, conversions can be transferred into memory using a DMA transfer. A DMA transfer for injected conversions is enabled by setting bit JDMAEN=1 in DFSDM_FLTxCR1 register. A DMA transfer for regular conversions is enabled by setting bit RDMAEN=1 in DFSDM_FLTxCR1 register.

Note: With a DMA transfer, the interrupt flag is automatically cleared at the end of the injected or regular conversion (JEOCF or REOCF bit in DFSDM_FLTxISR register) because DMA is reading DFSDM_FLTxJDATAR or DFSDM_FLTxRDATAR register.

30.7 DFSDM channel y registers (y=0..7)

Word access (32-bit) must be used for registers write access except DFSDM_CHyDATINR register. Write access to DFSDM_CHyDATINR register can be either word access (32-bit) or half-word access (16-bit).

30.7.1 DFSDM channel y configuration register (DFSDM_CHyCFGR1)

This register specifies the parameters used by channel y.

Address offset: 0x00 + 0x20 * y, (y = 0 to 7)

Reset value: 0x0000 0000

31302928272625242322212019181716
DFSDM ENCKOUT SRCRes.Res.Res.Res.Res.Res.CKOUTDIV[7:0]
rwrwrwrwrwrwrwrwrwrw
1514131211109876543210
DATPACK[1:0]DATMPX[1:0]Res.Res.Res.CHIN SELCHENCKAB ENSCDENRes.SPICKSEL[1:0]SITP[1:0]
rwrwrwrwrwrwrwrwrwrwrwrw

Bit 31 DFSDMEN : Global enable for DFSDM interface

0: DFSDM interface disabled

1: DFSDM interface enabled

If DFSDM interface is enabled, then it is started to operate according to enabled y channels and enabled x filters settings (CHEN bit in DFSDM_CHyCFGR1 and DFEN bit in DFSDM_FLTxCR1).

Data cleared by setting DFSDMEN=0:

–all registers DFSDM_FLTxISR are set to reset state (x = 0..3)

–all registers DFSDM_FLTxAWSR are set to reset state (x = 0..3)

Note: DFSDMEN is present only in DFSDM_CH0CFGR1 register (channel y=0)

Bit 30 CKOUTSRC : Output serial clock source selection

0: Source for output clock is from system clock

1: Source for output clock is from audio clock

This value can be modified only when DFSDMEN=0 (in DFSDM_CH0CFGR1 register).

Note: CKOUTSRC is present only in DFSDM_CH0CFGR1 register (channel y=0)

Bits 29:24 Reserved, must be kept at reset value.

Bits 23:16 CKOUTDIV[7:0] : Output serial clock divider

CKOUTDIV also defines the threshold for a clock absence detection.
This value can only be modified when DFSDMEN=0 (in DFSDM_CH0CFGR1 register).
If DFSDMEN=0 (in DFSDM_CH0CFGR1 register) then CKOUT signal is set to low state (setting is performed one DFSDM clock cycle after DFSDMEN=0).

Note: CKOUTDIV is present only in DFSDM_CH0CFGR1 register (channel y=0)

Bits 15:14 DATPACK[1:0] : Data packing mode in DFSDM_CHyDATINR register.

This value can be modified only when CHEN=0 (in DFSDM_CHyCFGR1 register).

Bits 13:12 DATMPX[1:0] : Input data multiplexer for channel y

This value can be modified only when CHEN=0 (in DFSDM_CHyCFGR1 register).

Bits 11:9 Reserved, must be kept at reset value.

Bit 8 CHINSEL : Channel inputs selection

This value can be modified only when CHEN=0 (in DFSDM_CHyCFGR1 register).

Bit 7 CHEN : Channel y enable

If channel y is enabled, then serial data receiving is started according to the given channel setting.

30.7.2 DFSDM channel y configuration register (DFSDM_CHyCFGR2)

This register specifies the parameters used by channel y.

Address offset: 0x04 + 0x20 * y, (y = 0 to 7)

Reset value: 0x0000 0000

31302928272625242322212019181716
OFFSET[23:8]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
OFFSET[7:0]DTRBS[4:0]Res.Res.Res.
rwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:8 OFFSET[23:0] : 24-bit calibration offset for channel y

For channel y, OFFSET is applied to the results of each conversion from this channel.

This value is set by software.

Bits 7:3 DTRBS[4:0] : Data right bit-shift for channel y

0-31: Defines the shift of the data result coming from the integrator - how many bit shifts to the right will be performed to have final results. Bit-shift is performed before offset correction. The data shift is rounding the result to nearest integer value. The sign of shifted result is maintained (to have valid 24-bit signed format of result data).

This value can be modified only when CHEN=0 (in DFSDM_CHyCFGR1 register).

Bits 2:0 Reserved, must be kept at reset value.

30.7.3 DFSDM channel y analog watchdog and short-circuit detector register (DFSDM_CHyAWSCDR)

Short-circuit detector and analog watchdog settings for channel y.

Address offset: 0x08 + 0x20 * y, (y = 0 to 7)

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.AWFORD[1:0]Res.AWFOSR[4:0]
rwrwrwrwrwrwrw
1514131211109876543210
BKSCD[3:0]Res.Res.Res.Res.SCDT[7:0]
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:24 Reserved, must be kept at reset value.

Bits 23:22 AWFORD[1:0] : Analog watchdog Sinc filter order on channel y

0: FastSinc filter type

1: Sinc 1 filter type

2: Sinc 2 filter type

3: Sinc 3 filter type

Sinc x filter type transfer function:

\[ H(z) = \left( \frac{1 - z^{-FOSR}}{1 - z^{-1}} \right)^x \]

FastSinc filter type transfer function:

\[ H(z) = \left( \frac{1 - z^{-FOSR}}{1 - z^{-1}} \right)^2 \cdot (1 + z^{-(2 \cdot FOSR)}) \]

This bit can be modified only when CHEN=0 (in DFSDM_CHyCFGR1 register).

Bit 21 Reserved, must be kept at reset value.

Bits 20:16 AWFOSR[4:0] : Analog watchdog filter oversampling ratio (decimation rate) on channel y

0 - 31: Defines the length of the Sinc type filter in the range 1 - 32 (AWFOSR + 1). This number is also the decimation ratio of the analog data rate.

This bit can be modified only when CHEN=0 (in DFSDM_CHyCFGR1 register).

Note: If AWFOSR = 0 then the filter has no effect (filter bypass).

Bits 15:12 BKSCD[3:0] : Break signal assignment for short-circuit detector on channel y

BKSCD[i] = 0: Break i signal not assigned to short-circuit detector on channel y

BKSCD[i] = 1: Break i signal assigned to short-circuit detector on channel y

Bits 11:8 Reserved, must be kept at reset value.

Bits 7:0 SCDT[7:0] : short-circuit detector threshold for channel y

These bits are written by software to define the threshold counter for the short-circuit detector. If this value is reached, then a short-circuit detector event occurs on a given channel.

30.7.4 DFSDM channel y watchdog filter data register (DFSDM_CHyWDATR)

This register contains the data resulting from the analog watchdog filter associated to the input channel y.

Address offset: \( 0x0C + 0x20 \times y \) , (y = 0 to 7)

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
WDATA[15:0]
rrrrrrrrrrrrrrrr

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:0 WDATA[15:0] : Input channel y watchdog data

Data converted by the analog watchdog filter for input channel y. This data is continuously converted (no trigger) for this channel, with a limited resolution (OSR=1..32/sinc order = 1..3).

30.7.5 DFSDM channel y data input register (DFSDM_CHyDATINR)

This register contains 16-bit input data to be processed by DFSDM filter module. Write access can be either word access (32-bit) or half-word access (16-bit).

Address offset: \( 0x10 + 0x20 \times y \) , (y = 0 to 7)

Reset value: 0x0000 0000

31302928272625242322212019181716
INDAT1[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
INDAT0[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:16 INDAT1[15:0] : Input data for channel y or channel y+1

Input parallel channel data to be processed by the digital filter if DATMPX[1:0]=1 or DATMPX[1:0]=2. Data can be written by CPU/DMA (if DATMPX[1:0]=2) or directly by internal ADC (if DATMPX[1:0]=1).

If DATPACK[1:0]=0 (standard mode)

INDAT0[15:0] is write protected (not used for input sample).

If DATPACK[1:0]=1 (interleaved mode)

Second channel y data sample is stored into INDAT1[15:0]. First channel y data sample is stored into INDAT0[15:0]. Both samples are read sequentially by DFSDM_FLTx filter as two channel y data samples.

If DATPACK[1:0]=2 (dual mode).

For even y channels: sample in INDAT1[15:0] is automatically copied into INDAT0[15:0] of channel (y+1).

For odd y channels: INDAT1[15:0] is write protected.

See Section 30.4.6: Parallel data inputs for more details.

INDAT0[15:1] is in the 16-bit signed format.

Bits 15:0 INDAT0[15:0] : Input data for channel y

Input parallel channel data to be processed by the digital filter if DATMPX[1:0]=1 or DATMPX[1:0]=2. Data can be written by CPU/DMA (if DATMPX[1:0]=2) or directly by internal ADC (if DATMPX[1:0]=1).

If DATPACK[1:0]=0 (standard mode)

Channel y data sample is stored into INDAT0[15:0].

If DATPACK[1:0]=1 (interleaved mode)

First channel y data sample is stored into INDAT0[15:0]. Second channel y data sample is stored into INDAT1[15:0]. Both samples are read sequentially by DFSDM_FLTx filter as two channel y data samples.

If DATPACK[1:0]=2 (dual mode).

For even y channels: Channel y data sample is stored into INDAT0[15:0].

For odd y channels: INDAT0[15:0] is write protected.

See Section 30.4.6: Parallel data inputs for more details.

INDAT0[15:0] is in the 16-bit signed format.

30.8 DFSDM filter x module registers (x=0..3)

Word access (32-bit) must be used for registers write access except DFSDM_CHyDATINR register.

30.8.1 DFSDM filter x control register 1 (DFSDM_FLTxCR1)

Address offset: 0x100 + 0x80 * x, (x = 0 to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.AWF
SEL
FASTRes.Res.RCH[2:0]Res.Res.RDMA
EN
Res.RSYNCRCON
T
RSW
START
rwrwrwrwrwrwrwrwrt_w1Res.
1514131211109876543210
Res.JEXTEN[1:0]JEXTSEL[4:0]Res.Res.JDMA
EN
JSCANJSYNCRes.JSW
START
DFEN
rwrwrwrwrwrwrwrwrwrwrt_w1rw

Bit 31 Reserved, must be kept at reset value.

Bit 30 AWFSEL : Analog watchdog fast mode select

0: Analog watchdog on data output value (after the digital filter). The comparison is done after offset correction and shift

1: Analog watchdog on channel transceivers value (after watchdog filter)

Bit 29 FAST : Fast conversion mode selection for regular conversions

0: Fast conversion mode disabled

1: Fast conversion mode enabled

When converting a regular conversion in continuous mode, having enabled the fast mode causes each conversion (except the first) to execute faster than in standard mode. This bit has no effect on conversions which are not continuous.

This bit can be modified only when DFEN=0 (DFSDM_FLTxCR1).

if FAST=0 (or first conversion in continuous mode if FAST=1):

\( t = [F_{OSR} * (I_{OSR}-1 + F_{ORD}) + F_{ORD}] / f_{CKIN} \) ..... for Sinc x filters

\( t = [F_{OSR} * (I_{OSR}-1 + 4) + 2] / f_{CKIN} \) ..... for FastSinc filter

if FAST=1 in continuous mode (except first conversion):

\( t = [F_{OSR} * I_{OSR}] / f_{CKIN} \)

in case if \( F_{OSR} = F_{OSR}[9:0]+1 = 1 \) (filter bypassed, active only integrator):

\( t = I_{OSR} / f_{CKIN} \) (... but CNVCNT=0)

where: \( f_{CKIN} \) is the channel input clock frequency (on given channel CKINy pin) or input data rate in case of parallel data input.

Bits 28:27 Reserved, must be kept at reset value.

Bits 26:24 RCH[2:0] : Regular channel selection

0: Channel 0 is selected as the regular channel

1: Channel 1 is selected as the regular channel

...

7: Channel 7 is selected as the regular channel

Writing these bits when RCIP=1 takes effect when the next regular conversion begins. This is especially useful in continuous mode (when RCONT=1). It also affects regular conversions which are pending (due to ongoing injected conversion).

Bits 23:22 Reserved, must be kept at reset value.

Bit 21 RDMAEN : DMA channel enabled to read data for the regular conversion

0: The DMA channel is not enabled to read regular data

1: The DMA channel is enabled to read regular data

This bit can be modified only when DFEN=0 (DFSDM_FLTxCR1).

Bit 20 Reserved, must be kept at reset value.

Bit 19 RSYNC : Launch regular conversion synchronously with DFSDM_FLT0

0: Do not launch a regular conversion synchronously with DFSDM_FLT0

1: Launch a regular conversion in this DFSDM_FLTx at the very moment when a regular conversion is launched in DFSDM_FLT0

This bit can be modified only when DFEN=0 (DFSDM_FLTxCR1).

Bit 18 RCONT : Continuous mode selection for regular conversions

0: The regular channel is converted just once for each conversion request

1: The regular channel is converted repeatedly after each conversion request

Writing '0' to this bit while a continuous regular conversion is already in progress stops the continuous mode immediately.

Bit 17 RSWSTART : Software start of a conversion on the regular channel

0: Writing ‘0’ has no effect

1: Writing ‘1’ makes a request to start a conversion on the regular channel and causes RCIP to become ‘1’. If RCIP=1 already, writing to RSWSTART has no effect. Writing ‘1’ has no effect if RSYNC=1.

This bit is always read as ‘0’.

Bits 16:15 Reserved, must be kept at reset value.

Bits 14:13 JEXTEN[1:0] : Trigger enable and trigger edge selection for injected conversions

00: Trigger detection is disabled

01: Each rising edge on the selected trigger makes a request to launch an injected conversion

10: Each falling edge on the selected trigger makes a request to launch an injected conversion

11: Both rising edges and falling edges on the selected trigger make requests to launch injected conversions

This bit can be modified only when DFEN=0 (DFSDM_FLTxCR1).

Bits 12:8 JEXTSEL[4:0] : Trigger signal selection for launching injected conversions

0x0-0x1F: Trigger inputs selected by the following table (internal or external trigger).

This bit can be modified only when DFEN=0 (DFSDM_FLTxCR1).

Note: synchronous trigger has latency up to one \( f_{DFSDMCLK} \) clock cycle (with deterministic jitter), asynchronous trigger has latency 2-3 \( f_{DFSDMCLK} \) clock cycles (with jitter up to 1 cycle).

DFSDM_FLTx
0x00dfsdm_jtrg0
0x01dfsdm_jtrg1
...
0x1Edfsdm_jtrg30
0x1Fdfsdm_jtrg31

Refer to Table 250: DFSDM triggers connection .

Bits 7:6 Reserved, must be kept at reset value.

Bit 5 JDMAEN : DMA channel enabled to read data for the injected channel group

0: The DMA channel is not enabled to read injected data

1: The DMA channel is enabled to read injected data

This bit can be modified only when DFEN=0 (DFSDM_FLTxCR1).

Bit 4 JSCAN : Scanning conversion mode for injected conversions

0: One channel conversion is performed from the injected channel group and next the selected channel from this group is selected.

1: The series of conversions for the injected group channels is executed, starting over with the lowest selected channel.

This bit can be modified only when DFEN=0 (DFSDM_FLTxCR1).

Writing JCHG if JSCAN=0 resets the channel selection to the lowest selected channel.

Bit 3 JSYNC : Launch an injected conversion synchronously with the DFSDM_FLT0 JSWSTART trigger

0: Do not launch an injected conversion synchronously with DFSDM_FLT0

1: Launch an injected conversion in this DFSDM_FLTx at the very moment when an injected conversion is launched in DFSDM_FLT0 by its JSWSTART trigger

This bit can be modified only when DFEN=0 (DFSDM_FLTxCR1).

Bit 2 Reserved, must be kept at reset value.

Bit 1 JSWSTART : Start a conversion of the injected group of channels

0: Writing '0' has no effect.

1: Writing '1' makes a request to convert the channels in the injected conversion group, causing JCAP to become '1' at the same time. If JCAP=1 already, then writing to JSWSTART has no effect. Writing '1' has no effect if JSYNC=1.

This bit is always read as '0'.

Bit 0 DFEN : DFSDM_FLTx enable

0: DFSDM_FLTx is disabled. All conversions of given DFSDM_FLTx are stopped immediately and all DFSDM_FLTx functions are stopped.

1: DFSDM_FLTx is enabled. If DFSDM_FLTx is enabled, then DFSDM_FLTx starts operating according to its setting.

Data which are cleared by setting DFEN=0:

–register DFSDM_FLTxISR is set to the reset state

–register DFSDM_FLTxAWSR is set to the reset state

30.8.2 DFSDM filter x control register 2 (DFSDM_FLTxCR2)

Address offset: 0x104 + 0x80 * x, (x = 0 to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.AWDCH[7:0]
rwrwrwrwrwrwrwrw
1514131211109876543210
EXCH[7:0]Res.CKABIESCDIEAWDIEROVR IEJOVRI EREOC IEJEOCI E
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:24 Reserved, must be kept at reset value.

Bits 23:16 AWDCH[7:0] : Analog watchdog channel selection

These bits select the input channel to be guarded continuously by the analog watchdog.

AWDCH[y] = 0: Analog watchdog is disabled on channel y

AWDCH[y] = 1: Analog watchdog is enabled on channel y

Bits 15:8 EXCH[7:0] : Extremes detector channel selection

These bits select the input channels to be taken by the Extremes detector.

EXCH[y] = 0: Extremes detector does not accept data from channel y

EXCH[y] = 1: Extremes detector accepts data from channel y

Bit 7 Reserved, must be kept at reset value.

Bit 6 CKABIE : Clock absence interrupt enable

0: Detection of channel input clock absence interrupt is disabled

1: Detection of channel input clock absence interrupt is enabled

Please see the explanation of CKABF[7:0] in DFSDM_FLTxISR.

Note: CKABIE is present only in DFSDM_FLT0CR2 register (filter x=0)

Bit 5 SCDIE : Short-circuit detector interrupt enable

0: short-circuit detector interrupt is disabled

1: short-circuit detector interrupt is enabled

Please see the explanation of SCDF[7:0] in DFSDM_FLTxISR.

Note: SCDIE is present only in DFSDM_FLT0CR2 register (filter x=0)

Bit 4 AWDIE : Analog watchdog interrupt enable

0: Analog watchdog interrupt is disabled

1: Analog watchdog interrupt is enabled

Please see the explanation of AWDF in DFSDM_FLTxISR.

Bit 3 ROVRIE : Regular data overrun interrupt enable

0: Regular data overrun interrupt is disabled

1: Regular data overrun interrupt is enabled

Please see the explanation of ROVRF in DFSDM_FLTxISR.

Bit 2 JOVRIE : Injected data overrun interrupt enable

0: Injected data overrun interrupt is disabled

1: Injected data overrun interrupt is enabled

Please see the explanation of JOVRF in DFSDM_FLTxISR.

Bit 1 REOCIE : Regular end of conversion interrupt enable

0: Regular end of conversion interrupt is disabled

1: Regular end of conversion interrupt is enabled

Please see the explanation of REOCF in DFSDM_FLTxISR.

Bit 0 JEOCIE : Injected end of conversion interrupt enable

0: Injected end of conversion interrupt is disabled

1: Injected end of conversion interrupt is enabled

Please see the explanation of JEOCF in DFSDM_FLTxISR.

30.8.3 DFSDM filter x interrupt and status register (DFSDM_FLTxISR)

Address offset: 0x108 + 0x80 * x, (x = 0 to 3)

Reset value: 0x00FF 0000

31302928272625242322212019181716
SCDF[7:0]CKABF[7:0]
rrrrrrrrrrrrrrrr
1514131211109876543210
Res.RCIPJCIPRes.Res.Res.Res.Res.Res.Res.Res.AWDFROVRFJOVRFREOCFJEOCF
rrrrrrr
Bits 31:24 SCDF[7:0] : short-circuit detector flag

SDCF[y]=0: No short-circuit detector event occurred on channel y

SDCF[y]=1: The short-circuit detector counter reaches, on channel y, the value programmed in the DFSDM_CHyAWSCDR registers

This bit is set by hardware. It can be cleared by software using the corresponding CLRSCDF[y] bit in the DFSDM_FLTxICR register. SCDF[y] is cleared also by hardware when CHEN[y] = 0 (given channel is disabled).

Note: SCDF[7:0] is present only in DFSDM_FLT0ISR register (filter x=0)

Bits 23:16 CKABF[7:0] : Clock absence flag

CKABF[y]=0: Clock signal on channel y is present.

CKABF[y]=1: Clock signal on channel y is not present.

Given y bit is set by hardware when clock absence is detected on channel y. It is held at

CKABF[y]=1 state by hardware when CHEN=0 (see DFSDM_CHyCFGR1 register). It is held at

CKABF[y]=1 state by hardware when the transceiver is not yet synchronized. It can be cleared by software using the corresponding CLRCKABF[y] bit in the DFSDM_FLTxICR register.

Note: CKABF[7:0] is present only in DFSDM_FLT0ISR register (filter x=0)

Bit 15 Reserved, must be kept at reset value.

Bit 14 RCIP : Regular conversion in progress status

0: No request to convert the regular channel has been issued

1: The conversion of the regular channel is in progress or a request for a regular conversion is pending

A request to start a regular conversion is ignored when RCIP=1.

Bit 13 JCIP : Injected conversion in progress status

0: No request to convert the injected channel group (neither by software nor by trigger) has been issued

1: The conversion of the injected channel group is in progress or a request for a injected conversion is pending, due either to '1' being written to JSWSTART or to a trigger detection

A request to start an injected conversion is ignored when JCIP=1.

Bits 12:5 Reserved, must be kept at reset value.

Bit 4 AWDF : Analog watchdog

0: No Analog watchdog event occurred

1: The analog watchdog block detected voltage which crosses the value programmed in the DFSDM_FLTxAWLTR or DFSDM_FLTxAWHTR registers.

This bit is set by hardware. It is cleared by software by clearing all source flag bits AWHTF[7:0] and AWLTF[7:0] in DFSDM_FLTxAWSR register (by writing '1' into the clear bits in DFSDM_FLTxAWCFR register).

Bit 3 ROVRF : Regular conversion overrun flag

0: No regular conversion overrun has occurred

1: A regular conversion overrun has occurred, which means that a regular conversion finished while REOCF was already '1'. RDATAR is not affected by overruns

This bit is set by hardware. It can be cleared by software using the CLRROVRF bit in the DFSDM_FLTxICR register.

Bit 2 JOVRF : Injected conversion overrun flag

0: No injected conversion overrun has occurred

1: An injected conversion overrun has occurred, which means that an injected conversion finished while JEOCF was already '1'. JDATAR is not affected by overruns

This bit is set by hardware. It can be cleared by software using the CLRJOVRF bit in the DFSDM_FLTxICR register.

Bit 1 REOCF : End of regular conversion flag

0: No regular conversion has completed

1: A regular conversion has completed and its data may be read

This bit is set by hardware. It is cleared when the software or DMA reads DFSDM_FLTxRDATAR.

Bit 0 JEOCF : End of injected conversion flag

0: No injected conversion has completed

1: An injected conversion has completed and its data may be read

This bit is set by hardware. It is cleared when the software or DMA reads DFSDM_FLTxJDATAR.

Note: For each of the flag bits, an interrupt can be enabled by setting the corresponding bit in DFSDM_FLTxCR2. If an interrupt is called, the flag must be cleared before exiting the interrupt service routine.

All the bits of DFSDM_FLTxISR are automatically reset when DFEN=0.

30.8.4 DFSDM filter x interrupt flag clear register (DFSDM_FLTxICR)

Address offset: 0x10C + 0x80 * x, (x = 0 to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
CLRSCDF[7:0]CLRCKABF[7:0]
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CLRR
OVRF
CLRJ
OVRF
Res.Res.
rc_w1rc_w1

Bits 31:24 CLRSCDF[7:0] : Clear the short-circuit detector flag

CLRSCDF[y]=0: Writing '0' has no effect

CLRSCDF[y]=1: Writing '1' to position y clears the corresponding SCDF[y] bit in the DFSDM_FLTxISR register

Note: CLRSCDF[7:0] is present only in DFSDM_FLT0ICR register (filter x=0)

Bits 23:16 CLRCKABF[7:0] : Clear the clock absence flag

CLRCKABF[y]=0: Writing '0' has no effect

CLRCKABF[y]=1: Writing '1' to position y clears the corresponding CKABF[y] bit in the DFSDM_FLTxISR register. When the transceiver is not yet synchronized, the clock absence flag is set and cannot be cleared by CLRCKABF[y].

Note: CLRCKABF[7:0] is present only in DFSDM_FLT0ICR register (filter x=0)

Bits 15:4 Reserved, must be kept at reset value.

Note: The bits of DFSDM_FLTxICR are always read as ‘0’.

30.8.5 DFSDM filter x injected channel group selection register (DFSDM_FLTxJCHGR)

Address offset: 0x110 + 0x80 * x, (x = 0 to 3)

Reset value: 0x0000 0001

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.JCHG[7:0]
rwrwrwrwrwrwrwrw

Bits 31:8 Reserved, must be kept at reset value.

Bits 7:0 JCHG[7:0] : Injected channel group selection

30.8.6 DFSDM filter x control register (DFSDM_FLTxFCR)

Address offset: 0x114 + 0x80 * x, (x = 0 to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
FORD[2:0]Res.Res.Res.FOSR[9:0]
rwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.IOSR[7:0]
rwrwrwrwrwrwrwrw

Bits 31:29 FORD[2:0] : Sinc filter order

Sinc x filter type transfer function:

\[ H(z) = \left( \frac{1 - z^{-FOSR}}{1 - z^{-1}} \right)^x \]

FastSinc filter type transfer function:

\[ H(z) = \left( \frac{1 - z^{-FOSR}}{1 - z^{-1}} \right)^2 \cdot (1 + z^{-(2 \cdot FOSR)}) \]

This bit can only be modified when DFEN=0 (DFSDM_FLTxCR1).

Bits 28:26 Reserved, must be kept at reset value.

Bits 25:16 FOSR[9:0] : Sinc filter oversampling ratio (decimation rate)

0 - 1023: Defines the length of the Sinc type filter in the range 1 - 1024 ( \( F_{OSR} = FOSR[9:0] + 1 \) ). This number is also the decimation ratio of the output data rate from filter.

This bit can only be modified when DFEN=0 (DFSDM_FLTxCR1)

Note: If FOSR = 0, then the filter has no effect (filter bypass).

Bits 15:8 Reserved, must be kept at reset value.

Bits 7:0 IOSR[7:0] : Integrator oversampling ratio (averaging length)

0- 255: The length of the Integrator in the range 1 - 256 ( \( IOSR + 1 \) ). Defines how many samples from Sinc filter will be summed into one output data sample from the integrator. The output data rate from the integrator will be decreased by this number (additional data decimation ratio).

This bit can only be modified when DFEN=0 (DFSDM_FLTxCR1)

Note: If IOSR = 0, then the Integrator has no effect (Integrator bypass).

30.8.7 DFSDM filter x data register for injected group (DFSDM_FLTxJDATAR)

Address offset: \( 0x118 + 0x80 * x \) , ( \( x = 0 \) to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
JDATA[23:8]
rrrrrrrrrrrrrrrr
1514131211109876543210
JDATA[7:0]Res.Res.Res.Res.Res.JDATACH[2:0]
rrrrrrrrrrr

Bits 31:8 JDATA[23:0] : Injected group conversion data

When each conversion of a channel in the injected group finishes, its resulting data is stored in this field. The data is valid when JEOCF=1. Reading this register clears the corresponding JEOCF.

Bits 7:3 Reserved, must be kept at reset value.

Bits 2:0 JDATACH[2:0] : Injected channel most recently converted

When each conversion of a channel in the injected group finishes, JDATACH[2:0] is updated to indicate which channel was converted. Thus, JDATA[23:0] holds the data that corresponds to the channel indicated by JDATACH[2:0].

Note: DMA may be used to read the data from this register. Half-word accesses may be used to read only the MSBs of conversion data.
Reading this register also clears JEOCF in DFSDM_FLTxISR. Thus, the firmware must not read this register if DMA is activated to read data from this register.

30.8.8 DFSDM filter x data register for the regular channel (DFSDM_FLTxRDATAR)

Address offset: 0x11C + 0x80 * x, (x = 0 to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
RDATA[23:8]
rrrrrrrrrrrrrrrr
1514131211109876543210
RDATA[7:0]Res.Res.Res.RPENDRes.RDATACH[2:0]
rrrrrrrrrrrr

Bits 31:8 RDATA[23:0] : Regular channel conversion data

When each regular conversion finishes, its data is stored in this register. The data is valid when REOCF=1. Reading this register clears the corresponding REOCF.

Bits 7:5 Reserved, must be kept at reset value.

Bit 4 RPEND : Regular channel pending data

Regular data in RDATA[23:0] was delayed due to an injected channel trigger during the conversion

Bit 3 Reserved, must be kept at reset value.

Bits 2:0 RDATACH[2:0] : Regular channel most recently converted

When each regular conversion finishes, RDATACH[2:0] is updated to indicate which channel was converted (because regular channel selection RCH[2:0] in DFSDM_FLTxCR1 register can be updated during regular conversion). Thus RDATA[23:0] holds the data that corresponds to the channel indicated by RDATACH[2:0].

Note: Half-word accesses may be used to read only the MSBs of conversion data.
Reading this register also clears REOCF in DFSDM_FLTxISR.

30.8.9 DFSDM filter x analog watchdog high threshold register (DFSDM_FLTxAWHTR)

Address offset: 0x120 + 0x80 * x, (x = 0 to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
AWHT[23:8]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
AWHT[7:0]Res.Res.Res.Res.BKAWH[3:0]
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:8 AWHT[23:0] : Analog watchdog high threshold

These bits are written by software to define the high threshold for the analog watchdog.

Note: In case channel transceivers monitor (AWFSEL=1), the higher 16 bits (AWHT[23:8]) define the 16-bit threshold as compared with the analog watchdog filter output (because data coming from the analog watchdog filter are up to a 16-bit resolution). Bits AWHT[7:0] are not taken into comparison in this case.

Bits 7:4 Reserved, must be kept at reset value.

Bits 3:0 BKAWH[3:0] : Break signal assignment to analog watchdog high threshold event

BKAWH[i] = 0: Break i signal is not assigned to an analog watchdog high threshold event

BKAWH[i] = 1: Break i signal is assigned to an analog watchdog high threshold event

30.8.10 DFSDM filter x analog watchdog low threshold register (DFSDM_FLTxAWLTR)

Address offset: 0x124 + 0x80 * x, (x = 0 to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
AWLT[23:8]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
AWLT[7:0]Res.Res.Res.Res.BKAWL[3:0]
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:8 AWLT[23:0] : Analog watchdog low threshold

These bits are written by software to define the low threshold for the analog watchdog.

Note: In case channel transceivers monitor (AWFSEL=1), only the higher 16 bits (AWLT[23:8]) define the 16-bit threshold as compared with the analog watchdog filter output (because data coming from the analog watchdog filter are up to a 16-bit resolution). Bits AWLT[7:0] are not taken into comparison in this case.

Bits 7:4 Reserved, must be kept at reset value.

Bits 3:0 BKAWL[3:0] : Break signal assignment to analog watchdog low threshold event

BKAWL[i] = 0: Break i signal is not assigned to an analog watchdog low threshold event

BKAWL[i] = 1: Break i signal is assigned to an analog watchdog low threshold event

30.8.11 DFSDM filter x analog watchdog status register (DFSDM_FLTxAWSR)

Address offset: 0x128 + 0x80 * x, (x = 0 to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
AWHTF[7:0]AWLTF[7:0]
rrrrrrrrrrrrrrrr

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:8 AWHTF[7:0] : Analog watchdog high threshold flag

AWHTF[y]=1 indicates a high threshold error on channel y. It is set by hardware. It can be cleared by software using the corresponding CLRAWHTF[y] bit in the DFSDM_FLTxAWCFR register.

Bits 7:0 AWLTF[7:0] : Analog watchdog low threshold flag

AWLTF[y]=1 indicates a low threshold error on channel y. It is set by hardware. It can be cleared by software using the corresponding CLRAWLTF[y] bit in the DFSDM_FLTxAWCFR register.

Note: All the bits of DFSDM_FLTxAWSR are automatically reset when DFEN=0.

30.8.12 DFSDM filter x analog watchdog clear flag register (DFSDM_FLTxAWCFR)

Address offset: 0x12C + 0x80 * x, (x = 0 to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
CLRAWHTF[7:0]CLRAWLTF[7:0]
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:8 CLRAWHTF[7:0] : Clear the analog watchdog high threshold flag

CLRAWHTF[y]=0: Writing '0' has no effect

CLRAWHTF[y]=1: Writing '1' to position y clears the corresponding AWHHTF[y] bit in the DFSDM_FLTxAWSR register

Bits 7:0 CLRAWLTF[7:0] : Clear the analog watchdog low threshold flag

CLRAWLTF[y]=0: Writing '0' has no effect

CLRAWLTF[y]=1: Writing '1' to position y clears the corresponding AWLTF[y] bit in the DFSDM_FLTxAWSR register

30.8.13 DFSDM filter x extremes detector maximum register (DFSDM_FLTxEXMAX)

Address offset: 0x130 + 0x80 * x, (x = 0 to 3)

Reset value: 0x8000 0000

31302928272625242322212019181716
EXMAX[23:8]
rs_rrc_rrc_rrc_rrc_rrc_rrc_rrc_rrc_rrc_rrc_rrc_rrc_rrc_rrc_rrc_r
1514131211109876543210
EXMAX[7:0]Res.Res.Res.Res.Res.EXMAXCH[2:0]
rc_rrc_rrc_rrc_rrc_rrc_rrc_rrc_rrrr

Bits 31:8 EXMAX[23:0] : Extremes detector maximum value

These bits are set by hardware and indicate the highest value converted by DFSDM_FLTx. EXMAX[23:0] bits are reset to value (0x8000000) by reading of this register.

Bits 7:3 Reserved, must be kept at reset value.

Bits 2:0 EXMAXCH[2:0] : Extremes detector maximum data channel.

These bits contains information about the channel on which the data is stored into EXMAX[23:0]. Bits are cleared by reading of this register.

30.8.14 DFSDM filter x extremes detector minimum register (DFSDM_FLTxEXMIN)

Address offset: 0x134 + 0x80 * x, (x = 0 to 3)

Reset value: 0x7FFF FF00

31302928272625242322212019181716
EXMIN[23:8]
rc_rrs_rrs_rrs_rrs_rrs_rrs_rrs_rrs_rrs_rrs_rrs_rrs_rrs_rrs_rrs_r
1514131211109876543210
EXMIN[7:0]Res.Res.Res.Res.Res.EXMINCH[2:0]
rs_rrs_rrs_rrs_rrs_rrs_rrs_rrs_rrrr

Bits 31:8 EXMIN[23:0] : Extremes detector minimum value

These bits are set by hardware and indicate the lowest value converted by DFSDM_FLTx. EXMIN[23:0] bits are reset to value (0x7FFFFF) by reading of this register.

Bits 7:3 Reserved, must be kept at reset value.

Bits 2:0 EXMINCH[2:0] : Extremes detector minimum data channel

These bits contain information about the channel on which the data is stored into EXMIN[23:0]. Bits are cleared by reading of this register.

30.8.15 DFSDM filter x conversion timer register (DFSDM_FLTxCNVTIMR)

Address offset: 0x138 + 0x80 * x, (x = 0 to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
CNVCNT[27:12]
rrrrrrrrrrrrrrrr
1514131211109876543210
CNVCNT[11:0]Res.Res.Res.Res.
rrrrrrrrrrrr

Bits 31:4 CNV CNT[27:0] : 28-bit timer counting conversion time \( t = \text{CNVCNT}[27:0] / f_{\text{DFSDMCLK}} \)

The timer has an input clock from DFSDM clock (system clock \( f_{\text{DFSDMCLK}} \) ). Conversion time measurement is started on each conversion start and stopped when conversion finishes (interval between first and last serial sample). Only in case of filter bypass ( \( F_{\text{OSR}}[9:0] = 0 \) ) is the conversion time measurement stopped and \( \text{CNVCNT}[27:0] = 0 \) . The counted time is:

if \( \text{FAST}=0 \) (or first conversion in continuous mode if \( \text{FAST}=1 \) ):

\[ t = [F_{\text{OSR}} * (I_{\text{OSR}}-1 + F_{\text{ORD}}) + F_{\text{ORD}}] / f_{\text{CKIN}} \dots \text{ for Sinc}^x \text{ filters} \]

\[ t = [F_{\text{OSR}} * (I_{\text{OSR}}-1 + 4) + 2] / f_{\text{CKIN}} \dots \text{ for FastSinc filter} \]

if \( \text{FAST}=1 \) in continuous mode (except first conversion):

\[ t = [F_{\text{OSR}} * I_{\text{OSR}}] / f_{\text{CKIN}} \]

in case if \( F_{\text{OSR}} = F_{\text{OSR}}[9:0]+1 = 1 \) (filter bypassed, active only integrator):

\[ \text{CNVCNT} = 0 \text{ (counting is stopped, conversion time: } t = I_{\text{OSR}} / f_{\text{CKIN}} \text{)} \]

where: \( f_{\text{CKIN}} \) is the channel input clock frequency (on given channel \( \text{CKIN}_y \) pin) or input data rate in case of parallel data input (from internal ADC or from CPU/DMA write)

Note: When conversion is interrupted (e.g. by disable/enable selected channel) the timer counts also this interruption time.

Bits 3:0 Reserved, must be kept at reset value.

30.8.16 DFSDM register map

The following table summarizes the DFSDM registers.

Table 255. DFSDM register map and reset values

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x00DFSDM_CH0CFGR1DFSDMENCKOUTSRCResResResResResResCKOUTDIV[7:0]DATPACK[1:0]DATMPX[1:0]ResResResCHINSELCHENCKABENSCDENResSPICKSEL [1:0]SITP[1:0]
reset value0000000000000
0x04DFSDM_CH0CFGR2OFFSET[23:0]DTRBS[4:0]
reset value00
0x08DFSDM_CH0AWSCDRResResResResResResResResAWFORD [1:0]ResAWFOSR[4:0]BKSCD[3:0]ResResResResSCDT[7:0]
reset value00
0x0CDFSDM_CH0WDATRResResResResResResResResResResResResResResResResWDATA[15:0]
reset value
0x10DFSDM_CH0DATINRINDAT1[15:0]INDAT0[15:0]
reset value00000000000000000000000000000000
0x14 - 0x1CReservedResResResResResResResResResResResResResResResResResResResResResResResResResResResResResResResRes
0x20DFSDM_CH1CFGR1ResResResResResResResResResResResResResResResResDATPACK[1:0]DATMPX[1:0]ResResResCHINSELCHENCKABENSCDENResSPICKSEL [1:0]SITP[1:0]
reset value000000000000

Table 255. DFSDM register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x24DFSDM_CH1CFGR2OFFSET[23:0]DTRBS[4:0]Res.Res.Res.
reset value00000000000000000000000000000
0x28DFSDM_CH1AWSCDRRes.Res.Res.Res.Res.Res.Res.Res.AWFORD[1:0]Res.AWFOSR[4:0]BKSCD[3:0]Res.Res.Res.Res.SCDT[7:0]
reset value0000000000000000000
0x2CDFSDM_CH1WDATRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.WDATA[15:0]
reset value0000000000000000
0x30DFSDM_CH1DATINRINDAT1[15:0]INDAT0[15:0]
reset value00000000000000000000000000000000
0x34 - 0x3CReservedRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
0x40DFSDM_CH2CFGR1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DATPACK[1:0]DATMPX[1:0]Res.Res.Res.CHINSELCHENCKABENSCDENRes.SPICKSEL[1:0]SITP[1:0]
reset value000000000000
0x44DFSDM_CH2CFGR2OFFSET[23:0]DTRBS[4:0]Res.Res.Res.
reset value00000000000000000000000000000
0x48DFSDM_CH2AWSCDRRes.Res.Res.Res.Res.Res.Res.Res.AWFORD[1:0]Res.AWFOSR[4:0]BKSCD[3:0]Res.Res.Res.Res.SCDT[7:0]
reset value0000000000000000000
0x4CDFSDM_CH2WDATRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.WDATA[15:0]
reset value0000000000000000
0x50DFSDM_CH2DATINRINDAT1[15:0]INDAT0[15:0]
reset value00000000000000000000000000000000
0x54 - 0x5CReservedRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
0x60DFSDM_CH3CFGR1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DATPACK[1:0]DATMPX[1:0]Res.Res.Res.CHINSELCHENCKABENSCDENRes.SPICKSEL[1:0]SITP[1:0]
reset value000000000000
0x64DFSDM_CH3CFGR2OFFSET[23:0]DTRBS[4:0]Res.Res.Res.
reset value00000000000000000000000000000

Table 255. DFSDM register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x68DFSDM_CH3AWSCDRRes.Res.Res.Res.Res.Res.Res.Res.AWFORD[1:0]Res.AWFOSR[4:0]BKSCD[3:0]Res.Res.Res.Res.SCDT[7:0]
reset value0000000000000000000
0x6CDFSDM_CH3WDATRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.WDATA[15:0]
reset value000000000000000
0x70DFSDM_CH3DATINRINDAT1[15:0]
reset value00000000000000000000000000000000
0x74 - 0x7CReservedRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
0x80DFSDM_CH4CFGR1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DATPACK[1:0]DATMPX[1:0]Res.Res.Res.Res.CHINSELCHENCKABENSCDENRes.SPICKSEL[1:0]Res.Res.Res.Res.
reset value000000000000
0x84DFSDM_CH4CFGR2OFFSET[23:0]
reset value00000000000000000000000000000000
0x88DFSDM_CH4AWSCDRRes.Res.Res.Res.Res.Res.Res.Res.AWFORD[1:0]Res.AWFOSR[4:0]BKSCD[3:0]Res.Res.Res.Res.SCDT[7:0]
reset value0000000000000000000
0x8CDFSDM_CH4WDATRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.WDATA[15:0]
reset value000000000000000
0x90DFSDM_CH4DATINRINDAT1[15:0]
reset value00000000000000000000000000000000
0x94 - 0x9CReservedRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
0xA0DFSDM_CH5CFGR1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DATPACK[1:0]DATMPX[1:0]Res.Res.Res.Res.CHINSELCHENCKABENSCDENRes.SPICKSEL[1:0]Res.Res.Res.Res.
reset value000000000000
0xA4DFSDM_CH5CFGR2OFFSET[23:0]
reset value00000000000000000000000000000000
0xA8DFSDM_CH5AWSCDRRes.Res.Res.Res.Res.Res.Res.Res.AWFORD[1:0]Res.AWFOSR[4:0]BKSCD[3:0]Res.Res.Res.Res.SCDT[7:0]
reset value0000000000000000000

Table 255. DFSDM register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0xACDFSDM_CH5WDATRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.WDATA[15:0]
reset value0000000000000000
0xB0DFSDM_CH5DATINRINDAT1[15:0]INDAT0[15:0]
reset value00000000000000000000000000000000
0xB4 - 0xBCReservedRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
0xC0DFSDM_CH6CFGR1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DATPACK[1:0]DATMPX[1:0]Res.Res.Res.Res.CHINSELCHENCKABENSCIDENRes.SPICKSEL[1:0]SITP[1:0]
reset value000000000000
0xC4DFSDM_CH6CFGR2OFFSET[23:0]DTRBS[4:0]Res.Res.Res.
reset value00000000000000000000000000000
0xC8DFSDM_CH6AWSCDRRes.Res.Res.Res.Res.Res.Res.Res.AWFORD[1:0]Res.AWFOSR[4:0]BKSCD[3:0]Res.Res.Res.Res.SCDT[7:0]
reset value0000000000000000000
0xCCDFSDM_CH6WDATRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.WDATA[15:0]
reset value0000000000000000
0xD0DFSDM_CH6DATINRINDAT1[15:0]INDAT0[15:0]
reset value00000000000000000000000000000000
0xD4 - 0xDCReservedRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
0xE0DFSDM_CH7CFGR1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DATPACK[1:0]DATMPX[1:0]Res.Res.Res.Res.CHINSELCHENCKABENSCIDENRes.SPICKSEL[1:0]SITP[1:0]
reset value000000000000
0xE4DFSDM_CH7CFGR2OFFSET[23:0]DTRBS[4:0]Res.Res.Res.
reset value00000000000000000000000000000
0xE8DFSDM_CH7AWSCDRRes.Res.Res.Res.Res.Res.Res.Res.AWFORD[1:0]Res.AWFOSR[4:0]BKSCD[3:0]Res.Res.Res.Res.SCDT[7:0]
reset value0000000000000000000
0xECDFSDM_CH7WDATRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.WDATA[15:0]
reset value0000000000000000
0xF0DFSDM_CH7DATINRINDAT1[15:0]INDAT0[15:0]
reset value00000000000000000000000000000000
Table 255. DFSDM register map and reset values (continued)
OffsetRegister name313029282726252423222120191817161514131211109876543210
0xF4 - 0xFCReservedRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
0x100DFSDM_
FLT0CR1
Res.AWFSELFASTRes.Res.RCH[2:0]Res.Res.RDMAENRes.RSYNCRCONTRSW STARTRes.Res.JEXTEN[1:0]JEXTSEL[4:0]Res.Res.JDMAENJSCANJSYNCRes.JSW STARTDFEN
reset value000000000000000000000
0x104DFSDM_
FLT0CR2
Res.Res.Res.Res.Res.Res.Res.Res.AWDCH[7:0]EXCH[7:0]CKABIESCDIEAWDIEROVRIEJOVRIEREOCIEJEOCIE
reset value00000000000000000000000
0x108DFSDM_
FLT0ISR
SCDF[7:0]CKABF[7:0]Res.RCIPJCIPRes.Res.Res.Res.Res.Res.Res.Res.AWDFROVRFJOVRFREOCFJEOCF
reset value00000000111111110000000
0x10CDFSDM_
FLT0ICR
CLRSCDF[7:0]CLRCKABF[7:0]Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CLR ROVRFCLR JOVRFRes.Res.
reset value000000000000000000
0x110DFSDM_
FLT0JCHGR
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JCHG[7:0]
reset value00000001
0x114DFSDM_
FLT0FCR
FORD[2:0]Res.Res.Res.FOSR[9:0]Res.Res.Res.Res.Res.Res.Res.Res.IOSR[7:0]
reset value000000000000000000000
0x118DFSDM_
FLT0JDATAR
JDATA[23:0]Res.Res.Res.Res.Res.JDATACH [2:0]
reset value000000000000000000000000000
0x11CDFSDM_
FLT0RDATAR
RDATA[23:0]Res.Res.Res.RPENDRes.RDATA CH[2:0]
reset value0000000000000000000000000000
0x120DFSDM_
FLT0AWHTR
AWHT[23:0]Res.Res.Res.Res.Res.BKAWH[3:0]
reset value0000000000000000000000000000
0x124DFSDM_
FLT0AWLTR
AWLT[23:0]Res.Res.Res.Res.Res.BKAWL[3:0]
reset value0000000000000000000000000000
0x128DFSDM_
FLT0AWSR
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWHTF[7:0]AWLTF[7:0]
reset value0000000000000000
0x12CDFSDM_
FLT0AWCFR
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CLRAWHTF[7:0]CLRAWLTF[7:0]
reset value0000000000000000

Table 255. DFSDM register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x130DFSDM_FLT0EXMAXEXMAX[23:0]Res.Res.Res.Res.Res.EXMAXCH[2:0]
reset value100000000000000000000000000
0x134DFSDM_FLT0EXMINEXMIN[23:0]Res.Res.Res.Res.Res.EXMINCH[2:0]
reset value011111111111111111111111000
0x138DFSDM_FLT0CNVTIMRCNVCNT[27:0]Res.Res.Res.Res.
reset value00000000000000000000000000000
0x13C - 0x17CReservedRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
0x180DFSDM_FLT1CR1Res.AWFSELFASTRes.Res.RCH[2:0]Res.Res.RDMAENRes.RSYNCRCONTRSW STARTRes.Res.JEXTEN[1:0]JEXTSEL[4:0]Res.Res.Res.JDMAENJSCANJSYNCRes.JSW STARTDFEN
reset value000000000000000000000
0x184DFSDM_FLT1CR2Res.Res.Res.Res.Res.Res.Res.Res.AWDCH[7:0]Res.Res.Res.AWDIEROVRIEJOVRIEREOCIEJEOOCIE
reset value000000000000000000000
0x188DFSDM_FLT1ISRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.RCIPJCIPRes.Res.Res.Res.Res.Res.Res.Res.AWDFROVRFJOVRFREOCFJEOCF
reset value0000000
0x18CDFSDM_FLT1ICRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CLR ROVRFCLR JOVRFRes.Res.
reset value00
0x190DFSDM_FLT1JCHGRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JCHG[7:0]
reset value00000001
0x194DFSDM_FLT1FCRFORD[2:0]Res.Res.Res.FOSR[9:0]Res.Res.Res.Res.Res.Res.Res.Res.Res.IOSR[7:0]
reset value00000000000000000000
0x198DFSDM_FLT1JDATARJDATA[23:0]Res.Res.Res.Res.Res.JDATACH[2:0]
reset value000000000000000000000000000

Table 255. DFSDM register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x19CDFSDM_FLT1RDATA RRDATA[23:0]ResResResRPENDResRDATA
CH[2:0]
reset value00000000000000000000000000000000
0x1A0DFSDM_FLT1AWHTRAWHT[23:0]ResResResResBKAWH[3:0]
reset value00000000000000000000000000000000
0x1A4DFSDM_FLT1AWLTRAWLT[23:0]ResResResResBKAWL[3:0]
reset value00000000000000000000000000000000
0x1A8DFSDM_FLT1AWSRResResResResResResResResResResResResResResResResAWHTF[7:0]AWLTF[7:0]
reset value0000000000000000
0x1ACDFSDM_FLT1AWCFRResResResResResResResResResResResResResResResResCLRAWHTF[7:0]CLRAWLTF[7:0]
reset value0000000000000000
0x1B0DFSDM_FLT1EXMAXEXMAX[23:0]ResResResResResEXMAXCH[2:0]
reset value10000000000000000000000000000000
0x1B4DFSDM_FLT1EXMINEXMIN[23:0]ResResResResResEXMINCH[2:0]
reset value01111111111111111111111111111111
0x1B8DFSDM_FLT1CNVTIMRCNVCNT[27:0]ResResResRes
reset value00000000000000000000000000000000
0x1BC-
0x1FC
ReservedResResResResResResResResResResResResResResResResResResResResResResResResResResResResResResResRes
0x200DFSDM_FLT2CR1ResAWFSELFASTResResRCH[2:0]ResResRDMAENResRSYNCRCONTRSW STARTResResJEXTEN[1:0]JEXTSEL[4:0]ResResResJDMAENJSCANJSYNCResJSW STARTDFEN
reset value000000000000000000000000
0x204DFSDM_FLT2CR2ResResResResResResResResAWDCH[7:0]EXCH[7:0]ResResResAWDIEROVRIEJOVRIEREOCIEJEOCIE
reset value00000000000000000000000
0x208DFSDM_FLT2ISRResResResResResResResResResResResResResResResResRCIPJCIPResResResResResResResResAWDFROVRFJOVRFREOCFJEOCF
reset value0000000
0x20CDFSDM_FLT2ICRResResResResResResResResResResResResResResResResResResResResResResResResResResResCLR ROVRFCLR JOVRFResRes
reset value00

Table 255. DFSDM register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x210DFSDM_
FLT2JCHGR
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JCHG[7:0]
reset value00000001
0x214DFSDM_
FLT2FCR
FORD[2:0]Res.Res.Res.FOSR[9:0]Res.Res.Res.Res.Res.Res.Res.Res.IOSR[7:0]
reset value000000000000000000000
0x218DFSDM_
FLT2JDATAR
JDATA[23:0]Res.Res.Res.Res.Res.JDATACH[2:0]
reset value000000000000000000000000000
0x21CDFSDM_
FLT2RDATAR
RDATA[23:0]Res.Res.Res.RPENDRes.RDATACH[2:0]
reset value0000000000000000000000000000
0x220DFSDM_
FLT2AWHTR
AWHT[23:0]Res.Res.Res.Res.BKAWH[3:0]
reset value0000000000000000000000000000
0x224DFSDM_
FLT2AWLTR
AWLT[23:0]Res.Res.Res.Res.BKAWL[3:0]
reset value0000000000000000000000000000
0x228DFSDM_
FLT2AWSR
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWHTF[7:0]AWLTF[7:0]
reset value0000000000000000
0x22CDFSDM_
FLT2AWCFR
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CLRAWHTF[7:0]CLRAWLTF[7:0]
reset value0000000000000000
0x230DFSDM_
FLT2EXMAX
EXMAX[23:0]Res.Res.Res.Res.Res.EXMAXCH[2:0]
reset value100000000000000000000000000
0x234DFSDM_
FLT2EXMIN
EXMIN[23:0]Res.Res.Res.Res.Res.EXMINCH[2:0]
reset value011111111111111111111111000
0x238DFSDM_
FLT2CNVTIMR
CNVCNT[27:0]Res.Res.Res.Res.
reset value0000000000000000000000000000
0x23C -
0x27C
ReservedRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
0x280DFSDM_
FLT3CR1
Res.AWFSELFASTRes.Res.RCH[2:0]Res.Res.RDMAENRes.RSYNCRCONTRSW STARTRes.Res.JEXTEN[1:0]JEXTSEL[4:0]Res.Res.JDMAENJSCANJSYNCRes.JSW STARTDFEN
reset value000000000000000000000

Table 255. DFSDM register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x284DFSDM_FLT3CR2ResResResResResResResResAWDCH[7:0]EXCH[7:0]ResResResAWDIEROVRIEJOVRIEREOCIEJEOCIE
reset value000000000000000000000
0x288DFSDM_FLT3ISRResResResResResResResResResResResResResResResResResRCIPJCIPResResResResResResResResAWDFROVRFJOVRFREOCFJEOCF
reset value0000000
0x28CDFSDM_FLT3ICRResResResResResResResResResResResResResResResResResResResResResResResResResResResResCLR ROVRFCLR JOVRFResRes
reset value00
0x290DFSDM_FLT3JCHGRResResResResResResResResResResResResResResResResResResResResResResResResJCHG[7:0]
reset value00000001
0x294DFSDM_FLT3FCRFORD[2:0]ResResResFOSR[9:0]ResResResResResResResResResIOSR[7:0]
reset value00000000000000000000
0x298DFSDM_FLT3JDATARJDATA[23:0]ResResResResResJDATAACH[2:0]
reset value000000000000000000000000000
0x29CDFSDM_FLT3RDATARRDATA[23:0]ResResResRPENDResRDATA CH[2:0]
reset value0000000000000000000000000000
0x2A0DFSDM_FLT3AWHTRAWHT[23:0]ResResResResResBKAWH[3:0]
reset value000000000000000000000000000
0x2A4DFSDM_FLT3AWLTRAWLT[23:0]ResResResResResBKAWL[3:0]
reset value000000000000000000000000000
0x2A8DFSDM_FLT3AWSRResResResResResResResResResResResResResResResResAWHTF[7:0]AWLTF[7:0]
reset value0000000000000000
0x2ACDFSDM_FLT3AWCFRResResResResResResResResResResResResResResResResCLRAWHTF[7:0]CLRAWLTF[7:0]
reset value0000000000000000
0x2B0DFSDM_FLT3EXMAXEXMAX[23:0]ResResResResResEXMAXCH[2:0]
reset value100000000000000000000000000

Table 255. DFSDM register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x2B4DFSDM_FLT3EXMINEXMIN[23:0]Res.Res.Res.Res.Res.EXMINCH[2:0]
reset value011111111111111111111111000
0x2B8DFSDM_FLT3CNVTIMRCNVCNT[27:0]Res.Res.Res.Res.
reset value0000000000000000000000000000
0x2BC - 0x3FCReservedRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.

Refer to Section 2.3 on page 129 for the register boundary addresses.