8 #ifndef HPM_ADC12_DRV_H
9 #define HPM_ADC12_DRV_H
13 #include "hpm_soc_feature.h"
23 #define ADC12_IS_SIGNAL_TYPE_INVALID(TYPE) (TYPE > (uint32_t)adc12_sample_signal_count)
26 #define ADC12_IS_CHANNEL_INVALID(CH) (CH > ADC12_SOC_MAX_CH_NUM)
29 #define ADC12_IS_CHANNEL_SAMPLE_CYCLE_INVALID(CYC) (CYC == 0)
32 #define ADC12_IS_TRIG_CH_INVLAID(CH) (CH > ADC_SOC_MAX_TRIG_CH_NUM)
35 #define ADC12_IS_TRIG_LEN_INVLAID(TRIG_LEN) (TRIG_LEN > ADC_SOC_MAX_TRIG_CH_LEN)
38 #define ADC12_IS_SEQ_LEN_INVLAID(LEN) ((LEN == 0) || (LEN > ADC_SOC_SEQ_MAX_LEN))
41 #define ADC12_IS_SEQ_DMA_BUFF_LEN_INVLAID(LEN) ((LEN == 0) || (LEN > ADC_SOC_SEQ_MAX_DMA_BUFF_LEN_IN_4BYTES))
44 #define ADC12_IS_PMT_DMA_BUFF_LEN_INVLAID(LEN) ((LEN == 0) || (LEN > ADC_SOC_PMT_MAX_DMA_BUFF_LEN_IN_4BYTES))
#define ADC_SOC_SEQ_MAX_LEN
Definition: hpm_soc_feature.h:105
#define ADC_SOC_MAX_TRIG_CH_LEN
Definition: hpm_soc_feature.h:107
static void adc12_disable_busywait(ADC12_Type *ptr)
Set value of the WAIT_DIS bit. The ADC does not block access to the associated peripheral bus until t...
Definition: hpm_adc12_drv.h:379
hpm_stat_t adc12_init(ADC12_Type *ptr, adc12_config_t *config)
Initialize an ADC12 instance.
Definition: hpm_adc12_drv.c:93
hpm_stat_t adc12_get_oneshot_result(ADC12_Type *ptr, uint8_t ch, uint16_t *result)
Get the result in oneshot mode.
Definition: hpm_adc12_drv.c:342
adc12_irq_event_t
Define ADC12 irq events.
Definition: hpm_adc12_drv.h:90
adc12_resolution_t
Define ADC12 resolutions.
Definition: hpm_adc12_drv.h:54
static void adc12_init_pmt_dma(ADC12_Type *ptr, uint32_t addr)
Configure the start address of DMA write operation for the preemption mode.
Definition: hpm_adc12_drv.h:337
hpm_stat_t adc12_init_seq_dma(ADC12_Type *ptr, adc12_dma_config_t *config)
Configure the start address of DMA write operation for the sequence mode.
Definition: hpm_adc12_drv.c:211
adc12_conversion_mode_t
Define ADC12 conversion modes.
Definition: hpm_adc12_drv.h:62
static void adc12_disable_interrupts(ADC12_Type *ptr, uint32_t mask)
Disable interrupts.
Definition: hpm_adc12_drv.h:484
static void adc12_enable_interrupts(ADC12_Type *ptr, uint32_t mask)
Enable interrupts.
Definition: hpm_adc12_drv.h:473
hpm_stat_t adc12_set_pmt_config(ADC12_Type *ptr, adc12_pmt_config_t *config)
Configure the preemption mode for an ADC12 instance.
Definition: hpm_adc12_drv.c:312
hpm_stat_t adc12_trigger_seq_by_sw(ADC12_Type *ptr)
Trigger ADC conversions by software in sequence mode.
Definition: hpm_adc12_drv.c:267
hpm_stat_t adc12_set_prd_config(ADC12_Type *ptr, adc12_prd_config_t *config)
Configure the the period mode for an ADC12 instance.
Definition: hpm_adc12_drv.c:244
static void adc12_set_blocking_read(ADC12_Type *ptr)
Set blocking read in oneshot mode.
Definition: hpm_adc12_drv.h:413
void adc12_get_default_config(adc12_config_t *config)
Get a default configuration for an ADC12 instance.
Definition: hpm_adc12_drv.c:11
static bool adc12_get_conv_valid_status(ADC12_Type *ptr, uint8_t ch)
Get the status of a conversion validity.
Definition: hpm_adc12_drv.h:441
hpm_stat_t adc12_set_seq_config(ADC12_Type *ptr, adc12_seq_config_t *config)
Configure the the sequence mode for an ADC12 instance.
Definition: hpm_adc12_drv.c:278
static void adc12_clear_status_flags(ADC12_Type *ptr, uint32_t mask)
Clear the status flags.
Definition: hpm_adc12_drv.h:455
adc12_clock_divider_t
Define ADC12 Clock Divider.
Definition: hpm_adc12_drv.h:70
hpm_stat_t adc12_init_channel(ADC12_Type *ptr, adc12_channel_config_t *config)
Initialize an ADC12 channel.
Definition: hpm_adc12_drv.c:166
static void adc12_enable_busywait(ADC12_Type *ptr)
Set value of the WAIT_DIS bit. ADC blocks access to the associated peripheral bus until the ADC compl...
Definition: hpm_adc12_drv.h:391
hpm_stat_t adc12_get_channel_threshold(ADC12_Type *ptr, uint8_t ch, adc12_channel_threshold_t *config)
Get thresholds of an ADC12 channel.
Definition: hpm_adc12_drv.c:197
static void adc12_set_nonblocking_read(ADC12_Type *ptr)
Set nonblocking read in oneshot mode.
Definition: hpm_adc12_drv.h:402
void adc12_get_channel_default_config(adc12_channel_config_t *config)
Get a default configuration for an ADC12 channel.
Definition: hpm_adc12_drv.c:21
adc12_sample_signal_t
Define ADC12 sample signal types.
Definition: hpm_adc12_drv.h:47
hpm_stat_t adc12_trigger_pmt_by_sw(ADC12_Type *ptr, uint8_t trig_ch)
Trigger ADC conversions by software in preemption mode.
Definition: hpm_adc12_drv.c:305
static void adc12_set_seq_stop_pos(ADC12_Type *ptr, uint16_t stop_pos)
Configure the stop position offset in the specified memory of DMA write operation for the sequence mo...
Definition: hpm_adc12_drv.h:325
static uint32_t adc12_get_status_flags(ADC12_Type *ptr)
Get all ADC12 status flags.
Definition: hpm_adc12_drv.h:367
hpm_stat_t adc12_deinit(ADC12_Type *ptr)
De-initialize an ADC12 instance.
Definition: hpm_adc12_drv.c:85
static bool adc12_is_nonblocking_mode(ADC12_Type *ptr)
Judge whether the current setting is none-blocking mode or not.
Definition: hpm_adc12_drv.h:427
hpm_stat_t adc12_get_prd_result(ADC12_Type *ptr, uint8_t ch, uint16_t *result)
Get the result in the period mode.
Definition: hpm_adc12_drv.c:363
@ adc12_event_dma_fifo_full
Definition: hpm_adc12_drv.h:119
@ adc12_event_seq_hw_conflict
Definition: hpm_adc12_drv.h:107
@ adc12_event_read_conflict
Definition: hpm_adc12_drv.h:101
@ adc12_event_seq_single_complete
Definition: hpm_adc12_drv.h:116
@ adc12_event_trig_sw_conflict
Definition: hpm_adc12_drv.h:95
@ adc12_event_seq_full_complete
Definition: hpm_adc12_drv.h:113
@ adc12_event_seq_sw_conflict
Definition: hpm_adc12_drv.h:104
@ adc12_event_trig_complete
Definition: hpm_adc12_drv.h:92
@ adc12_event_trig_hw_conflict
Definition: hpm_adc12_drv.h:98
@ adc12_event_seq_dma_abort
Definition: hpm_adc12_drv.h:110
@ adc12_res_10_bits
Definition: hpm_adc12_drv.h:57
@ adc12_res_12_bits
Definition: hpm_adc12_drv.h:58
@ adc12_res_8_bits
Definition: hpm_adc12_drv.h:56
@ adc12_res_6_bits
Definition: hpm_adc12_drv.h:55
@ adc12_conv_mode_period
Definition: hpm_adc12_drv.h:64
@ adc12_conv_mode_sequence
Definition: hpm_adc12_drv.h:65
@ adc12_conv_mode_oneshot
Definition: hpm_adc12_drv.h:63
@ adc12_conv_mode_preemption
Definition: hpm_adc12_drv.h:66
@ adc12_clock_divider_2
Definition: hpm_adc12_drv.h:72
@ adc12_clock_divider_5
Definition: hpm_adc12_drv.h:75
@ adc12_clock_divider_15
Definition: hpm_adc12_drv.h:85
@ adc12_clock_divider_8
Definition: hpm_adc12_drv.h:78
@ adc12_clock_divider_10
Definition: hpm_adc12_drv.h:80
@ adc12_clock_divider_4
Definition: hpm_adc12_drv.h:74
@ adc12_clock_divider_9
Definition: hpm_adc12_drv.h:79
@ adc12_clock_divider_6
Definition: hpm_adc12_drv.h:76
@ adc12_clock_divider_11
Definition: hpm_adc12_drv.h:81
@ adc12_clock_divider_13
Definition: hpm_adc12_drv.h:83
@ adc12_clock_divider_1
Definition: hpm_adc12_drv.h:71
@ adc12_clock_divider_7
Definition: hpm_adc12_drv.h:77
@ adc12_clock_divider_16
Definition: hpm_adc12_drv.h:86
@ adc12_clock_divider_3
Definition: hpm_adc12_drv.h:73
@ adc12_clock_divider_12
Definition: hpm_adc12_drv.h:82
@ adc12_clock_divider_14
Definition: hpm_adc12_drv.h:84
@ adc12_sample_signal_count
Definition: hpm_adc12_drv.h:50
@ adc12_sample_signal_single_ended
Definition: hpm_adc12_drv.h:48
@ adc12_sample_signal_differential
Definition: hpm_adc12_drv.h:49
uint32_t hpm_stat_t
Definition: hpm_common.h:126
#define ADC12_INT_STS_TRIG_HW_CFLCT_MASK
Definition: hpm_adc12_regs.h:527
#define ADC12_INT_STS_SEQ_SW_CFLCT_MASK
Definition: hpm_adc12_regs.h:547
#define ADC12_INT_STS_READ_CFLCT_MASK
Definition: hpm_adc12_regs.h:537
#define ADC12_INT_STS_SEQ_HW_CFLCT_MASK
Definition: hpm_adc12_regs.h:556
#define ADC12_INT_STS_SEQ_CVC_MASK
Definition: hpm_adc12_regs.h:586
#define ADC12_TRG_DMA_ADDR_TRG_DMA_ADDR_MASK
Definition: hpm_adc12_regs.h:146
#define ADC12_BUF_CFG0_WAIT_DIS_SET(x)
Definition: hpm_adc12_regs.h:206
#define ADC12_BUF_CFG0_WAIT_DIS_GET(x)
Definition: hpm_adc12_regs.h:207
#define ADC12_SEQ_DMA_CFG_STOP_POS_MASK
Definition: hpm_adc12_regs.h:308
#define ADC12_INT_STS_SEQ_CMPT_MASK
Definition: hpm_adc12_regs.h:576
#define ADC12_BUS_RESULT_VALID_GET(x)
Definition: hpm_adc12_regs.h:185
#define ADC12_INT_STS_TRIG_CMPT_MASK
Definition: hpm_adc12_regs.h:509
#define ADC12_BUF_CFG0_WAIT_DIS_MASK
Definition: hpm_adc12_regs.h:204
#define ADC12_INT_STS_SEQ_DMAABT_MASK
Definition: hpm_adc12_regs.h:566
#define ADC12_INT_STS_DMA_FIFO_FULL_MASK
Definition: hpm_adc12_regs.h:595
#define ADC12_SEQ_DMA_CFG_STOP_POS_SET(x)
Definition: hpm_adc12_regs.h:310
#define ADC12_INT_STS_TRIG_SW_CFLCT_MASK
Definition: hpm_adc12_regs.h:518
Definition: hpm_adc12_regs.h:12
__RW uint32_t INT_EN
Definition: hpm_adc12_regs.h:40
__R uint32_t BUS_RESULT[19]
Definition: hpm_adc12_regs.h:17
__RW uint32_t SEQ_DMA_CFG
Definition: hpm_adc12_regs.h:24
__RW uint32_t TRG_DMA_ADDR
Definition: hpm_adc12_regs.h:14
__RW uint32_t INT_STS
Definition: hpm_adc12_regs.h:39
__RW uint32_t BUF_CFG0
Definition: hpm_adc12_regs.h:19
ADC12 channel configuration struct.
Definition: hpm_adc12_drv.h:134
bool wdog_int_en
Definition: hpm_adc12_drv.h:139
uint8_t diff_sel
Definition: hpm_adc12_drv.h:136
uint8_t sample_cycle_shift
Definition: hpm_adc12_drv.h:140
uint32_t sample_cycle
Definition: hpm_adc12_drv.h:141
uint16_t thshdl
Definition: hpm_adc12_drv.h:138
uint16_t thshdh
Definition: hpm_adc12_drv.h:137
uint8_t ch
Definition: hpm_adc12_drv.h:135
ADC12 channel configuration struct.
Definition: hpm_adc12_drv.h:145
uint16_t thshdh
Definition: hpm_adc12_drv.h:147
uint16_t thshdl
Definition: hpm_adc12_drv.h:148
uint8_t ch
Definition: hpm_adc12_drv.h:146
ADC12 common configuration struct.
Definition: hpm_adc12_drv.h:123
uint8_t conv_mode
Definition: hpm_adc12_drv.h:125
bool sel_sync_ahb
Definition: hpm_adc12_drv.h:129
uint32_t adc_clk_div
Definition: hpm_adc12_drv.h:127
uint8_t diff_sel
Definition: hpm_adc12_drv.h:126
bool wait_dis
Definition: hpm_adc12_drv.h:128
uint8_t res
Definition: hpm_adc12_drv.h:124
bool adc_ahb_en
Definition: hpm_adc12_drv.h:130
ADC12 DMA configuration struct.
Definition: hpm_adc12_drv.h:152
uint32_t * start_addr
Definition: hpm_adc12_drv.h:153
uint32_t buff_len_in_4bytes
Definition: hpm_adc12_drv.h:154
bool stop_en
Definition: hpm_adc12_drv.h:156
uint32_t stop_pos
Definition: hpm_adc12_drv.h:155
ADC12 trigger configuration struct for the preemption mode.
Definition: hpm_adc12_drv.h:206
uint8_t trig_ch
Definition: hpm_adc12_drv.h:209
uint8_t trig_len
Definition: hpm_adc12_drv.h:210
ADC12 DMA configuration struct for the preemption mode.
Definition: hpm_adc12_drv.h:171
uint32_t trig_ch
Definition: hpm_adc12_drv.h:176
uint32_t cycle_bit
Definition: hpm_adc12_drv.h:179
uint32_t adc_ch
Definition: hpm_adc12_drv.h:177
uint32_t seq_num
Definition: hpm_adc12_drv.h:174
uint32_t result
Definition: hpm_adc12_drv.h:173
ADC12 configuration struct for the period mode.
Definition: hpm_adc12_drv.h:183
uint8_t prescale
Definition: hpm_adc12_drv.h:185
uint8_t period_count
Definition: hpm_adc12_drv.h:186
uint8_t ch
Definition: hpm_adc12_drv.h:184
ADC12 configuration struct for the sequence mode.
Definition: hpm_adc12_drv.h:196
bool restart_en
Definition: hpm_adc12_drv.h:198
uint8_t seq_len
Definition: hpm_adc12_drv.h:202
bool sw_trig_en
Definition: hpm_adc12_drv.h:200
bool cont_en
Definition: hpm_adc12_drv.h:199
bool hw_trig_en
Definition: hpm_adc12_drv.h:201
ADC12 DMA configuration struct for the sequence mode.
Definition: hpm_adc12_drv.h:160
uint32_t cycle_bit
Definition: hpm_adc12_drv.h:167
uint32_t adc_ch
Definition: hpm_adc12_drv.h:165
uint32_t seq_num
Definition: hpm_adc12_drv.h:163
uint32_t result
Definition: hpm_adc12_drv.h:162
ADC12 queue configuration struct for the sequence mode.
Definition: hpm_adc12_drv.h:190
bool seq_int_en
Definition: hpm_adc12_drv.h:191
uint8_t ch
Definition: hpm_adc12_drv.h:192