21. Digital filter for sigma delta modulators (DFSDM)

DFSDM is available only on STM32L451xx, STM32L452xx and STM32L462xx.

21.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 4 external digital serial interfaces (channels) and up to 2 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 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 4 multiplexed input digital serial channels which are shared with up to 2 DFSDM modules. DFSDM module also supports alternative parallel data inputs from up to 4 internal 16-bit data channels (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.

21.2 DFSDM main features

21.3 DFSDM implementation

This section describes the configuration implemented in DFSDMx.

Table 100. DFSDM1 implementation

DFSDM featuresDFSDM1
Number of channels4
Number of filters2
Input from internal ADC-
Supported trigger sources11 (1)
Pulses skipper-
  1. 1. Refer to Table 103: DFSDM triggers connection for available trigger sources.

21.4 DFSDM functional description

21.4.1 DFSDM block diagram

Figure 126. Single DFSDM block diagram

Single DFSDM block diagram showing internal components like parallel input data registers, serial transceivers, watchdog filters, analog watchdogs, and control units connected via an APB bus.

The block diagram illustrates the internal architecture of a single DFSDM unit. At the top, an APB bus connects to two parallel input data registers, 'Parallel input data register 0' and 'Parallel input data register 3'. Each register contains 'Sample 1' and 'Sample 0' (16-bit data). These samples are fed into a 'Channel multiplexer'. Below the multiplexer, the data is processed through two parallel paths: 'Data 0' and 'Data 1'. Each path consists of a 'Filter order' block, an 'Oversampling ratio' block, a 'Sinc x filter' (Sinc x filter 0 and Sinc x filter 1), and an 'Integrator unit' (Integrator unit 0 and Integrator unit 1). The output of the integrators is processed by 'Right bit-shift count' and 'Calibration data correction unit' blocks to produce 'DFSDM data 0' and 'DFSDM data 1'. These data streams are then passed to 'Extremes detector 0' and 'Extremes detector 1' (Maximum value, Minimum value) and also to a 'Data output' block. The 'DFSDM data' also feeds into '4 watchdog filters' and '4 watchdog comparators'. These are connected to 'Short circuit detector 0' and 'Short circuit detector 3' (1's, 0's counter threshold, threshold) and 'Analog watchdog 0' and 'Analog watchdog 1' (High threshold, Low threshold). The watchdogs generate 'Interrupt, break' signals. A 'Control unit' at the bottom left contains 'Configuration registers' and 'DMA, interrupt, break control, clock control'. It is connected to the APB bus and generates 'Interrupts and events': 1) end of conversion, 2) analog watchdog, 3) short circuit detection, 4) overrun. On the left side, external pins are shown: EXTRG[1:0], CKOUT, DATIN0, CKIN0, DATIN3, and CKIN3. These are connected to 'Serial transceiver 0' and 'Serial transceiver 3', which contain 'Clock control' and 'Mode control' blocks. The entire diagram is labeled with 'MSV40119V4' in the bottom right corner.

Single DFSDM block diagram showing internal components like parallel input data registers, serial transceivers, watchdog filters, analog watchdogs, and control units connected via an APB bus.
  1. 1. This example shows 2 DFSDM filters and 4 input channels.

21.4.2 DFSDM pins and internal signals

Table 101. DFSDM external pins

NameSignal TypeRemarks
VDDPower supplyDigital power supply.
VSSPower supplyDigital ground power supply.
CKIN[3:0]Clock inputClock signal provided from external \( \Sigma\Delta \) modulator. FT input.
DATIN[3: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 102. DFSDM internal signals

NameSignal TypeRemarks
dfsdm_jtrg[10:0]Internal/external trigger signalInput trigger from internal/external trigger sources to start analog conversion, see Table 103 for details.
dfsdm_break[3:0]break signal outputBreak signals event generation from Analog watchdog or short-circuit detector
dfsdm_dma[1:0]DMA request signalDMA request signal from each DFSDM_FLTx (x=0..1): end of injected conversion event.
dfsdm_it[1:0]Interrupt request signalInterrupt signal for each DFSDM_FLTx (x=0..1)

Table 103. DFSDM triggers connection

Trigger nameTrigger source
dfsdm_jtrg0TIM1_TRGO
dfsdm_jtrg1TIM1_TRGO2
dfsdm_jtrg2TIM3_TRGO
dfsdm_jtrg3TIM16_OC1
dfsdm_jtrg4Reserved
dfsdm_jtrg5Reserved
dfsdm_jtrg6Reserved
dfsdm_jtrg7TIM6_TRGO
dfsdm_jtrg8Reserved
dfsdm_jtrg9EXTI11
dfsdm_jtrg10EXTI15

Table 104. DFSDM break connection

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

21.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..3) and digital filters DFSDM_FLTx (x=0..1) 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..1) 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..3) 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 (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 6.4.27: Peripherals independent clock configuration register (RCC_CCIPR) ). The DFSDM clock is automatically stopped in stop mode (if DFEN = 0 for all DFSDM_FLTx, x=0..1).

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 6.4.27: Peripherals independent clock configuration register (RCC_CCIPR) ).

