SDFM Module

The Sigma-Delta Filter Module (SDFM) API provides a set of functions for configuring and using the SDFM module. The functions provided allow the user to setup and configure the Input data type to SDFM filters, the Primary (data) and Secondary (comparator) filters, Data FIFO, the PWM - SDFM sync signals, comparator threshold values and interrupt sources. Functions are also provided to read the filter data and the status of the SDFM module components.

Note that the Secondary (comparator) Filter configuration APIs have the “Comp” key word embedded to represent access to the Comparator sub-module. For example the function SDFM_setComparatorFilterType() sets the comparator filter type while SDFM_setFilterType() sets the primary filter type.

APIs providing higher level abstraction are also available in the sdfm.c source file. These APIs can be used to configure the Comparator, Data Filter and the Data filter FIFO.

group sdfm_api

Defines

SDFM_GET_LOW_THRESHOLD(C) ((uint16_t)(C))

Macro to get the low threshold

SDFM_GET_HIGH_THRESHOLD(C) ((uint16_t)((uint32_t)(C) >> 16U))

Macro to get the high threshold

SDFM_SET_OSR(X) (((X) - 1) << 8U)

Macro to convert comparator over sampling ratio to acceptable bit location

SDFM_SHIFT_VALUE(X) ((X) << 2U)

Macro to convert the data shift bit values to acceptable bit location

SDFM_THRESHOLD(H, L) ((((uint32_t)(H)) << 16U) | (L))

Macro to combine high threshold and low threshold values

SDFM_SET_FIFO_LEVEL(X) ((X) << 7U)

Macro to set the FIFO level to acceptable bit location

SDFM_SET_ZERO_CROSS_THRESH_VALUE(X) (0x8000 | (X))

Macro to set and enable the zero cross threshold value.

SDFM_FILTER_DISABLE 0x0U

Macros to enable or disable filter.

SDFM_FILTER_ENABLE 0x2U
SDFM_MODULATOR_FAILURE_INTERRUPT 0x200U

Interrupt is generated if Modulator fails.

SDFM_LOW_LEVEL_THRESHOLD_INTERRUPT 0x40U

Interrupt on Comparator low-level threshold.

SDFM_HIGH_LEVEL_THRESHOLD_INTERRUPT 0x20U

Interrupt on Comparator high-level threshold.

SDFM_DATA_FILTER_ACKNOWLEDGE_INTERRUPT 0x1U

Interrupt on Acknowledge flag

SDFM_MASTER_INTERRUPT_FLAG 0x80000000U

Master interrupt flag

SDFM_FILTER_1_HIGH_THRESHOLD_FLAG 0x1U

Filter 1 high -level threshold flag

SDFM_FILTER_1_LOW_THRESHOLD_FLAG 0x2U

Filter 1 low -level threshold flag

SDFM_FILTER_2_HIGH_THRESHOLD_FLAG 0x4U

Filter 2 high -level threshold flag

SDFM_FILTER_2_LOW_THRESHOLD_FLAG 0x8U

Filter 2 low -level threshold flag

SDFM_FILTER_3_HIGH_THRESHOLD_FLAG 0x10U

Filter 3 high -level threshold flag

SDFM_FILTER_3_LOW_THRESHOLD_FLAG 0x20U

Filter 3 low -level threshold flag

SDFM_FILTER_4_HIGH_THRESHOLD_FLAG 0x40U

Filter 4 high -level threshold flag

SDFM_FILTER_4_LOW_THRESHOLD_FLAG 0x80U

Filter 4 low -level threshold flag

SDFM_FILTER_1_MOD_FAILED_FLAG 0x100U

Filter 1 modulator failed flag

SDFM_FILTER_2_MOD_FAILED_FLAG 0x200U

Filter 2 modulator failed flag

SDFM_FILTER_3_MOD_FAILED_FLAG 0x400U

Filter 3 modulator failed flag

