MCUXpresso SDK API Reference Manual  Rev 2.15.000
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
LPADC: 12-bit SAR Analog-to-Digital Converter Driver

Overview

The MCUXpresso SDK provides a peripheral driver for the 12-bit SAR Analog-to-Digital Converter (LPADC) module of MCUXpresso SDK devices.

Typical use case

Polling Configuration

Refer to the driver examples codes located at <SDK_ROOT>/boards/<BOARD>/driver_examples/lpadc

Interrupt Configuration

Refer to the driver examples codes located at <SDK_ROOT>/boards/<BOARD>/driver_examples/lpadc

Files

file  fsl_lpadc.h
 

Data Structures

struct  lpadc_config_t
 LPADC global configuration. More...
 
struct  lpadc_conv_command_config_t
 Define structure to keep the configuration for conversion command. More...
 
struct  lpadc_conv_trigger_config_t
 Define structure to keep the configuration for conversion trigger. More...
 
struct  lpadc_conv_result_t
 Define the structure to keep the conversion result. More...
 

Macros

#define LPADC_GET_ACTIVE_COMMAND_STATUS(statusVal)   ((statusVal & ADC_STAT_CMDACT_MASK) >> ADC_STAT_CMDACT_SHIFT)
 Define the MACRO function to get command status from status value. More...
 
#define LPADC_GET_ACTIVE_TRIGGER_STATUE(statusVal)   ((statusVal & ADC_STAT_TRGACT_MASK) >> ADC_STAT_TRGACT_SHIFT)
 Define the MACRO function to get trigger status from status value. More...
 

Typedefs

typedef enum
_lpadc_sample_scale_mode 
lpadc_sample_scale_mode_t
 Define enumeration of sample scale mode. More...
 
typedef enum
_lpadc_sample_channel_mode 
lpadc_sample_channel_mode_t
 Define enumeration of channel sample mode. More...
 
typedef enum
_lpadc_hardware_average_mode 
lpadc_hardware_average_mode_t
 Define enumeration of hardware average selection. More...
 
typedef enum
_lpadc_sample_time_mode 
lpadc_sample_time_mode_t
 Define enumeration of sample time selection. More...
 
typedef enum
_lpadc_hardware_compare_mode 
lpadc_hardware_compare_mode_t
 Define enumeration of hardware compare mode. More...
 
typedef enum
_lpadc_reference_voltage_mode 
lpadc_reference_voltage_source_t
 Define enumeration of reference voltage source. More...
 
typedef enum
_lpadc_power_level_mode 
lpadc_power_level_mode_t
 Define enumeration of power configuration. More...
 
typedef enum
_lpadc_trigger_priority_policy 
lpadc_trigger_priority_policy_t
 Define enumeration of trigger priority policy. More...
 

Enumerations

enum  _lpadc_status_flags {
  kLPADC_ResultFIFO0OverflowFlag = ADC_STAT_FOF0_MASK,
  kLPADC_ResultFIFO0ReadyFlag = ADC_STAT_RDY0_MASK,
  kLPADC_ResultFIFOOverflowFlag = kLPADC_ResultFIFO0OverflowFlag,
  kLPADC_ResultFIFOReadyFlag = kLPADC_ResultFIFO0ReadyFlag
}
 Define hardware flags of the module. More...
 
enum  _lpadc_interrupt_enable {
  kLPADC_ResultFIFO0OverflowInterruptEnable = ADC_IE_FOFIE0_MASK,
  kLPADC_FIFO0WatermarkInterruptEnable = ADC_IE_FWMIE0_MASK,
  kLPADC_ResultFIFOOverflowInterruptEnable = kLPADC_ResultFIFO0OverflowInterruptEnable,
  kLPADC_FIFOWatermarkInterruptEnable = kLPADC_FIFO0WatermarkInterruptEnable
}
 Define interrupt switchers of the module. More...
 
enum  _lpadc_sample_scale_mode {
  kLPADC_SamplePartScale = 0U,
  kLPADC_SampleFullScale = 1U
}
 Define enumeration of sample scale mode. More...
 
