HPM SDK
HPMicro Software Development Kit
hpm_adc16_drv.h File Reference
#include "hpm_common.h"
#include "hpm_adc16_regs.h"
#include "hpm_soc_feature.h"

Go to the source code of this file.

Data Structures

struct  adc16_config_t
 ADC16 common configuration struct. More...
 
struct  adc16_channel_config_t
 ADC16 channel configuration struct. More...
 
struct  adc16_channel_threshold_t
 ADC16 channel configuration struct. More...
 
struct  adc16_dma_config_t
 ADC16 DMA configuration struct. More...
 
struct  adc16_seq_dma_data_t
 ADC16 DMA configuration struct for the sequence mode. More...
 
struct  adc16_pmt_dma_data_t
 ADC16 DMA configuration struct for the preemption mode. More...
 
struct  adc16_prd_config_t
 ADC16 configuration struct for the period mode. More...
 
struct  adc16_seq_queue_config_t
 ADC16 queue configuration struct for the sequence mode. More...
 
struct  adc16_seq_config_t
 ADC16 configuration struct for the sequence mode. More...
 
struct  adc16_pmt_config_t
 ADC16 trigger configuration struct for the preemption mode. More...
 

Macros

#define ADC16_IS_CHANNEL_INVALID(CH)   (CH > ADC16_SOC_MAX_CH_NUM)
 Define ADC16 validity check for the channel number. More...
 
#define ADC16_IS_CHANNEL_SAMPLE_CYCLE_INVALID(CYC)   (CYC == 0)
 Define ADC16 validity check for the channel sample cycle. More...
 
#define ADC16_IS_TRIG_CH_INVLAID(CH)   (CH > ADC_SOC_MAX_TRIG_CH_NUM)
 Define ADC16 validity check for the trigger number. More...
 
#define ADC16_IS_TRIG_LEN_INVLAID(TRIG_LEN)   (TRIG_LEN > ADC_SOC_MAX_TRIG_CH_LEN)
 Define ADC16 validity check for the trigger length. More...
 
#define ADC16_IS_SEQ_LEN_INVLAID(LEN)   ((LEN == 0) || (LEN > ADC_SOC_SEQ_MAX_LEN))
 Define ADC16 validity check for the sequence length. More...
 
#define ADC16_IS_SEQ_DMA_BUFF_LEN_INVLAID(LEN)   ((LEN == 0) || (LEN > ADC_SOC_SEQ_MAX_DMA_BUFF_LEN_IN_4BYTES))
 Define ADC16 validity check for the DMA buffer length in the sequence mode. More...
 
#define ADC16_IS_PMT_DMA_BUFF_LEN_INVLAID(LEN)   ((LEN == 0) || (LEN > ADC_SOC_PMT_MAX_DMA_BUFF_LEN_IN_4BYTES))
 Define ADC16 validity check for the DMA buffer length in the preemption mode. More...
 

Enumerations

enum  adc16_resolution_t { adc16_res_8_bits = 9 , adc16_res_10_bits = 11 , adc16_res_12_bits = 14 , adc16_res_16_bits = 21 }
 Define ADC16 resolutions. More...
 
enum  adc16_conversion_mode_t { adc16_conv_mode_oneshot = 0 , adc16_conv_mode_period , adc16_conv_mode_sequence , adc16_conv_mode_preemption }
 Define ADC16 conversion modes. More...
 
enum  adc16_clock_divider_t {
  adc16_clock_divider_1 = 1 , adc16_clock_divider_2 , adc16_clock_divider_3 , adc16_clock_divider_4 ,
  adc16_clock_divider_5 , adc16_clock_divider_6 , adc16_clock_divider_7 , adc16_clock_divider_8 ,
  adc16_clock_divider_9 , adc16_clock_divider_10 , adc16_clock_divider_11 , adc16_clock_divider_12 ,
  adc16_clock_divider_13 , adc16_clock_divider_14 , adc16_clock_divider_15 , adc16_clock_divider_16
}
 Define ADC16 Clock Divider. More...
 
enum  adc16_irq_event_t {
  adc16_event_trig_complete = ADC16_INT_STS_TRIG_CMPT_MASK , adc16_event_trig_sw_conflict = ADC16_INT_STS_TRIG_SW_CFLCT_MASK , adc16_event_trig_hw_conflict = ADC16_INT_STS_TRIG_HW_CFLCT_MASK , adc16_event_read_conflict = ADC16_INT_STS_READ_CFLCT_MASK ,
  adc16_event_seq_sw_conflict = ADC16_INT_STS_SEQ_SW_CFLCT_MASK , adc16_event_seq_hw_conflict = ADC16_INT_STS_SEQ_HW_CFLCT_MASK , adc16_event_seq_dma_abort = ADC16_INT_STS_SEQ_DMAABT_MASK , adc16_event_seq_full_complete = ADC16_INT_STS_SEQ_CMPT_MASK ,
  adc16_event_seq_single_complete = ADC16_INT_STS_SEQ_CVC_MASK , adc16_event_dma_fifo_full = ADC16_INT_STS_DMA_FIFO_FULL_MASK
}
 Define ADC16 irq events. More...
 