21.4.4 Serial channel transceivers

There are 4 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 127. Input channel pins redirection

Figure 127. Input channel pins redirection diagram showing the internal architecture of the DFSDM. On the left, multiple input pairs (DATIN and CKIN) are shown, labeled from DATIN(y_max)/CKIN(y_max) down to DATAIN0/CKIN0. Each pair is connected to a multiplexer. The outputs of these multiplexers are fed into 'Decode' blocks, which produce channel identifiers: CH(y_max), CHy, CH(y-1), and CH0. These identifiers are then connected to a large rectangular block labeled 'RCH' at the bottom. The 'RCH' block has multiple output lines that connect to a series of filter blocks on the right, labeled FLT(x_max), FLT(x+1), FLTx, and FLT0. A control signal 'CHINSEL' is shown at the bottom left, pointing to the multiplexers. The diagram is labeled MSv41632V1 at the bottom right.
Figure 127. Input channel pins redirection diagram showing the internal architecture of the DFSDM. On the left, multiple input pairs (DATIN and CKIN) are shown, labeled from DATIN(y_max)/CKIN(y_max) down to DATAIN0/CKIN0. Each pair is connected to a multiplexer. The outputs of these multiplexers are fed into 'Decode' blocks, which produce channel identifiers: CH(y_max), CHy, CH(y-1), and CH0. These identifiers are then connected to a large rectangular block labeled 'RCH' at the bottom. The 'RCH' block has multiple output lines that connect to a series of filter blocks on the right, labeled FLT(x_max), FLT(x+1), FLTx, and FLT0. A control signal 'CHINSEL' is shown at the bottom left, pointing to the multiplexers. The diagram is labeled MSv41632V1 at the bottom right.

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 prescaler (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 128. Channel transceiver timing diagrams

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

The figure illustrates timing relationships for different transceiver modes:

SPI timing : SPICKSEL = 0

SPI timing : SPICKSEL = 1, 2, 3

Manchester timing

MS30766V3

Figure 128: 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[3: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 129. Clock absence timing diagram for SPI

Figure 129. Clock absence timing diagram for SPI. The diagram shows three waveforms over time. The top waveform is CKOUT, a periodic square wave with labels 2, 0, 1, 2, 3, 4, 5, 6, 7, 0. The middle waveform is CKINy, an external clock signal. The bottom waveform is CKABF[y], the clock absence flag. A horizontal double-headed arrow labeled 'max. 8 periods' spans from the first rising edge of CKINy to the rising edge of CKOUT. A dashed line labeled 'restart counting' points to the first rising edge of CKINy. A dashed line labeled 'last clock change' points to the last rising edge of CKINy before it becomes flat. A dashed line labeled 'error reported' points to the rising edge of CKABF[y] which occurs when CKINy stops toggling.
Figure 129. Clock absence timing diagram for SPI. The diagram shows three waveforms over time. The top waveform is CKOUT, a periodic square wave with labels 2, 0, 1, 2, 3, 4, 5, 6, 7, 0. The middle waveform is CKINy, an external clock signal. The bottom waveform is CKABF[y], the clock absence flag. A horizontal double-headed arrow labeled 'max. 8 periods' spans from the first rising edge of CKINy to the rising edge of CKOUT. A dashed line labeled 'restart counting' points to the first rising edge of CKINy. A dashed line labeled 'last clock change' points to the last rising edge of CKINy before it becomes flat. A dashed line labeled 'error reported' points to the rising edge of CKABF[y] which occurs when CKINy stops toggling.

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 131 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:

\[ ((\text{CKOUTDIV} + 1) \times T_{\text{SYSCLK}}) < T_{\text{Manchester clock}} < (2 \times \text{CKOUTDIV} \times T_{\text{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[3: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 130. Clock absence timing diagram for Manchester coding

Timing diagram for Manchester coding clock absence detection. The diagram shows five waveforms over time. 1. CKOUT: A periodic square wave with bits 0, 0, 0, 1, 0. A 'restart counting' point is marked at the third bit. 2. DATINy: Two signals labeled SITP = 2 and SITP = 3. The SITP = 2 signal shows a 'last data change' point. 3. recovered clock: A dotted square wave derived from the data. 4. recovered data: A dotted waveform showing bits 0, 0, 1, ?, ?. The question marks indicate data loss. 5. CKABF[y]: A signal that goes high when the clock is absent, labeled 'error reported'. A bracket on the left groups the first four signals as 'Manchester clock presence timing'. A horizontal double-headed arrow at the top indicates a duration of 'max. 2 periods'.
Timing diagram for Manchester coding clock absence detection. The diagram shows five waveforms over time. 1. CKOUT: A periodic square wave with bits 0, 0, 0, 1, 0. A 'restart counting' point is marked at the third bit. 2. DATINy: Two signals labeled SITP = 2 and SITP = 3. The SITP = 2 signal shows a 'last data change' point. 3. recovered clock: A dotted square wave derived from the data. 4. recovered data: A dotted waveform showing bits 0, 0, 1, ?, ?. The question marks indicate data loss. 5. CKABF[y]: A signal that goes high when the clock is absent, labeled 'error reported'. A bracket on the left groups the first four signals as 'Manchester clock presence timing'. A horizontal double-headed arrow at the top indicates a duration of 'max. 2 periods'.

Manchester/SPI code synchronization

The Manchester coded stream must be synchronized the first time after enabling the channel (CHEN=1 in DFSDM_CHyCFG1 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 (signaling that Manchester stream is synchronized). To be able to synchronize/receive Manchester coded data the CKOUTDIV divider (in DFSDM_CH0CFG1 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 131. First conversion for Manchester coding (Manchester synchronization)

Timing diagram for Manchester coding synchronization. The diagram shows the relationship between the DATINy signal, recovered clock, data from modulator, CHEN, first conversion start trigger, recovered data, and CKABF[y].

The diagram illustrates the Manchester synchronization process. The DATINy signal is shown for two settings: SITP = 2 and SITP = 3 . The recovered clock is derived from the DATINy signal. The data from modulator shows a sequence of bits: 0, 0, 1, 1, 0. The CHEN signal is a horizontal line. The first conversion start trigger is a pulse. The recovered data shows a sequence of bits: ?, ?, 1, 1, 0. The CKABF[y] signal is a horizontal line. Annotations include: real start of first conversion , first data bit toggle - end of Manchester synchronization , and clearing of CKABF[y] flag by software polling . The diagram is labeled MS30769V2 in the bottom right corner.

Timing diagram for Manchester coding synchronization. The diagram shows the relationship between the DATINy signal, recovered clock, data from modulator, CHEN, first conversion start trigger, recovered data, and CKABF[y].

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 21.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}} = \text{FOSR}[9:0]+1 = 1 \) (filter bypassed, active only integrator):

\[ t = I_{\text{OSR}} / f_{\text{CKIN}} \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.

21.4.5 Configuring the input serial interface

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

21.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: 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 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). If odd channel (y = 1, 3) 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 132 for DFSDM_CHyDATINR registers data modes and assignments of data samples to channels.

Figure 132. 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

MSV40123V1

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).

21.4.7 Channel selection

There are 4 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 4 channels. JCHG[3: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[3: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[3: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 4 channels. RCH[1: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.

21.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 133. Example: Sinc 3 filter response

Figure 133. Example: Sinc3 filter response. A plot showing Gain (dB) versus Normalized frequency (fIN/fDATA). The gain starts at 0 dB at 0 normalized frequency and decreases, showing a series of nulls at normalized frequencies of 1, 2, 3, 4, and 5. The gain between the nulls is approximately -60 dB.

The figure is a line graph showing the frequency response of a Sinc 3 filter. The y-axis is labeled 'Gain (dB)' and ranges from -140 to 0 in increments of 20. The x-axis is labeled 'Normalized frequency (f IN /f DATA )' and ranges from 0 to 5 in increments of 1. The curve starts at 0 dB at 0 normalized frequency, drops sharply to a minimum of approximately -140 dB at a normalized frequency of 1, then rises to a peak of approximately -60 dB at a normalized frequency of 1.5. It then drops to another minimum of approximately -140 dB at a normalized frequency of 2, rises to a peak of approximately -75 dB at a normalized frequency of 2.5, drops to a minimum of approximately -140 dB at a normalized frequency of 3, rises to a peak of approximately -85 dB at a normalized frequency of 3.5, drops to a minimum of approximately -140 dB at a normalized frequency of 4, rises to a peak of approximately -95 dB at a normalized frequency of 4.5, and finally drops to a minimum of approximately -140 dB at a normalized frequency of 5.

MS30770V1

Figure 133. Example: Sinc3 filter response. A plot showing Gain (dB) versus Normalized frequency (fIN/fDATA). The gain starts at 0 dB at 0 normalized frequency and decreases, showing a series of nulls at normalized frequencies of 1, 2, 3, 4, and 5. The gain between the nulls is approximately -60 dB.
Table 105. 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).

21.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 106. 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--

21.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[3: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[3: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 AWFORD[1:0] and filter oversampling ratio AWFOSR[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[3: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[3:0], AWLTF[3: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[3:0] = 0x0F). Because the maximum input channel sampling clock frequency is the DFSDM clock frequency divided by 4, the configuration AWFOSR = 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[3: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[3:0] and AWLTF[3: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.

21.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[3:0], status clearing bits CLRSCDF[3: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] \( \neq \) 0 in DFSDM_CHyCFGR1 register).

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

21.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[1: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[1: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[3:0] bits (in DFSDM_FLTxCR2 register).

21.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 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}}^{F_{\text{ORD}}} \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 (IOSR[7:0]=0, FOSR[9:0]=0), the input data rate ( \( f_{DATAIN\_RATE} \) ) must be limited to be able to read all output data:
\( f_{DATAIN\_RATE} \leq f_{APB} \)
where \( f_{APB} \) is the bus frequency to which the DFSDM peripheral is connected.

21.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).

21.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[3: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[3:0] bits in DFSDM_FLTxJCHGR register) is converted and the channel selection is then moved to the next selected channel. Writing to the JCHG[3: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_FLTxRDATAR register.

21.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[1: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).

21.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 JCAP 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 RCAP 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 (JCAP=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.

21.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 (RCAP=0, JCAP=0).

21.5 DFSDM interrupts

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

Table 107. DFSDM interrupt requests

Interrupt eventEvent flagEvent/Interrupt clearing methodInterrupt enable control bit
End of injected conversionJEOCFreading DFSDM_FLTxJDATAJEOCIE
End of regular conversionREOCFreading DFSDM_FLTxRDATAREOCIE
Injected data overrunJOVRFwriting CLRJOVRF = 1JOVRIE

Table 107. DFSDM interrupt requests (continued)

Interrupt eventEvent flagEvent/Interrupt clearing methodInterrupt enable control bit
Regular data overrunROVRFwriting CLRROVRF = 1ROVRIE
Analog watchdogAWDF,
AWHTF[3:0],
AWLTF[3:0]
writing CLRAWHTF[3:0] = 1
writing CLRAWLTF[3:0] = 1
AWDIE,
(AWDCH[3:0])
short-circuit detectorSCDF[3:0]writing CLRSCDF[3:0] = 1SCDIE,
(SCDEN)
Channel clock absenceCKABF[3:0]writing CLRCKABF[3:0] = 1CKABIE,
(CKABEN)

21.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.

21.7 DFSDM channel y registers (y=0..3)

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).

21.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 3)

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..1)

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

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

0: Output clock generation is disabled (CKOUT signal is set to low state)

1- 255: Defines the division of system clock for the serial clock output for CKOUT signal in range 2 - 256 (Divider = CKOUTDIV+1).

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.

0: Standard: input data in DFSDM_CHyDATINR register are stored only in INDAT0[15:0]. To empty DFSDM_CHyDATINR register one sample must be read by the DFSDM filter from channel y.

1: Interleaved: input data in DFSDM_CHyDATINR register are stored as two samples:

–first sample in INDAT0[15:0] (assigned to channel y)

–second sample INDAT1[15:0] (assigned to channel y)

To empty DFSDM_CHyDATINR register, two samples must be read by the digital filter from channel y (INDAT0[15:0] part is read as first sample and then INDAT1[15:0] part is read as next sample).

2: Dual: input data in DFSDM_CHyDATINR register are stored as two samples:

–first sample INDAT0[15:0] (assigned to channel y)

–second sample INDAT1[15:0] (assigned to channel y+1)

To empty DFSDM_CHyDATINR register first sample must be read by the digital filter from channel y and second sample must be read by another digital filter from channel y+1. Dual mode is available only on even channel numbers (y = 0, 2), for odd channel numbers (y = 1, 3)

DFSDM_CHyDATINR is write protected. If an 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 channel.

3: Reserved

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.

Bit 6 CKABEN : Clock absence detector enable on channel y

Bit 5 SCDEN : Short-circuit detector enable on channel y

Bit 4 Reserved, must be kept at reset value.

Bits 3:2 SPICKSEL[1:0] : SPI clock select for channel y

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

Bits 1:0 SITP[1:0] : Serial interface type for channel y

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

21.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 3)

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.

21.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 3)

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

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

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.

21.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 * y, (y = 0 to 3)

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
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).

21.7.5 DFSDM channel y data input register (DFSDM_CH y DATINR)

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 * y, (y = 0 to 3)

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).

See Section 21.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).

See Section 21.4.6: Parallel data inputs for more details.
INDAT0[15:0] is in the 16-bit signed format.

21.8 DFSDM filter x module registers (x=0..1)

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

21.8.1 DFSDM filter x control register 1 (DFSDM_FLTxCR1)

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

Reset value: 0x0000 0000

31302928272625 242322212019181716
Res.AWFSELFASTRes.Res.Res.RCH[1:0]Res.Res.RDMAENRes.RSYNCRCONTRSWSTARTRes.
rwrwrwrwrwrwrwrt_w1

1514 13121110 9 876543210
Res.JEXTEN[1:0]Res.Res.JEXTSEL[2:0]Res.Res.JDMAENJSCANJSYNCRes.JSWSTARTDFEN
rwrwrwrwrwrwrwrwrt_w1rw

Bit 31 Reserved, must be kept at reset value.

Bit 30 AWFSEL : Analog watchdog fast mode select

Bit 29 FAST : Fast conversion mode selection for regular conversions

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:26 Reserved, must be kept at reset value.

Bits 25:24 RCH[1:0] : Regular channel selection

Writing this bit 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:11 Reserved, must be kept at reset value.

Bits 10:8 JEXTSEL[2:0] : Trigger signal selection for launching injected conversions

0x0-0x7: Trigger inputs selected by the following table.

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

DFSDM_FLT0DFSDM_FLT1
0x00dfsdm_jtrg0dfsdm_jtrg0
0x01dfsdm_jtrg1dfsdm_jtrg1
0x02dfsdm_jtrg2dfsdm_jtrg2
0x03dfsdm_jtrg3dfsdm_jtrg3
0x04dfsdm_jtrg5dfsdm_jtrg5
0x05dfsdm_jtrg7dfsdm_jtrg7
0x06dfsdm_jtrg9dfsdm_jtrg9
0x07dfsdm_jtrg10dfsdm_jtrg10

Refer to Table 103: 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 JCIP to become '1' at the same time. If JCIP=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

21.8.2 DFSDM filter x control register 2 (DFSDM_FLTxCR2)

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

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWDCH[3:0]
rwrwrwrw
1514131211109876543210
Res.Res.Res.Res.EXCH[3:0]Res.CKAB IESCDIEAWDIEROVR IEJOVR IEREOC IEJEOC IE
rwrwrwrwrwrwrwrwrwrwrw

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

Bits 19:16 AWDCH[3: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:12 Reserved, must be kept at reset value.

Bits 11:8 EXCH[3: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[3: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[3: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.

21.8.3 DFSDM filter x interrupt and status register (DFSDM_FLTxISR)

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

Reset value: 0x00FF 0000

31302928272625242322212019181716
Res.Res.Res.Res.SCDF[3:0]Res.Res.Res.Res.CKABF[3:0]
rrrrrrrr
1514131211109876543210
Res.RCIPJCIPRes.Res.Res.Res.Res.Res.Res.Res.AWDFROVRFJOVRFREOCFJEOCF
rrrrrrr

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

Bits 27:24 SCDF[3:0] : short-circuit detector flag

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

SCDF[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[3:0] is present only in DFSDM_FLT0ISR register (filter x=0)

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

Bits 19:16 CKABF[3: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[3: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[3:0] and AWLTF[3: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.

21.8.4 DFSDM filter x interrupt flag clear register (DFSDM_FLTxICR)

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

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.CLRSCDF[3:0]Res.Res.Res.Res.CLRCKABF[3:0]
rc_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:28 Reserved, must be kept at reset value.

Bits 27:24 CLRSCDF[3: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[3:0] is present only in DFSDM_FLT0ICR register (filter x=0)

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

Bits 19:16 CLRCKABF[3: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[3:0] is present only in DFSDM_FLT0ICR register (filter x=0)

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

Bit 3 CLRROVRF : Clear the regular conversion overrun flag

0: Writing '0' has no effect

1: Writing '1' clears the ROVRF bit in the DFSDM_FLTxISR register

Bit 2 CLRJOVRF : Clear the injected conversion overrun flag

0: Writing '0' has no effect

1: Writing '1' clears the JOVRF bit in the DFSDM_FLTxISR register

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

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

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

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

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.Res.Res.Res.Res.JCHG[3:0]
rwrwrwrw

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

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

JCHG[y]=0: channel y is not part of the injected group

JCHG[y]=1: channel y is part of the injected group

If JSCAN=1, each of the selected channels is converted, one after another. The lowest channel (channel 0, if selected) is converted first and the sequence ends at the highest selected channel.

If JSCAN=0, then only one channel is converted from the selected channels, and the channel selection is moved to the next channel. Writing JCHG, if JSCAN=0, resets the channel selection to the lowest selected channel.

At least one channel must always be selected for the injected group. Writes causing all JCHG bits to be zero are ignored.

21.8.6 DFSDM filter x control register (DFSDM_FLTxFCR)

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

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

0: FastSinc filter type

1: Sinc 1 filter type

2: Sinc 2 filter type

3: Sinc 3 filter type

4: Sinc 4 filter type

5: Sinc 5 filter type

6-7: Reserved

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).

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

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

Reset value: 0x0000 0000

31302928272625242322212019181716
JDATA[23:8]
rrrrrrrrrrrrrrrr
1514131211109876543210
JDATA[7:0]Res.Res.Res.Res.Res.Res.JDATACH[1:0]
rrrrrrrrrr

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:2 Reserved, must be kept at reset value.

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

When each conversion of a channel in the injected group finishes, JDATACH[1:0] is updated to indicate which channel was converted. Thus, JDATA[23:0] holds the data that corresponds to the channel indicated by JDATACH[1: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.

21.8.8 DFSDM filter x data register for the regular channel (DFSDM_FLTxRDATA)

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

Reset value: 0x0000 0000

31302928272625242322212019181716
RDATA[23:8]
rrrrrrrrrrrrrrrr
1514131211109876543210
RDATA[7:0]Res.Res.Res.RPENDRes.Res.RDATACH[1:0]
rrrrrrrrrrr

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

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

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

When each regular conversion finishes, RDATACH[1:0] is updated to indicate which channel was converted (because regular channel selection RCH[1: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[1: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.

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

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

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

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

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

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

21.8.11 DFSDM filter x analog watchdog status register (DFSDM_FLTxAWSR)

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

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.AWHTF[3:0]Res.Res.Res.Res.AWLTF[3:0]
rrrrrrrr

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

Bits 11:8 AWHTF[3: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:4 Reserved, must be kept at reset value.

Bits 3:0 AWLTF[3: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.

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

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

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.CLRAWHTF[3:0]Res.Res.Res.Res.CLRAWLTF[3:0]
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1

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

Bits 11:8 CLRAWHTF[3: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 AWHETF[y] bit in the DFSDM_FLTxAWSR register

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

Bits 3:0 CLRAWLTF[3: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

21.8.13 DFSDM filter x extremes detector maximum register (DFSDM_FLTxEXMAX)

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

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.Res.EXMAXCH[1:0]
rc_rrc_rrc_rrc_rrc_rrc_rrc_rrc_rrr

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:2 Reserved, must be kept at reset value.

Bits 1:0 EXMAXCH[1: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.

21.8.14 DFSDM filter x extremes detector minimum register (DFSDM_FLTxEXMIN)

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

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.Res.EXMINCH[1:0]
rs_rrs_rrs_rrs_rrs_rrs_rrs_rrs_rrr

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 (0x7FFFFFF) by reading of this register.

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

Bits 1:0 EXMINCH[1: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.

21.8.15 DFSDM filter x conversion timer register (DFSDM_FLTxCNVTIMR)

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

Reset value: 0x0000 0000

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

Bits 31:4 CNVCNT[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 ( \( \text{FOSR}[9:0] = 0 \) ) is the conversion time measurement stopped and \( \text{CNVCNT}[27:0] = 0 \) . The counted time is:

if FAST=0 (or first conversion in continuous mode if 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 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 CKINy pin) or input data rate in case of parallel data input (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.

21.8.16 DFSDM register map

The following table summarizes the DFSDM registers.

Table 108. DFSDM register map and reset values

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x00DFSDM_CH0CFGR1DFSDMENCKOUTSRCRes.Res.Res.Res.Res.Res.CKOUTDIV[7:0]DATPACK[1:0]DATMPX[1:0]Res.Res.Res.CHINSELCHENCKABENSCDENRes.SPICKSEL [1:0]SITP[1:0]
reset value0000000000000000000000
0x04DFSDM_CH0CFGR2OFFSET[23:0]DTRBS[4:0]Res.Res.Res.
reset value00
0x08DFSDM_CH0AWSCDRRes.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
0x0CDFSDM_CH0WDATRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.WDATA[15:0]
reset value0000000000000000
0x10DFSDM_CH0DATINRINDAT1[15:0]INDAT0[15:0]
reset value00000000000000000000000000000000
0x14 - 0x1CReservedRes.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.
0x20DFSDM_CH1CFGR1Res.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
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.

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

OffsetRegister name313029282726252423222120191817161514131211109876543210
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.Res.CHINSELCHENCKABENSCDENRes.SPICKSEL[1:0]SITP[1:0]
reset value000000000000
0x44DFSDM_CH2CFGR2OFFSET[23:0]Res.Res.
reset value0000000000000000000000000000000
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 value000000000000000000
0x4CDFSDM_CH2WDATRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.WDATA[15:0]
reset value00000000000000
0x50DFSDM_CH2DATINRINDAT1[15:0]
reset value0000000000000000000000000000000
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.Res.CHINSELCHENCKABENSCDENRes.SPICKSEL[1:0]SITP[1:0]
reset value000000000000
0x64DFSDM_CH3CFGR2OFFSET[23:0]Res.Res.
reset value0000000000000000000000000000000
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 value000000000000000000
0x6CDFSDM_CH3WDATRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.WDATA[15:0]
reset value00000000000000
0x70DFSDM_CH3DATINRINDAT1[15:0]
reset value0000000000000000000000000000000
0x74 - 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_FLT0CR1Res.AWFSELFASTRes.Res.RCH[1:0]Res.Res.RDMAENRes.RSYNCRCONTRSW STARTRes.Res.JEXTEN[1:0]Res.Res.JEXTSEL[2:0]Res.Res.Res.Res.Res.Res.JDMAENJSCANJSYNCRes.JSW STARTDFEN
reset value0000000000000000000

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

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x104DFSDM_FLT0CR2Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWDCH[3:0]Res.Res.Res.Res.Res.Res.Res.EXCH[3:0]Res.Res.Res.Res.CKABIESCDIEAWDIEROVRIEJOVRIEREOCIEJEOCIE
reset value000000000000000
0x108DFSDM_FLT0ISRRes.Res.Res.Res.SCDF[3:0]Res.Res.Res.Res.Res.Res.Res.CKABF[3:0]Res.Res.RCIPJCIPRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWDFROVRFJOVRFREOCFJEOCF
reset value000011110000000
0x10CDFSDM_FLT0ICRRes.Res.Res.Res.CLRCDF[3:0]Res.Res.Res.Res.Res.Res.Res.CLRCABF[3:0]Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CLR ROVRFCLR JOVRFRes.Res.
reset value0000000000
0x110DFSDM_FLT0JCHGRRes.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.JCHG[3:0]
reset value0001
0x114DFSDM_FLT0FCRFORD[2:0]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.IOSR[7:0]
reset value0000000
0x118DFSDM_FLT0JDATARJDATA[23:0]Res.Res.Res.Res.Res.Res.JDATACH[1:0]
reset value000000000000000000000000000
0x11CDFSDM_FLT0RDATARRDATA[23:0]Res.Res.Res.RPENDRes.Res.RDATACH[1:0]
reset value0000000000000000000000000000
0x120DFSDM_FLT0AWHTRAWHT[23:0]Res.Res.Res.Res.Res.Res.BKAWH[3:0]
reset value00000000000000000000000000000
0x124DFSDM_FLT0AWLTRAWLT[23:0]Res.Res.Res.Res.Res.Res.BKAWL[3:0]
reset value00000000000000000000000000000
0x128DFSDM_FLT0AWSRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWHTF[3:0]Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWLTF[3:0]
reset value00000000
0x12CDFSDM_FLT0AWCFRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CLRAWHTF[3:0]Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CLRAWLTF[3:0]
reset value00000000
0x130DFSDM_FLT0EXMAXEXMAX[23:0]Res.Res.Res.Res.Res.Res.EXMAXCH[1:0]
reset value100000000000000000000000000

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

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x134DFSDM_
FLT0EXMIN
EXMIN[23:0]Res.Res.Res.Res.Res.Res.EXMINCH[1:0]
reset value01111111111111111111111100
0x138DFSDM_
FLT0CNVTIMR
CNVCNT[27:0]Res.Res.Res.Res.
reset value0000000000000000000000000000
0x13C -
0x17C
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.
0x180DFSDM_
FLT1CR1
Res.AWFSELFASTRes.Res.Res.RCH[1:0]Res.Res.RDMAENRes.Res.RSYNCRCONTRSW STARTRes.Res.Res.JEXTEN[1:0]Res.Res.Res.JEXTSEL[2:0]Res.Res.Res.Res.JDMAENJSCANJSYNCRes.JSW STARTDFEN
reset value000000000000000000
0x184DFSDM_
FLT1CR2
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWDCH[3:0]Res.Res.Res.Res.EXCH[3:0]Res.Res.Res.Res.AWDIEROVRIEJOVRIEREOCIEJEOCIE
reset value0000000000000
0x188DFSDM_
FLT1ISR
Res.Res.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_
FLT1ICR
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.CLR ROVRFCLR JOVRFRes.Res.
reset value00
0x190DFSDM_
FLT1JCHGR
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.JCHG[3:0]
reset value0001
0x194DFSDM_
FLT1FCR
FORD[2:0]Res.Res.Res.Res.FOSR[9:0]Res.Res.Res.Res.Res.Res.IOSR[7:0]
reset value000000000000000000000
0x198DFSDM_
FLT1JDATAR
JDATA[23:0]Res.Res.Res.Res.Res.Res.JDATACH[1:0]
reset value00000000000000000000000000
0x19CDFSDM_
FLT1RDATAR
RDATA[23:0]Res.Res.Res.Res.RPENDRes.RDATACH[1:0]
reset value000000000000000000000000000
0x1A0DFSDM_
FLT1AWHTR
AWHT[23:0]Res.Res.Res.Res.BKAWH[3:0]
reset value0000000000000000000000000000

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

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x1A4DFSDM_FLT1AWLTRAWLTF[23:0]ResResResResBKAWL[3:0]
reset value0000000000000000000000000000
0x1A8DFSDM_FLT1AWSRResResResResResResResResResResResResResResResResResResResResAWHTF[3:0]ResResResResAWLTF[3:0]
reset value00000000
0x1ACDFSDM_FLT1AWCFRResResResResResResResResResResResResResResResResResResResResCLRAWHTF[3:0]ResResResResCLRAWLTF[3:0]
reset value00000000
0x1B0DFSDM_FLT1EXMAXEXMAX[23:0]ResResResResResResEXMAXCH[1:0]
reset value10000000000000000000000000
0x1B4DFSDM_FLT1EXMINEXMIN[23:0]ResResResResResResEXMINCH[1:0]
reset value01111111111111111111111100
0x1B8DFSDM_FLT1CNVTIMRCNVCNT[27:0]ResResResRes
reset value000000000000000000000000000000
0x1BC-0x2FCReservedResResResResResResResResResResResResResResResResResResResResResResResResResResResResResResResRes
Refer to Section 2.2 on page 70 for the register boundary addresses.