enum  _lpadc_sample_channel_mode {
  kLPADC_SampleChannelSingleEndSideA = 0x0U,
  kLPADC_SampleChannelSingleEndSideB = 0x1U
}
 Define enumeration of channel sample mode. More...
 
enum  _lpadc_hardware_average_mode {
  kLPADC_HardwareAverageCount1 = 0U,
  kLPADC_HardwareAverageCount2 = 1U,
  kLPADC_HardwareAverageCount4 = 2U,
  kLPADC_HardwareAverageCount8 = 3U,
  kLPADC_HardwareAverageCount16 = 4U,
  kLPADC_HardwareAverageCount32 = 5U,
  kLPADC_HardwareAverageCount64 = 6U,
  kLPADC_HardwareAverageCount128 = 7U
}
 Define enumeration of hardware average selection. More...
 
enum  _lpadc_sample_time_mode {
  kLPADC_SampleTimeADCK3 = 0U,
  kLPADC_SampleTimeADCK5 = 1U,
  kLPADC_SampleTimeADCK7 = 2U,
  kLPADC_SampleTimeADCK11 = 3U,
  kLPADC_SampleTimeADCK19 = 4U,
  kLPADC_SampleTimeADCK35 = 5U,
  kLPADC_SampleTimeADCK67 = 6U,
  kLPADC_SampleTimeADCK131 = 7U
}
 Define enumeration of sample time selection. More...
 
enum  _lpadc_hardware_compare_mode {
  kLPADC_HardwareCompareDisabled = 0U,
  kLPADC_HardwareCompareStoreOnTrue = 2U,
  kLPADC_HardwareCompareRepeatUntilTrue = 3U
}
 Define enumeration of hardware compare mode. More...
 
enum  _lpadc_reference_voltage_mode {
  kLPADC_ReferenceVoltageAlt1 = 0U,
  kLPADC_ReferenceVoltageAlt2 = 1U,
  kLPADC_ReferenceVoltageAlt3 = 2U
}
 Define enumeration of reference voltage source. More...
 
enum  _lpadc_power_level_mode {
  kLPADC_PowerLevelAlt1 = 0U,
  kLPADC_PowerLevelAlt2 = 1U,
  kLPADC_PowerLevelAlt3 = 2U,
  kLPADC_PowerLevelAlt4 = 3U
}
 Define enumeration of power configuration. More...
 
enum  _lpadc_trigger_priority_policy {
  kLPADC_ConvPreemptImmediatelyNotAutoResumed = 0x0U,
  kLPADC_ConvPreemptSoftlyNotAutoResumed = 0x1U,
  kLPADC_TriggerPriorityPreemptImmediately,
  kLPADC_TriggerPriorityPreemptSoftly
}
 Define enumeration of trigger priority policy. More...
 

Driver version

#define FSL_LPADC_DRIVER_VERSION   (MAKE_VERSION(2, 8, 4))
 LPADC driver version 2.8.4. More...
 

Initialization & de-initialization.

void LPADC_Init (ADC_Type *base, const lpadc_config_t *config)
 Initializes the LPADC module. More...
 
void LPADC_GetDefaultConfig (lpadc_config_t *config)
 Gets an available pre-defined settings for initial configuration. More...
 
void LPADC_Deinit (ADC_Type *base)
 De-initializes the LPADC module. More...
 
static void LPADC_Enable (ADC_Type *base, bool enable)
 Switch on/off the LPADC module. More...
 
static void LPADC_DoResetFIFO (ADC_Type *base)
 Do reset the conversion FIFO. More...
 
static void LPADC_DoResetConfig (ADC_Type *base)
 Do reset the module's configuration. More...
 

Status

static uint32_t LPADC_GetStatusFlags (ADC_Type *base)
 Get status flags. More...
 
static void LPADC_ClearStatusFlags (ADC_Type *base, uint32_t mask)
 Clear status flags. More...
 

Interrupts

static void LPADC_EnableInterrupts (ADC_Type *base, uint32_t mask)
 Enable interrupts. More...
 
static void LPADC_DisableInterrupts (ADC_Type *base, uint32_t mask)
 Disable interrupts. More...
 

DMA Control