SDFM_FILTER_4_MOD_FAILED_FLAG 0x800U

Filter 4 modulator failed flag

SDFM_FILTER_1_NEW_DATA_FLAG 0x1000U

Filter 1 new data flag

SDFM_FILTER_2_NEW_DATA_FLAG 0x2000U

Filter 2 new data flag

SDFM_FILTER_3_NEW_DATA_FLAG 0x4000U

Filter 3 new data flag

SDFM_FILTER_4_NEW_DATA_FLAG 0x8000U

Filter 4 new data flag

Enums

enum SDFM_OutputThresholdStatus

Values that can be returned from SDFM_getThresholdStatus()

Values:

enumerator SDFM_OUTPUT_WITHIN_THRESHOLD = 0

SDFM output is within threshold.

enumerator SDFM_OUTPUT_ABOVE_THRESHOLD = 1

SDFM output is above threshold.

enumerator SDFM_OUTPUT_BELOW_THRESHOLD = 2

SDFM output is below threshold.

enum SDFM_FilterNumber

Values that can be passed to all functions as the filterNumber parameter.

Values:

enumerator SDFM_FILTER_1 = 0

Digital filter 1.

enumerator SDFM_FILTER_2 = 1

Digital filter 2.

enumerator SDFM_FILTER_3 = 2

Digital filter 3.

enumerator SDFM_FILTER_4 = 3

Digital filter 4.

enum SDFM_FilterType

Values that can be passed to SDFM_setFilterType(), SDFM_setComparatorFilterType() as the filterType parameter.

Values:

enumerator SDFM_FILTER_SINC_FAST = 0x00

Digital filter with SincFast structure.

enumerator SDFM_FILTER_SINC_1 = 0x10

Digital filter with Sinc1 structure.

enumerator SDFM_FILTER_SINC_2 = 0x20

Digital filter with Sinc3 structure.

enumerator SDFM_FILTER_SINC_3 = 0x30

Digital filter with Sinc4 structure.

enum SDFM_ModulatorClockMode

Values that can be passed to SDFM_setupModulatorClock(),as the clockMode parameter.

Values:

enumerator SDFM_MODULATOR_CLK_EQUAL_DATA_RATE = 0

Modulator clock is identical to the data rate.

enumerator SDFM_MODULATOR_CLK_HALF_DATA_RATE = 1

Modulator clock is half the data rate.

enumerator SDFM_MODULATOR_CLK_OFF = 2

Modulator clock is off. Data is Manchester coded.

enumerator SDFM_MODULATOR_CLK_DOUBLE_DATA_RATE = 3

Modulator clock is double the data rate.

enum SDFM_OutputDataFormat

Values that can be passed to SDFM_setOutputDataFormat(),as the dataFormat parameter.

Values:

enumerator SDFM_DATA_FORMAT_16_BIT = 0

Filter output is in 16 bits 2’s complement format.

enumerator SDFM_DATA_FORMAT_32_BIT = 1

Filter output is in 32 bits 2’s complement format.

Functions

void SDFM_enableExternalReset(uint32_t base, SDFM_FilterNumber filterNumber)

Enable external reset

This function enables data filter to be reset by an external source (PWM compare output).

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

Return

None.

void SDFM_disableExternalReset(uint32_t base, SDFM_FilterNumber filterNumber)

Disable external reset

This function disables data filter from being reset by an external source (PWM compare output).

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

Return

None.

void SDFM_enableFilter(uint32_t base, SDFM_FilterNumber filterNumber)

Enable filter

This function enables the filter specified by the

filterNumber variable.
Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

Return

None.

void SDFM_disableFilter(uint32_t base, SDFM_FilterNumber filterNumber)

Disable filter

This function disables the filter specified by the

filterNumber variable.
Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

Return

None.

void SDFM_setFilterType(uint32_t base, SDFM_FilterNumber filterNumber, SDFM_FilterType filterType)