Functions

Initialization and Deinitialization
void adc16_get_default_config (adc16_config_t *config)
 Get a default configuration for an ADC16 instance. More...
 
void adc16_get_channel_default_config (adc16_channel_config_t *config)
 Get a default configuration for an ADC16 Channel. More...
 
hpm_stat_t adc16_deinit (ADC16_Type *ptr)
 De-initialize an ADC16 instance. More...
 
hpm_stat_t adc16_init (ADC16_Type *ptr, adc16_config_t *config)
 Initialize an ADC16 instance. More...
 
hpm_stat_t adc16_init_channel (ADC16_Type *ptr, adc16_channel_config_t *config)
 Initialize an ADC16 channel. More...
 
hpm_stat_t adc16_get_channel_threshold (ADC16_Type *ptr, uint8_t ch, adc16_channel_threshold_t *config)
 Get thresholds of an ADC16 channel. More...
 
hpm_stat_t adc16_set_prd_config (ADC16_Type *ptr, adc16_prd_config_t *config)
 Configure the the period mode for an ADC16 instance. More...
 
hpm_stat_t adc16_set_seq_config (ADC16_Type *ptr, adc16_seq_config_t *config)
 Configure the sequence mode for an ADC16 instance. More...
 
hpm_stat_t adc16_set_pmt_config (ADC16_Type *ptr, adc16_pmt_config_t *config)
 Configure the preemption mode for an ADC16 instance. More...
 
hpm_stat_t adc16_set_pmt_queue_enable (ADC16_Type *ptr, uint8_t trig_ch, bool enable)
 Set the queue enable control. More...
 
hpm_stat_t adc16_enable_pmt_queue (ADC16_Type *ptr, uint8_t trig_ch)
 Enable the specified preemption queue. More...
 
hpm_stat_t adc16_disable_pmt_queue (ADC16_Type *ptr, uint8_t trig_ch)
 Disable the specified preemption queue. More...
 
Enablement Control
static void adc16_seq_enable_hw_trigger (ADC16_Type *ptr)
 Enable the hw trigger control for the sequence mode. More...
 
static void adc16_seq_disable_hw_trigger (ADC16_Type *ptr)
 Disable the hw trigger control for the sequence mode. More...
 
DMA Control
static void adc16_set_seq_stop_pos (ADC16_Type *ptr, uint16_t stop_pos)
 Configure the stop position offset in the specified memory of DMA write operation for the sequence mode. More...
 
static void adc16_init_pmt_dma (ADC16_Type *ptr, uint32_t addr)
 Configure the start address of DMA write operation for the preemption mode. More...
 
hpm_stat_t adc16_init_seq_dma (ADC16_Type *ptr, adc16_dma_config_t *config)
 Configure the start address of DMA write operation for the sequence mode. More...
 
Status
static uint32_t adc16_get_status_flags (ADC16_Type *ptr)
 Get all ADC16 status flags. More...
 
static void adc16_disable_busywait (ADC16_Type *ptr)
 Set value of the WAIT_DIS bit. The ADC does not block access to the associated peripheral bus until the ADC has completed its conversion. More...
 
static void adc16_enable_busywait (ADC16_Type *ptr)
 Set value of the WAIT_DIS bit. ADC blocks access to the associated peripheral bus until the ADC completes the conversion. More...
 
static void adc16_set_nonblocking_read (ADC16_Type *ptr)
 Set nonblocking read in oneshot mode. More...
 
static void adc16_set_blocking_read (ADC16_Type *ptr)
 Set blocking read in oneshot mode. More...
 
static bool adc16_is_nonblocking_mode (ADC16_Type *ptr)
 Judge whether the current setting is none-blocking mode or not. More...
 
static bool adc16_get_conv_valid_status (ADC16_Type *ptr, uint8_t ch)
 Get the status of a conversion validity. More...
 
static void adc16_clear_status_flags (ADC16_Type *ptr, uint32_t mask)
 Clear the status flags. More...
 
Interrupts
static void adc16_enable_interrupts (ADC16_Type *ptr, uint32_t mask)
 Enable interrupts. More...
 
static void adc16_disable_interrupts (ADC16_Type *ptr, uint32_t mask)
 Disable interrupts. More...
 
Trigger and Conversion
hpm_stat_t adc16_trigger_seq_by_sw (ADC16_Type *ptr)
 Trigger ADC conversions by software in sequence mode. More...
 
hpm_stat_t adc16_trigger_pmt_by_sw (ADC16_Type *ptr, uint8_t trig_ch)
 Trigger ADC conversions by software in preemption mode. More...
 
hpm_stat_t adc16_get_oneshot_result (ADC16_Type *ptr, uint8_t ch, uint16_t *result)
 Get the result in oneshot mode. More...
 
hpm_stat_t adc16_get_prd_result (ADC16_Type *ptr, uint8_t ch, uint16_t *result)
 Get the result in the period mode. More...