static void LPADC_EnableFIFOWatermarkDMA (ADC_Type *base, bool enable)
 Switch on/off the DMA trigger for FIFO watermark event. More...
 

Trigger and conversion with FIFO.

static uint32_t LPADC_GetConvResultCount (ADC_Type *base)
 Get the count of result kept in conversion FIFO. More...
 
bool LPADC_GetConvResult (ADC_Type *base, lpadc_conv_result_t *result)
 Get the result in conversion FIFO. More...
 
void LPADC_GetConvResultBlocking (ADC_Type *base, lpadc_conv_result_t *result)
 Get the result in conversion FIFO using blocking method. More...
 
void LPADC_SetConvTriggerConfig (ADC_Type *base, uint32_t triggerId, const lpadc_conv_trigger_config_t *config)
 Configure the conversion trigger source. More...
 
void LPADC_GetDefaultConvTriggerConfig (lpadc_conv_trigger_config_t *config)
 Gets an available pre-defined settings for trigger's configuration. More...
 
static void LPADC_DoSoftwareTrigger (ADC_Type *base, uint32_t triggerIdMask)
 Do software trigger to conversion command. More...
 
void LPADC_SetConvCommandConfig (ADC_Type *base, uint32_t commandId, const lpadc_conv_command_config_t *config)
 Configure conversion command. More...
 
void LPADC_GetDefaultConvCommandConfig (lpadc_conv_command_config_t *config)
 Gets an available pre-defined settings for conversion command's configuration. More...
 
void LPADC_EnableCalibration (ADC_Type *base, bool enable)
 Enable the calibration function. More...
 
static void LPADC_SetOffsetValue (ADC_Type *base, uint32_t value)
 Set proper offset value to trim ADC. More...
 
void LPADC_DoAutoCalibration (ADC_Type *base)
 Do auto calibration. More...
 

Data Structure Documentation

struct lpadc_config_t

This structure would used to keep the settings for initialization.

Data Fields

bool enableInternalClock
 Enables the internally generated clock source. More...
 
bool enableVref1LowVoltage
 If voltage reference option1 input is below 1.8V, it should be "true". More...
 
bool enableInDozeMode
 Control system transition to Stop and Wait power modes while ADC is converting. More...
 
bool enableAnalogPreliminary
 ADC analog circuits are pre-enabled and ready to execute conversions without startup delays(at the cost of higher DC current consumption). More...
 
uint32_t powerUpDelay
 When the analog circuits are not pre-enabled, the ADC analog circuits are only powered while the ADC is active and there is a counted delay defined by this field after an initial trigger transitions the ADC from its Idle state to allow time for the analog circuits to stabilize. More...
 
lpadc_reference_voltage_source_t referenceVoltageSource
 Selects the voltage reference high used for conversions. More...
 
lpadc_power_level_mode_t powerLevelMode
 Power Configuration Selection. More...
 
lpadc_trigger_priority_policy_t triggerPriorityPolicy
 Control how higher priority triggers are handled, see to lpadc_trigger_priority_policy_t. More...
 
bool enableConvPause
 Enables the ADC pausing function. More...
 
uint32_t convPauseDelay
 Controls the duration of pausing during command execution sequencing. More...
 
uint32_t FIFOWatermark
 FIFOWatermark is a programmable threshold setting. More...
 

Field Documentation

bool lpadc_config_t::enableInternalClock

The clock source is used in clock selection logic at the chip level and is optionally used for the ADC clock source.

bool lpadc_config_t::enableVref1LowVoltage

If voltage reference option1 input is above 1.8V, it should be "false".

bool lpadc_config_t::enableInDozeMode

When enabled in Doze mode, immediate entries to Wait or Stop are allowed. When disabled, the ADC will wait for the current averaging iteration/FIFO storage to complete before acknowledging stop or wait mode entry.

bool lpadc_config_t::enableAnalogPreliminary
uint32_t lpadc_config_t::powerUpDelay

The startup delay count of (powerUpDelay * 4) ADCK cycles must result in a longer delay than the analog startup time.

