44 #include "adc_hw_access.h"
99 ADC_Type *
const base = s_adcBase[instance];
101 uint32_t adc_freq = 0u;
106 adc_freq = adc_freq / (uint32_t)(1UL << ((uint32_t)(config->
clockDivide)));
113 ADC_SetTriggerMode(base, config->
trigger);
115 ADC_SetTriggerSelect(instance, config->
triggerSel);
116 ADC_SetDMAEnableFlag(base, config->
dmaEnable);
117 ADC_SetVoltageReference(base, config->
voltageRef);
143 const ADC_Type *
const base = s_adcBase[instance];
148 config->
trigger = ADC_GetTriggerMode(base);
149 config->
triggerSel = ADC_GetTriggerSelect(instance);
151 config->
dmaEnable = ADC_GetDMAEnableFlag(base);
152 config->
voltageRef = ADC_GetVoltageReference(base);
179 ADC_Type *
const baseAddr = s_adcBase[instance];
201 #if FEATURE_ADC_HAS_EXTRA_NUM_REGS
202 for(idx = 0U; idx < ADC_aSC1_COUNT; idx++)
216 ADC_SetSupplyMonitoringEnableFlag(simBase,
false);
258 ADC_Type *
const base = s_adcBase[instance];
262 ADC_SetHwCompareComp1Value(base, config->
compVal1);
263 ADC_SetHwCompareComp2Value(base, config->
compVal2);
280 const ADC_Type *
const base = s_adcBase[instance];
284 config->
compVal1 = ADC_GetHwCompareComp1Value(base);
285 config->
compVal2 = ADC_GetHwCompareComp2Value(base);
321 ADC_Type *
const base = s_adcBase[instance];
322 ADC_SetHwAverageEnableFlag(base, config->
hwAvgEnable);
323 ADC_SetHwAverageMode(base, config->
hwAverage);
340 const ADC_Type *
const base = s_adcBase[instance];
341 config->
hwAvgEnable = ADC_GetHwAverageEnableFlag(base);
342 config->
hwAverage = ADC_GetHwAverageMode(base);
379 const uint8_t chanIndex,
386 ADC_Type *
const base = s_adcBase[instance];
404 const uint8_t chanIndex,
411 const ADC_Type *
const base = s_adcBase[instance];
412 config->
interruptEnable = ADC_GetChanInterruptEnableFlag(base, chanIndex);
413 config->
channel = ADC_GetInputChannel(base, chanIndex);
428 uint32_t intermValue = 0U;
429 #if (ADC_INSTANCE_COUNT == 1U)
431 #elif (ADC_INSTANCE_COUNT == 2U)
438 intermValue = simBase->
ADCOPT & (~ mask[instance]);
452 simBase->
ADCOPT = intermValue;
467 const ADC_Type *
const base = s_adcBase[instance];
468 while (ADC_GetConvActiveFlag(base) ==
true)
484 const uint8_t chanIndex)
489 const ADC_Type *
const base = s_adcBase[instance];
491 #if FEATURE_ADC_HAS_EXTRA_NUM_REGS
492 uint32_t tmp = base->aSC1[chanIndex];
493 tmp = (tmp & ADC_aSC1_COCO_MASK) >> ADC_aSC1_COCO_SHIFT;
495 uint32_t tmp = base->
SC1[chanIndex];
499 return (tmp != 0u) ?
true :
false;
511 const uint8_t chanIndex,
512 uint16_t *
const result)
517 const ADC_Type *
const base = s_adcBase[instance];
519 #if FEATURE_ADC_HAS_EXTRA_NUM_REGS
523 uint32_t tmp = base->aR[chanIndex];
524 tmp = (tmp & ADC_aR_D_MASK) >> ADC_aR_D_SHIFT;
529 uint32_t tmp = base->
R[chanIndex];
533 *result = (uint16_t)tmp;
552 ADC_Type *
const base = s_adcBase[instance];
554 bool hwavgen = ADC_GetHwAverageEnableFlag(base);
558 ADC_SetHwAverageEnableFlag(base,
true);
571 uint32_t adc_freq = 0u;
604 ADC_SetClockDivide(base, adc_clk_divide);
607 ADC_SetCalibrationActiveFlag(base,
true);
608 while (ADC_GetCalibrationActiveFlag(base))
614 ADC_SetClockDivide(base, adc_clk_divide_res);
616 ADC_SetHwAverageEnableFlag(base, hwavgen);
617 ADC_SetHwAverageMode(base, hwavg);
618 ADC_SetTriggerMode(base, trig);
654 ADC_Type *
const base = s_adcBase[instance];
655 ADC_SetUserGainValue(base, config->
userGain);
656 ADC_SetUserOffsetValue(base, config->
userOffset);
673 const ADC_Type *
const base = s_adcBase[instance];
674 config->
userGain = ADC_GetUserGainValue(base);
675 config->
userOffset = ADC_GetUserOffsetValue(base);
708 ADC_Type *
const base = s_adcBase[instance];
711 ADC_ClearLatchTriggers(base);
714 while (ADC_GetTriggerLatchFlags(base) != 0u)
731 ADC_Type *
const base = s_adcBase[instance];
747 const ADC_Type *
const base = s_adcBase[instance];
static ADC_Type *const s_adcBase[ADC_INSTANCE_COUNT]
#define ADC_SC1_COCO_SHIFT
Defines the user calibration configuration.
#define ADC_USR_OFS_USR_OFS(x)
bool continuousConvEnable
uint32_t ADC_DRV_GetTriggerErrorFlags(const uint32_t instance)
Get the trigger error flags bits of the ADC instance.
void ADC_DRV_AutoCalibration(const uint32_t instance)
Executes an Auto-Calibration.
adc_trigger_sel_t triggerSel
adc_voltage_reference_t voltageRef
#define ADC_SC2_REFSEL(x)
adc_clk_divide_t
Clock Divider selection.
void ADC_DRV_GetHwAverageConfig(const uint32_t instance, adc_average_config_t *const config)
Gets the current Hardware Average configuration.
bool supplyMonitoringEnable
void ADC_DRV_InitHwCompareStruct(adc_compare_config_t *const config)
Initializes the Hardware Compare configuration structure.
void ADC_DRV_InitHwAverageStruct(adc_average_config_t *const config)
Initializes the Hardware Average configuration structure.
bool ADC_DRV_GetConvCompleteFlag(const uint32_t instance, const uint8_t chanIndex)
Gets the control channel Conversion Complete Flag state.
void ADC_DRV_ConfigConverter(const uint32_t instance, const adc_converter_config_t *const config)
Configures the converter with the given configuration structure.
volatile uint32_t CHIPCTL
adc_input_clock_t inputClock
#define ADC_CFG2_SMPLTS(x)
#define ADC_DEFAULT_USER_GAIN
ADC default User Gain from RM.
void ADC_DRV_ConfigUserCalibration(const uint32_t instance, const adc_calibration_t *const config)
Configures the User Calibration feature with the given configuration structure.
void ADC_DRV_Reset(const uint32_t instance)
Resets the converter (sets all configurations to reset values)
void ADC_DRV_SetSwPretrigger(const uint32_t instance, const adc_sw_pretrigger_t swPretrigger)
This function sets the software pretrigger - affects only first 4 control channels.
adc_clk_divide_t clockDivide
void ADC_DRV_GetChanResult(const uint32_t instance, const uint8_t chanIndex, uint16_t *const result)
Gets the last result for the selected control channel.
#define ADC_CLOCK_FREQ_MIN_RUNTIME
Defines the hardware average configuration.
#define SIM_CHIPCTL_ADC_SUPPLY_MASK
#define SIM_ADCOPT_ADC0SWPRETRG_MASK
void ADC_DRV_ConfigChan(const uint32_t instance, const uint8_t chanIndex, const adc_chan_config_t *const config)
Configures the selected control channel with the given configuration structure.
void ADC_DRV_ConfigHwCompare(const uint32_t instance, const adc_compare_config_t *const config)
Configures the Hardware Compare feature with the given configuration structure.
void ADC_DRV_GetChanConfig(const uint32_t instance, const uint8_t chanIndex, adc_chan_config_t *const config)
Gets the current control channel configuration for the selected channel index.
void ADC_DRV_InitChanStruct(adc_chan_config_t *const config)
Initializes the control channel configuration structure.
adc_sw_pretrigger_t
Software pretriggers which may be set from Trigger Latching and Arbitration Unit. ...
status_t CLOCK_SYS_GetFreq(clock_names_t clockName, uint32_t *frequency)
Gets the clock frequency for a specific clock name.
void ADC_DRV_InitConverterStruct(adc_converter_config_t *const config)
Initializes the converter configuration structure.
void ADC_DRV_ClearTriggerErrors(const uint32_t instance)
Clear all latch trigger error.
#define ADC_SC2_TRGSTERR_MASK
void ADC_DRV_GetConverterConfig(const uint32_t instance, adc_converter_config_t *const config)
Gets the current converter configuration.
#define ADC_CLOCK_FREQ_MAX_RUNTIME
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
IRQn_Type
Defines the Interrupt Numbers definitions.
volatile uint32_t USR_OFS
void ADC_DRV_InitUserCalibrationStruct(adc_calibration_t *const config)
Initializes the User Calibration configuration structure.
#define ADC_CFG1_ADICLK(x)
IRQn_Type ADC_DRV_GetInterruptNumber(const uint32_t instance)
Returns the interrupt number for the ADC instance.
bool compareRangeFuncEnable
volatile const uint32_t R[16u]
Defines the converter configuration.
#define SIM_ADCOPT_ADC1SWPRETRG(x)
#define ADC_INSTANCE_COUNT
adc_trigger_t
Trigger type selection.
#define SIM_ADCOPT_ADC1SWPRETRG_MASK
void ADC_DRV_GetUserCalibration(const uint32_t instance, adc_calibration_t *const config)
Gets the current User Calibration configuration.
#define SIM_ADCOPT_ADC0SWPRETRG(x)
#define ADC_SC2_TRGSTERR_SHIFT
adc_average_t
Hardware average selection.
#define ADC_SC1_COCO_MASK
bool compareGreaterThanEnable
void ADC_DRV_ClearLatchedTriggers(const uint32_t instance, const adc_latch_clear_t clearMode)
Clear latched triggers under processing.
#define ADC_DEFAULT_SAMPLE_TIME
ADC default Sample Time from RM.
clock_names_t
Clock names.
#define NUMBER_OF_ALT_CLOCKS
adc_latch_clear_t
Defines the trigger latch clear method Implements : adc_latch_clear_t_Class.
#define ADC_CTRL_CHANS_COUNT
ADC number of control channels.
void ADC_DRV_WaitConvDone(const uint32_t instance)
Waits for a conversion/calibration to finish.
#define SIM_CHIPCTL_ADC_SUPPLYEN_MASK
adc_resolution_t resolution
adc_pretrigger_sel_t pretriggerSel
void ADC_DRV_GetHwCompareConfig(const uint32_t instance, adc_compare_config_t *const config)
Gets the current Hardware Compare configuration.
void ADC_DRV_ConfigHwAverage(const uint32_t instance, const adc_average_config_t *const config)
Configures the Hardware Average feature with the given configuration structure.
Defines the hardware compare configuration.
adc_inputchannel_t channel
Defines the control channel configuration.
volatile uint32_t SC1[16u]