Set filter type.

This function sets the filter type or structure to be used as specified by filterType for the selected filter number as specified by filterNumber.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

  • filterType: is the filter type or structure.

Return

None.

void SDFM_setFilterOverSamplingRatio(uint32_t base, SDFM_FilterNumber filterNumber, uint16_t overSamplingRatio)

Set data filter over sampling ratio.

This function sets the filter oversampling ratio for the filter specified by the filterNumber variable.Valid values for the variable overSamplingRatio are 0 to 255 inclusive. The actual oversampling ratio will be this value plus one.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

  • overSamplingRatio: is the data filter over sampling ratio.

Return

None.

void SDFM_setupModulatorClock(uint32_t base, SDFM_FilterNumber filterNumber, SDFM_ModulatorClockMode clockMode)

Set modulator clock mode.

This function sets the modulator clock mode specified by clockMode for the filter specified by filterNumber.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

  • clockMode: is the modulator clock mode.

Return

None.

void SDFM_setOutputDataFormat(uint32_t base, SDFM_FilterNumber filterNumber, SDFM_OutputDataFormat dataFormat)

Set the output data format

This function sets the output data format for the filter specified by filterNumber.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

  • dataFormat: is the output data format.

Return

None.

void SDFM_setDataShiftValue(uint32_t base, SDFM_FilterNumber filterNumber, uint16_t shiftValue)

Set data shift value.

This function sets the shift value for the 16 bit 2’s complement data format. The valid maximum value for shiftValue is 31.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

  • shiftValue: is the data shift value.

Note: Use this function with 16 bit 2’s complement data format only.

Return

None.

void SDFM_setCompFilterHighThreshold(uint32_t base, SDFM_FilterNumber filterNumber, uint16_t highThreshold)

Set Filter output high-level threshold.

This function sets the unsigned high-level threshold value for the Comparator filter output. If the output value of the filter exceeds highThreshold and interrupt generation is enabled, an interrupt will be issued.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

  • highThreshold: is the high-level threshold.

Return

None.

void SDFM_setCompFilterLowThreshold(uint32_t base, SDFM_FilterNumber filterNumber, uint16_t lowThreshold)

Set Filter output low-level threshold.

This function sets the unsigned low-level threshold value for the Comparator filter output. If the output value of the filter gets below lowThreshold and interrupt generation is enabled, an interrupt will be issued.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

  • lowThreshold: is the low-level threshold.

Return

None.

void SDFM_enableInterrupt(uint32_t base, SDFM_FilterNumber filterNumber, uint16_t intFlags)

Enable SDFM interrupts.

This function enables the low threshold , high threshold or modulator failure interrupt as determined by intFlags for the filter specified by filterNumber. Valid values for intFlags are: SDFM_MODULATOR_FAILURE_INTERRUPT , SDFM_LOW_LEVEL_THRESHOLD_INTERRUPT, SDFM_HIGH_LEVEL_THRESHOLD_INTERRUPT,SDFM_DATA_FILTER_ACKNOWLEDGE_INTERRUPT

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

  • intFlags: is the interrupt source.

Return

None.

void SDFM_disableInterrupt(uint32_t base, SDFM_FilterNumber filterNumber, uint16_t intFlags)

Disable SDFM interrupts.

This function disables the low threshold , high threshold or modulator failure interrupt as determined by intFlags for the filter specified by filterNumber. Valid values for intFlags are: SDFM_MODULATOR_FAILURE_INTERRUPT , SDFM_LOW_LEVEL_THRESHOLD_INTERRUPT, SDFM_HIGH_LEVEL_THRESHOLD_INTERRUPT,SDFM_DATA_FILTER_ACKNOWLEDGE_INTERRUPT

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

  • intFlags: is the interrupt source.

Return

None.

void SDFM_setComparatorFilterType(uint32_t base, SDFM_FilterNumber filterNumber, SDFM_FilterType filterType)