lpadc_reference_voltage_source_t lpadc_config_t::referenceVoltageSource
lpadc_power_level_mode_t lpadc_config_t::powerLevelMode
lpadc_trigger_priority_policy_t lpadc_config_t::triggerPriorityPolicy
bool lpadc_config_t::enableConvPause

When enabled, a programmable delay is inserted during command execution sequencing between LOOP iterations, between commands in a sequence, and between conversions when command is executing in "Compare Until True" configuration.

uint32_t lpadc_config_t::convPauseDelay

The pause delay is a count of (convPauseDelay*4) ADCK cycles. Only available when ADC pausing function is enabled. The available value range is in 9-bit.

uint32_t lpadc_config_t::FIFOWatermark

When the number of datawords stored in the ADC Result FIFO is greater than the value in this field, the ready flag would be asserted to indicate stored data has reached the programmable threshold.

struct lpadc_conv_command_config_t

Data Fields

lpadc_sample_channel_mode_t sampleChannelMode
 Channel sample mode. More...
 
uint32_t channelNumber
 Channel number, select the channel or channel pair. More...
 
uint32_t chainedNextCommandNumber
 Selects the next command to be executed after this command completes. More...
 
bool enableAutoChannelIncrement
 Loop with increment: when disabled, the "loopCount" field selects the number of times the selected channel is converted consecutively; when enabled, the "loopCount" field defines how many consecutive channels are converted as part of the command execution. More...
 
uint32_t loopCount
 Selects how many times this command executes before finish and transition to the next command or Idle state. More...
 
lpadc_hardware_average_mode_t hardwareAverageMode
 Hardware average selection. More...
 
lpadc_sample_time_mode_t sampleTimeMode
 Sample time selection. More...
 
lpadc_hardware_compare_mode_t hardwareCompareMode
 Hardware compare selection. More...
 
uint32_t hardwareCompareValueHigh
 Compare Value High. More...
 
uint32_t hardwareCompareValueLow
 Compare Value Low. More...
 

Field Documentation

lpadc_sample_channel_mode_t lpadc_conv_command_config_t::sampleChannelMode
uint32_t lpadc_conv_command_config_t::channelNumber
uint32_t lpadc_conv_command_config_t::chainedNextCommandNumber

1-15 is available, 0 is to terminate the chain after this command.

bool lpadc_conv_command_config_t::enableAutoChannelIncrement
uint32_t lpadc_conv_command_config_t::loopCount

Command executes LOOP+1 times. 0-15 is available.

lpadc_hardware_average_mode_t lpadc_conv_command_config_t::hardwareAverageMode
lpadc_sample_time_mode_t lpadc_conv_command_config_t::sampleTimeMode
lpadc_hardware_compare_mode_t lpadc_conv_command_config_t::hardwareCompareMode
uint32_t lpadc_conv_command_config_t::hardwareCompareValueHigh

The available value range is in 16-bit.

uint32_t lpadc_conv_command_config_t::hardwareCompareValueLow

The available value range is in 16-bit.

struct lpadc_conv_trigger_config_t

Data Fields

uint32_t targetCommandId
 Select the command from command buffer to execute upon detect of the associated trigger event. More...
 
uint32_t delayPower
 Select the trigger delay duration to wait at the start of servicing a trigger event. More...
 
uint32_t priority
 Sets the priority of the associated trigger source. More...
 
bool enableHardwareTrigger
 Enable hardware trigger source to initiate conversion on the rising edge of the input trigger source or not. More...
 

Field Documentation

uint32_t lpadc_conv_trigger_config_t::targetCommandId
uint32_t lpadc_conv_trigger_config_t::delayPower

When this field is clear, then no delay is incurred. When this field is set to a non-zero value, the duration for the delay is 2^delayPower ADCK cycles. The available value range is 4-bit.

uint32_t lpadc_conv_trigger_config_t::priority

If two or more triggers have the same priority level setting, the lower order trigger event has the higher priority. The lower value for this field is for the higher priority, the available value range is 1-bit.

bool lpadc_conv_trigger_config_t::enableHardwareTrigger

THe software trigger is always available.

struct lpadc_conv_result_t

Data Fields

uint32_t commandIdSource
 Indicate the command buffer being executed that generated this result. More...
 
uint32_t loopCountIndex
 Indicate the loop count value during command execution that generated this result. More...
 
uint32_t triggerIdSource
 Indicate the trigger source that initiated a conversion and generated this result. More...
 
uint16_t convValue
 Data result. More...
 

Field Documentation

uint32_t lpadc_conv_result_t::commandIdSource
uint32_t lpadc_conv_result_t::loopCountIndex
uint32_t lpadc_conv_result_t::triggerIdSource
uint16_t lpadc_conv_result_t::convValue

Macro Definition Documentation

#define FSL_LPADC_DRIVER_VERSION   (MAKE_VERSION(2, 8, 4))
#define LPADC_GET_ACTIVE_COMMAND_STATUS (   statusVal)    ((statusVal & ADC_STAT_CMDACT_MASK) >> ADC_STAT_CMDACT_SHIFT)

The statusVal is the return value from LPADC_GetStatusFlags().

#define LPADC_GET_ACTIVE_TRIGGER_STATUE (   statusVal)    ((statusVal & ADC_STAT_TRGACT_MASK) >> ADC_STAT_TRGACT_SHIFT)

The statusVal is the return value from LPADC_GetStatusFlags().

Typedef Documentation

The sample scale mode is used to reduce the selected ADC analog channel input voltage level by a factor. The maximum possible voltage on the ADC channel input should be considered when selecting a scale mode to ensure that the reducing factor always results voltage level at or below the VREFH reference. This reducing capability allows conversion of analog inputs higher than VREFH. A-side and B-side channel inputs are both scaled using the scale mode.

The channel sample mode configures the channel with single-end/differential/dual-single-end, side A/B.

It Selects how many ADC conversions are averaged to create the ADC result. An internal storage buffer is used to capture temporary results while the averaging iterations are executed.

Note
Some enumerator values are not available on some devices, mainly depends on the size of AVGS field in CMDH register.

The shortest sample time maximizes conversion speed for lower impedance inputs. Extending sample time allows higher impedance inputs to be accurately sampled. Longer sample times can also be used to lower overall power consumption when command looping and sequencing is configured and high conversion rates are not required.

After an ADC channel input is sampled and converted and any averaging iterations are performed, this mode setting guides operation of the automatic compare function to optionally only store when the compare operation is true. When compare is enabled, the conversion result is compared to the compare values.

For detail information, need to check the SoC's specification.

Configures the ADC for power and performance. In the highest power setting the highest conversion rates will be possible. Refer to the device data sheet for power and performance capabilities for each setting.

This selection controls how higher priority triggers are handled.

Note
kLPADC_TriggerPriorityPreemptSubsequently is not available on some devices, mainly depends on the size of TPRICTRL field in CFG register.

Enumeration Type Documentation

Enumerator
kLPADC_ResultFIFO0OverflowFlag 

Indicates that more data has been written to the Result FIFO 0 than it can hold.

kLPADC_ResultFIFO0ReadyFlag 

Indicates when the number of valid datawords in the result FIFO 0 is greater than the setting watermark level.

kLPADC_ResultFIFOOverflowFlag 

To compilitable with old version, do not recommend using this, please use kLPADC_ResultFIFO0OverflowFlag as instead.

kLPADC_ResultFIFOReadyFlag 

To compilitable with old version, do not recommend using this, please use kLPADC_ResultFIFO0ReadyFlag as instead.

Note: LPADC of different chips supports different number of trigger sources, please check the Reference Manual for details.

Enumerator
kLPADC_ResultFIFO0OverflowInterruptEnable 

Configures ADC to generate overflow interrupt requests when FOF0 flag is asserted.

kLPADC_FIFO0WatermarkInterruptEnable 

Configures ADC to generate watermark interrupt requests when RDY0 flag is asserted.

kLPADC_ResultFIFOOverflowInterruptEnable 

To compilitable with old version, do not recommend using this, please use kLPADC_ResultFIFO0OverflowInterruptEnable as instead.

kLPADC_FIFOWatermarkInterruptEnable 

To compilitable with old version, do not recommend using this, please use kLPADC_FIFO0WatermarkInterruptEnable as instead.