Set the comparator filter type.

This function sets the Comparator filter type or structure to be used as specified by filterType for the selected filter number as specified by filterNumber.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

  • filterType: is the comparator filter type or structure.

Return

None.

void SDFM_setCompFilterOverSamplingRatio(uint32_t base, SDFM_FilterNumber filterNumber, uint16_t overSamplingRatio)

Set Comparator filter over sampling ratio.

This function sets the comparator filter oversampling ratio for the filter specified by the filterNumber.Valid values for the variable overSamplingRatio are 0 to 31 inclusive. The actual oversampling ratio will be this value plus one.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

  • overSamplingRatio: is the comparator filter over sampling ration.

Return

None.

uint32_t SDFM_getFilterData(uint32_t base, SDFM_FilterNumber filterNumber)

Get the filter data output.

This function returns the latest data filter output. Depending on the filter data output format selected, the valid value will be the lower 16 bits or the whole 32 bits of the returned value.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

Return

Returns the latest data filter output.

SDFM_OutputThresholdStatus SDFM_getThresholdStatus(uint32_t base, SDFM_FilterNumber filterNumber)

Get the Comparator threshold status.

This function returns the Comparator output threshold status for the given filterNumber.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

Return

Returns the following status flags.

  • SDFM_OUTPUT_WITHIN_THRESHOLD if the output is within the specified threshold.

  • SDFM_OUTPUT_ABOVE_THRESHOLD if the output is above the high threshold

  • SDFM_OUTPUT_BELOW_THRESHOLD if the output is below the low threshold.

bool SDFM_getModulatorStatus(uint32_t base, SDFM_FilterNumber filterNumber)

Get the Modulator status.

This function returns the Modulator status.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

Return

Returns true if the Modulator is operating normally Returns false if the Modulator has failed

bool SDFM_getNewFilterDataStatus(uint32_t base, SDFM_FilterNumber filterNumber)

Check if new Filter data is available.

This function returns new filter data status.

Parameters
  • base: is the base address of the SDFM module

  • filterNumber: is the filter number.

Return

Returns true if new filter data is available Returns false if no new filter data is available

bool SDFM_getIsrStatus(uint32_t base)

Get pending interrupt.

This function returns any pending interrupt status.

Parameters
  • base: is the base address of the SDFM module

Return

Returns true if there is a pending interrupt. Returns false if no interrupt is pending.

void SDFM_clearInterruptFlag(uint32_t base, uint32_t flag)

Clear pending flags.

This function clears the specified pending interrupt flag. Valid values are SDFM_MASTER_INTERRUPT_FLAG,SDFM_FILTER_1_NEW_DATA_FLAG, SDFM_FILTER_2_NEW_DATA_FLAG,SDFM_FILTER_3_NEW_DATA_FLAG, SDFM_FILTER_4_NEW_DATA_FLAG,SDFM_FILTER_1_MOD_FAILED_FLAG, SDFM_FILTER_2_MOD_FAILED_FLAG,SDFM_FILTER_3_MOD_FAILED_FLAG, SDFM_FILTER_4_MOD_FAILED_FLAG,SDFM_FILTER_1_HIGH_THRESHOLD_FLAG, SDFM_FILTER_1_LOW_THRESHOLD_FLAG,SDFM_FILTER_2_HIGH_THRESHOLD_FLAG, SDFM_FILTER_2_LOW_THRESHOLD_FLAG,SDFM_FILTER_3_HIGH_THRESHOLD_FLAG, SDFM_FILTER_3_LOW_THRESHOLD_FLAG,SDFM_FILTER_4_HIGH_THRESHOLD_FLAG, SDFM_FILTER_4_LOW_THRESHOLD_FLAG or any combination of the above flags.

Parameters
  • base: is the base address of the SDFM module

  • flag: is the SDFM status

Return

None

void SDFM_enableMasterInterrupt(uint32_t base)