The sample scale mode is used to reduce the selected ADC analog channel input voltage level by a factor. The maximum possible voltage on the ADC channel input should be considered when selecting a scale mode to ensure that the reducing factor always results voltage level at or below the VREFH reference. This reducing capability allows conversion of analog inputs higher than VREFH. A-side and B-side channel inputs are both scaled using the scale mode.

Enumerator
kLPADC_SamplePartScale 

Use divided input voltage signal.

(For scale select,please refer to the reference manual).

kLPADC_SampleFullScale 

Full scale (Factor of 1).

The channel sample mode configures the channel with single-end/differential/dual-single-end, side A/B.

Enumerator
kLPADC_SampleChannelSingleEndSideA 

Single-end mode, only A-side channel is converted.

kLPADC_SampleChannelSingleEndSideB 

Single-end mode, only B-side channel is converted.

It Selects how many ADC conversions are averaged to create the ADC result. An internal storage buffer is used to capture temporary results while the averaging iterations are executed.

Note
Some enumerator values are not available on some devices, mainly depends on the size of AVGS field in CMDH register.
Enumerator
kLPADC_HardwareAverageCount1 

Single conversion.

kLPADC_HardwareAverageCount2 

2 conversions averaged.

kLPADC_HardwareAverageCount4 

4 conversions averaged.

kLPADC_HardwareAverageCount8 

8 conversions averaged.

kLPADC_HardwareAverageCount16 

16 conversions averaged.

kLPADC_HardwareAverageCount32 

32 conversions averaged.

kLPADC_HardwareAverageCount64 

64 conversions averaged.

kLPADC_HardwareAverageCount128 

128 conversions averaged.

The shortest sample time maximizes conversion speed for lower impedance inputs. Extending sample time allows higher impedance inputs to be accurately sampled. Longer sample times can also be used to lower overall power consumption when command looping and sequencing is configured and high conversion rates are not required.

Enumerator
kLPADC_SampleTimeADCK3 

3 ADCK cycles total sample time.

kLPADC_SampleTimeADCK5 

5 ADCK cycles total sample time.

kLPADC_SampleTimeADCK7 

7 ADCK cycles total sample time.

kLPADC_SampleTimeADCK11 

11 ADCK cycles total sample time.

kLPADC_SampleTimeADCK19 

19 ADCK cycles total sample time.

kLPADC_SampleTimeADCK35 

35 ADCK cycles total sample time.

kLPADC_SampleTimeADCK67 

69 ADCK cycles total sample time.

kLPADC_SampleTimeADCK131 

131 ADCK cycles total sample time.

After an ADC channel input is sampled and converted and any averaging iterations are performed, this mode setting guides operation of the automatic compare function to optionally only store when the compare operation is true. When compare is enabled, the conversion result is compared to the compare values.

Enumerator
kLPADC_HardwareCompareDisabled 

Compare disabled.

kLPADC_HardwareCompareStoreOnTrue 

Compare enabled.

Store on true.

kLPADC_HardwareCompareRepeatUntilTrue 

Compare enabled.

Repeat channel acquisition until true.

For detail information, need to check the SoC's specification.

Enumerator
kLPADC_ReferenceVoltageAlt1 

Option 1 setting.

kLPADC_ReferenceVoltageAlt2 

Option 2 setting.

kLPADC_ReferenceVoltageAlt3 

Option 3 setting.

Configures the ADC for power and performance. In the highest power setting the highest conversion rates will be possible. Refer to the device data sheet for power and performance capabilities for each setting.

Enumerator
kLPADC_PowerLevelAlt1 

Lowest power setting.

kLPADC_PowerLevelAlt2 

Next lowest power setting.

kLPADC_PowerLevelAlt3 

...

kLPADC_PowerLevelAlt4 

Highest power setting.

This selection controls how higher priority triggers are handled.

Note
kLPADC_TriggerPriorityPreemptSubsequently is not available on some devices, mainly depends on the size of TPRICTRL field in CFG register.
Enumerator
kLPADC_ConvPreemptImmediatelyNotAutoResumed 

If a higher priority trigger is detected during command processing, the current conversion is aborted and the new command specified by the trigger is started, when higher priority conversion finishes, the preempted conversion is not automatically resumed or restarted.

kLPADC_ConvPreemptSoftlyNotAutoResumed 

If a higher priority trigger is received during command processing, the current conversion is completed (including averaging iterations and compare function if enabled) and stored to the result FIFO before the higher priority trigger/command is initiated, when higher priority conversion finishes, the preempted conversion is not resumed or restarted.

kLPADC_TriggerPriorityPreemptImmediately 

Legacy support is not recommended as it only ensures compatibility with older versions.

kLPADC_TriggerPriorityPreemptSoftly 

Legacy support is not recommended as it only ensures compatibility with older versions.

Function Documentation

void LPADC_Init ( ADC_Type *  base,
const lpadc_config_t config 
)
Parameters
baseLPADC peripheral base address.
configPointer to configuration structure. See "lpadc_config_t".
void LPADC_GetDefaultConfig ( lpadc_config_t config)

This function initializes the converter configuration structure with an available settings. The default values are:

* config->enableInDozeMode = true;
* config->enableAnalogPreliminary = false;
* config->powerUpDelay = 0x80;
* config->referenceVoltageSource = kLPADC_ReferenceVoltageAlt1;
* config->powerLevelMode = kLPADC_PowerLevelAlt1;
* config->triggerPriorityPolicy = kLPADC_TriggerPriorityPreemptImmediately;
* config->enableConvPause = false;
* config->convPauseDelay = 0U;
* config->FIFOWatermark = 0U;
*
Parameters
configPointer to configuration structure.
void LPADC_Deinit ( ADC_Type *  base)
Parameters
baseLPADC peripheral base address.
static void LPADC_Enable ( ADC_Type *  base,
bool  enable 
)
inlinestatic
Parameters
baseLPADC peripheral base address.
enableswitcher to the module.
static void LPADC_DoResetFIFO ( ADC_Type *  base)
inlinestatic
Parameters
baseLPADC peripheral base address.
static void LPADC_DoResetConfig ( ADC_Type *  base)
inlinestatic

Reset all ADC internal logic and registers, except the Control Register (ADCx_CTRL).

Parameters
baseLPADC peripheral base address.
static uint32_t LPADC_GetStatusFlags ( ADC_Type *  base)
inlinestatic
Parameters
baseLPADC peripheral base address.
Returns
status flags' mask. See to _lpadc_status_flags.
static void LPADC_ClearStatusFlags ( ADC_Type *  base,
uint32_t  mask 
)
inlinestatic

Only the flags can be cleared by writing ADCx_STATUS register would be cleared by this API.

Parameters
baseLPADC peripheral base address.
maskMask value for flags to be cleared. See to _lpadc_status_flags.
static void LPADC_EnableInterrupts ( ADC_Type *  base,
uint32_t  mask 
)
inlinestatic
Parameters
baseLPADC peripheral base address.
maskMask value for interrupt events. See to _lpadc_interrupt_enable.
static void LPADC_DisableInterrupts ( ADC_Type *  base,
uint32_t  mask 
)
inlinestatic
Parameters
baseLPADC peripheral base address.
maskMask value for interrupt events. See to _lpadc_interrupt_enable.
static void LPADC_EnableFIFOWatermarkDMA ( ADC_Type *  base,
bool  enable 
)
inlinestatic
Parameters
baseLPADC peripheral base address.
enableSwitcher to the event.
static uint32_t LPADC_GetConvResultCount ( ADC_Type *  base)
inlinestatic
Parameters
baseLPADC peripheral base address.
Returns
The count of result kept in conversion FIFO.
bool LPADC_GetConvResult ( ADC_Type *  base,
lpadc_conv_result_t result 
)
Parameters
baseLPADC peripheral base address.
resultPointer to structure variable that keeps the conversion result in conversion FIFO.
Returns
Status whether FIFO entry is valid.
void LPADC_GetConvResultBlocking ( ADC_Type *  base,
lpadc_conv_result_t result 
)
Parameters
baseLPADC peripheral base address.
resultPointer to structure variable that keeps the conversion result in conversion FIFO.
void LPADC_SetConvTriggerConfig ( ADC_Type *  base,
uint32_t  triggerId,
const lpadc_conv_trigger_config_t config 
)