Enable master interrupt.

This function enables the master SDFM interrupt.

Parameters
  • base: is the base address of the SDFM module

Return

None

void SDFM_disableMasterInterrupt(uint32_t base)

Disable master interrupt.

This function disables the master SDFM interrupt.

Parameters
  • base: is the base address of the SDFM module

Return

None

void SDFM_enableMasterFilter(uint32_t base)

Enable master filter.

This function enables master filter.

Parameters
  • base: is the base address of the SDFM module

Return

None

void SDFM_disableMasterFilter(uint32_t base)

Disable master filter.

This function disables master filter.

Parameters
  • base: is the base address of the SDFM module

Return

None

void SDFM_configComparator(uint32_t base, uint16_t config1, uint32_t config2)

Configures SDFM comparator for filter config & threshold values

This function configures the comparator filter for filter config and threshold values based on provided inputs.

Parameters
  • base: is the base address of the SDFM module

  • config1: is the filter number, filter type and over sampling ratio.

  • config2: is high-level and low-level threshold values.

The config1 parameter is the logical OR of the filter number, filter type and oversampling ratio. The bit definitions for config1 are as follow:

  • config1.[3:0] filter number

  • config1.[7:4] filter type

  • config1.[15:8] Over sampling Ratio Valid values for filter number and filter type are defined in SDFM_FilterNumber and SDFM_FilterType enumerations respectively. SDFM_SET_OSR(X) macro can be used to set the value of the oversampling ratio ,which ranges [1,32] inclusive, in the appropriate bit location. For example the value (SDFM_FILTER_1 | SDFM_FILTER_SINC_2 | SDFM_SET_OSR(16)) will select Filter 1, SINC 2 type with an oversampling ratio of 16.

The config2 parameter is the logical OR of the filter high and low threshold values. The bit definitions for config2 are as follow:

  • config2.[15:0] low threshold

  • config2.[31:16] high threshold The upper 16 bits define the high threshold and the lower 16 bits define the low threshold. SDFM_THRESHOLD(H,L) can be used to combine the high and low thresholds.

Return

None.

void SDFM_configDataFilter(uint32_t base, uint16_t config1, uint16_t config2)

Configure SDFM data filter

This function configures the data filter based on configurations config1 and config2.

Parameters
  • base: is the base address of the SDFM module

  • config1: is the filter number, filter type and over sampling ratio configuration.

  • config2: is filter switch, data representation and data shift values configuration.

The config1 parameter is the logical OR of the filter number, filter type and oversampling ratio. The bit definitions for config1 are as follow:

  • config1.[3:0] Filter number

  • config1.[7:4] Filter type

  • config1.[15:8] Over sampling Ratio Valid values for filter number and filter type are defined in SDFM_FilterNumber and SDFM_FilterType enumerations respectively. SDFM_SET_OSR(X) macro can be used to set the value of the oversampling ratio , which ranges [1,256] inclusive , in the appropriate bit location for config1. For example the value (SDFM_FILTER_2 | SDFM_FILTER_SINC_3 | SDFM_SET_OSR(64)) will select Filter 2 , SINC 3 type with an oversampling ratio of 64.

The config2 parameter is the logical OR of data representation, filter switch, and data shift values The bit definitions for config2 are as follow:

  • config2.[0] Data representation

  • config2.[1] Filter switch

  • config2.[15:2] Shift values Valid values for data representation are given in SDFM_OutputDataFormat enumeration. SDFM_FILTER_DISABLE or SDFM_FILTER_ENABLE will define the filter switch values.SDFM_SHIFT_VALUE(X) macro can be used to set the value of the data shift value,which ranges [0,31] inclusive, in the appropriate bit location for config2. The shift value is valid only in SDFM_DATA_FORMAT_16_BIT data representation format.

Return

None.

The code for this module is contained in driverlib/sdfm.c, with driverlib/sdfm.h containing the API declarations for use by applications.