Each programmable trigger can launch the conversion command in command buffer.

Parameters
baseLPADC peripheral base address.
triggerIdID for each trigger. Typically, the available value range is from 0.
configPointer to configuration structure. See to lpadc_conv_trigger_config_t.
void LPADC_GetDefaultConvTriggerConfig ( lpadc_conv_trigger_config_t config)

This function initializes the trigger's configuration structure with an available settings. The default values are:

* config->targetCommandId = 0U;
* config->delayPower = 0U;
* config->priority = 0U;
* config->channelAFIFOSelect = 0U;
* config->channelBFIFOSelect = 0U;
* config->enableHardwareTrigger = false;
*
Parameters
configPointer to configuration structure.
static void LPADC_DoSoftwareTrigger ( ADC_Type *  base,
uint32_t  triggerIdMask 
)
inlinestatic
Parameters
baseLPADC peripheral base address.
triggerIdMaskMask value for software trigger indexes, which count from zero.
void LPADC_SetConvCommandConfig ( ADC_Type *  base,
uint32_t  commandId,
const lpadc_conv_command_config_t config 
)
Note
The number of compare value register on different chips is different, that is mean in some chips, some command buffers do not have the compare functionality.
Parameters
baseLPADC peripheral base address.
commandIdID for command in command buffer. Typically, the available value range is 1 - 15.
configPointer to configuration structure. See to lpadc_conv_command_config_t.
void LPADC_GetDefaultConvCommandConfig ( lpadc_conv_command_config_t config)

This function initializes the conversion command's configuration structure with an available settings. The default values are:

* config->sampleScaleMode = kLPADC_SampleFullScale;
* config->channelBScaleMode = kLPADC_SampleFullScale;
* config->sampleChannelMode = kLPADC_SampleChannelSingleEndSideA;
* config->channelNumber = 0U;
* config->channelBNumber = 0U;
* config->chainedNextCommandNumber = 0U;
* config->enableAutoChannelIncrement = false;
* config->loopCount = 0U;
* config->hardwareAverageMode = kLPADC_HardwareAverageCount1;
* config->sampleTimeMode = kLPADC_SampleTimeADCK3;
* config->hardwareCompareMode = kLPADC_HardwareCompareDisabled;
* config->hardwareCompareValueHigh = 0U;
* config->hardwareCompareValueLow = 0U;
* config->conversionResolutionMode = kLPADC_ConversionResolutionStandard;
* config->enableWaitTrigger = false;
* config->enableChannelB = false;
*
Parameters
configPointer to configuration structure.
void LPADC_EnableCalibration ( ADC_Type *  base,
bool  enable 
)

When CALOFS is set, the ADC is configured to perform a calibration function anytime the ADC executes a conversion. Any channel selected is ignored and the value returned in the RESFIFO is a signed value between -31 and 31. -32 is not a valid and is never a returned value. Software should copy the lower 6- bits of the conversion result stored in the RESFIFO after a completed calibration conversion to the OFSTRIM field. The OFSTRIM field is used in normal operation for offset correction.

Parameters
baseLPADC peripheral base address.
enableswitcher to the calibration function.
static void LPADC_SetOffsetValue ( ADC_Type *  base,
uint32_t  value 
)
inlinestatic

To minimize the offset during normal operation, software should read the conversion result from the RESFIFO calibration operation and write the lower 6 bits to the OFSTRIM register.

Parameters
baseLPADC peripheral base address.
valueSetting offset value.
void LPADC_DoAutoCalibration ( ADC_Type *  base)

Calibration function should be executed before using converter in application. It used the software trigger and a dummy conversion, get the offset and write them into the OFSTRIM register. It called some of functional API including: -LPADC_EnableCalibration(...) -LPADC_LPADC_SetOffsetValue(...) -LPADC_SetConvCommandConfig(...) -LPADC_SetConvTriggerConfig(...)

Parameters
baseLPADC peripheral base address.