SemiDrive SSDK Appication Program Interface PTG3.0
sdrv_acmp.h
Go to the documentation of this file.
1
9#ifndef SDRV_ACMP_H_
10#define SDRV_ACMP_H_
11
12#include <types.h>
13#include <compiler.h>
14#include "sdrv_acmp.h"
15#include "sdrv_common.h"
16
17/* ACMP Chanel Polar */
18#define ACMP_CH_POLAR_POS 1U
19#define ACMP_CH_POLAR_NEG 0U
20
21/* Single-End Mode Channel Select */
22#define ACMP_SINGLE_CH_SEL(ch, polar, mux) \
23 (((mux & 0x7u) << 6) | ((polar & 0x1u) << 3) | (ch & 0x7u))
24/* Differential Mode Channel Select */
25#define ACMP_DIFF_CH_SEL(ch_p, ch_n, mux) \
26 (((mux & 0x7u) << 6) | ((ch_p & 0x7u) << 3) | (ch_n & 0x7u))
27
32{
35};
36
37/* sdrv acmp dev */
38struct sdrv_acmp_dev;
39
40/* sdrv acmp mode */
41typedef enum {
42 ACMP_HT_MODE = 0x0U,
45
46/* sdrv acmp csel num */
47typedef enum {
48 ACMP_CSEL_0 = 0x0U,
53
54/* sdrv acmp index num */
55typedef enum {
56 ACMP_INDEX_0 = 0x0U,
89
90/* sdrv acmp pol adjust */
91typedef enum {
95
96/* sdrv acmp select reference voltage source */
97typedef enum {
101
102/* sdrv acmp sd sel */
103typedef enum {
107
108/* sdrv acmp hysteresis window configure */
109typedef enum {
114
115/* sdrv acmp csel configurations */
116typedef struct sdrv_acmp_csel_cfg {
118 /* acmp ctrl cfg */
119 uint8_t amux_setup;
122 uint8_t prop_delay : 5;
123 uint8_t rbw : 4;
124 uint8_t fbw : 4;
127 bool mask_en;
129 bool pol_adj;
130 bool sync_en;
131 /* acmp analog cfg */
135 uint8_t dain;
137
138/* sdrv acmp index configurations */
139typedef struct sdrv_acmp_index_cfg {
141 uint16_t amsel : 9;
142 uint8_t csel : 2;
143 bool ie;
144 bool uie;
146
147/* sdrv acmp callback */
148typedef int (*sdrv_acmp_callback)(struct sdrv_acmp_dev *dev, uint32_t state);
149
150/* sdrv acmp configurations */
151typedef struct sdrv_acmp_config {
152 paddr_t base;
153 int irq;
156 uint8_t csel_num;
158 uint8_t index_num;
159 uint8_t req_n_dly;
163 /* IT MODE */
164 uint8_t qstart : 5;
165 uint8_t qend : 5;
166 uint8_t cur_entry_pt : 5;
174
175/* define the type of acmp device */
176typedef struct sdrv_acmp_dev {
177 paddr_t base;
178 int irq;
180 void *priv;
182
194
206
221status_t sdrv_acmp_it_trigger_start(sdrv_acmp_t *dev, uint8_t qstart, uint8_t qend, uint8_t cur_entry_pt,
222 bool trigger_start);
223
242status_t sdrv_acmp_it_update_valid_irq(sdrv_acmp_t *dev, uint32_t *state, uint32_t wait_time);
243
256
270status_t sdrv_acmp_enable_low_power(sdrv_acmp_t *dev, bool cmp_en, bool dac_en, uint8_t req_n_dly);
271
282
293
294#endif /* SDRV_ACMP_H_ */
SemiDrive Analog Compare (ACMP) driver header file.
struct sdrv_acmp_config sdrv_acmp_config_t
sdrv_acmp_index_t
Definition: sdrv_acmp.h:55
@ ACMP_INDEX_15
Definition: sdrv_acmp.h:71
@ ACMP_INDEX_24
Definition: sdrv_acmp.h:80
@ ACMP_INDEX_31
Definition: sdrv_acmp.h:87
@ ACMP_INDEX_2
Definition: sdrv_acmp.h:58
@ ACMP_INDEX_6
Definition: sdrv_acmp.h:62
@ ACMP_INDEX_27
Definition: sdrv_acmp.h:83
@ ACMP_INDEX_21
Definition: sdrv_acmp.h:77
@ ACMP_INDEX_29
Definition: sdrv_acmp.h:85
@ ACMP_INDEX_22
Definition: sdrv_acmp.h:78
@ ACMP_INDEX_23
Definition: sdrv_acmp.h:79
@ ACMP_INDEX_28
Definition: sdrv_acmp.h:84
@ ACMP_INDEX_5
Definition: sdrv_acmp.h:61
@ ACMP_INDEX_8
Definition: sdrv_acmp.h:64
@ ACMP_INDEX_10
Definition: sdrv_acmp.h:66
@ ACMP_INDEX_30
Definition: sdrv_acmp.h:86
@ ACMP_INDEX_26
Definition: sdrv_acmp.h:82
@ ACMP_INDEX_3
Definition: sdrv_acmp.h:59
@ ACMP_INDEX_11
Definition: sdrv_acmp.h:67
@ ACMP_INDEX_1
Definition: sdrv_acmp.h:57
@ ACMP_INDEX_7
Definition: sdrv_acmp.h:63
@ ACMP_INDEX_16
Definition: sdrv_acmp.h:72
@ ACMP_INDEX_4
Definition: sdrv_acmp.h:60
@ ACMP_INDEX_18
Definition: sdrv_acmp.h:74
@ ACMP_INDEX_0
Definition: sdrv_acmp.h:56
@ ACMP_INDEX_13
Definition: sdrv_acmp.h:69
@ ACMP_INDEX_14
Definition: sdrv_acmp.h:70
@ ACMP_INDEX_20
Definition: sdrv_acmp.h:76
@ ACMP_INDEX_17
Definition: sdrv_acmp.h:73
@ ACMP_INDEX_9
Definition: sdrv_acmp.h:65
@ ACMP_INDEX_19
Definition: sdrv_acmp.h:75
@ ACMP_INDEX_12
Definition: sdrv_acmp.h:68
@ ACMP_INDEX_25
Definition: sdrv_acmp.h:81
status_t sdrv_acmp_power_ctrl(sdrv_acmp_t *dev, bool down)
sdrv acmp power ctrl
status_t sdrv_acmp_enable_low_power(sdrv_acmp_t *dev, bool cmp_en, bool dac_en, uint8_t req_n_dly)
sdrv acmp allows analog competitor and dac enter lowpower mode
struct sdrv_acmp_index_cfg sdrv_acmp_index_cfg_t
sdrv_acmp_sd_sel_t
Definition: sdrv_acmp.h:103
@ ACMP_SEL_DIFF
Definition: sdrv_acmp.h:105
@ ACMP_SEL_SINGLE
Definition: sdrv_acmp.h:104
status_t sdrv_acmp_deinit(sdrv_acmp_t *dev)
sdrv acmp deinit
sdrv_acmp_reg_sel_t
Definition: sdrv_acmp.h:97
@ ACMP_SEL_REFP2
Definition: sdrv_acmp.h:99
@ ACMP_SEL_REFP1
Definition: sdrv_acmp.h:98
struct sdrv_acmp_csel_cfg sdrv_acmp_csel_cfg_t
status_t sdrv_acmp_it_trigger_start(sdrv_acmp_t *dev, uint8_t qstart, uint8_t qend, uint8_t cur_entry_pt, bool trigger_start)
sdrv acmp IT mode trigger start
sdrv_acmp_csel_t
Definition: sdrv_acmp.h:47
@ ACMP_CSEL_1
Definition: sdrv_acmp.h:49
@ ACMP_CSEL_2
Definition: sdrv_acmp.h:50
@ ACMP_CSEL_3
Definition: sdrv_acmp.h:51
@ ACMP_CSEL_0
Definition: sdrv_acmp.h:48
status_t sdrv_acmp_start(sdrv_acmp_t *dev, bool start)
sdrv acmp start
status_t sdrv_acmp_set_callback(sdrv_acmp_t *dev, sdrv_acmp_callback callback)
sdrv acmp set callback
status_t sdrv_acmp_init(sdrv_acmp_t *dev, sdrv_acmp_config_t *acmp_cfg, sdrv_acmp_callback callback)
sdrv acmp init
sdrv_acmp_error
ACMP status error code.
Definition: sdrv_acmp.h:32
@ SDRV_ACMP_STATUS_WRONG_MODE
Definition: sdrv_acmp.h:34
@ SDRV_ACMP_STATUS_INVALID_PARAM
Definition: sdrv_acmp.h:33
sdrv_acmp_mode_t
Definition: sdrv_acmp.h:41
@ ACMP_HT_MODE
Definition: sdrv_acmp.h:42
@ ACMP_IT_MODE
Definition: sdrv_acmp.h:43
struct sdrv_acmp_dev sdrv_acmp_t
status_t sdrv_acmp_it_update_valid_irq(sdrv_acmp_t *dev, uint32_t *state, uint32_t wait_time)
sdrv acmp IT mode update valid irq state
sdrv_acmp_hcfg_t
Definition: sdrv_acmp.h:109
@ ACMP_HCFG_100_mV
Definition: sdrv_acmp.h:112
@ ACMP_HCFG_NO
Definition: sdrv_acmp.h:110
@ ACMP_HCFG_50_mV
Definition: sdrv_acmp.h:111
int(* sdrv_acmp_callback)(struct sdrv_acmp_dev *dev, uint32_t state)
Definition: sdrv_acmp.h:148
sdrv_acmp_pol_adj_t
Definition: sdrv_acmp.h:91
@ ACMP_POL_ADJ_INVERT
Definition: sdrv_acmp.h:93
@ ACMP_POL_ADJ_DIRECTLY
Definition: sdrv_acmp.h:92
SemiDrive driver common header file.
@ SDRV_STATUS_GROUP_ACMP
Definition: sdrv_common.h:45
int32_t status_t
Type used for all status and error return values.
Definition: sdrv_common.h:82
#define SDRV_ERROR_STATUS(group, code)
Construct a status code value from a group and code number. All the error statuses are negetive numbe...
Definition: sdrv_common.h:17
Definition: sdrv_acmp.h:151
uint8_t csel_num
Definition: sdrv_acmp.h:156
sdrv_acmp_index_cfg_t * index_cfg
Definition: sdrv_acmp.h:157
sdrv_acmp_csel_cfg_t * csel_cfg
Definition: sdrv_acmp.h:155
bool qch_cmp_en
Definition: sdrv_acmp.h:161
uint8_t req_n_dly
Definition: sdrv_acmp.h:159
uint16_t timer_terminal_val
Definition: sdrv_acmp.h:170
sdrv_acmp_mode_t mode
Definition: sdrv_acmp.h:154
uint8_t qend
Definition: sdrv_acmp.h:165
uint8_t qstart
Definition: sdrv_acmp.h:164
uint16_t timer_compare_val
Definition: sdrv_acmp.h:167
paddr_t base
Definition: sdrv_acmp.h:152
bool qch_dac_en
Definition: sdrv_acmp.h:160
uint8_t cur_entry_pt
Definition: sdrv_acmp.h:166
uint8_t index_num
Definition: sdrv_acmp.h:158
int irq
Definition: sdrv_acmp.h:153
Definition: sdrv_acmp.h:116
uint8_t rbw
Definition: sdrv_acmp.h:123
sdrv_acmp_hcfg_t hcfg
Definition: sdrv_acmp.h:134
bool mask_en
Definition: sdrv_acmp.h:127
bool pol_adj
Definition: sdrv_acmp.h:129
sdrv_acmp_reg_sel_t refsel
Definition: sdrv_acmp.h:132
sdrv_acmp_sd_sel_t sdsel
Definition: sdrv_acmp.h:133
uint8_t prop_delay
Definition: sdrv_acmp.h:122
uint8_t amux_setup
Definition: sdrv_acmp.h:119
sdrv_acmp_csel_t csel_idx
Definition: sdrv_acmp.h:117
uint8_t fbw
Definition: sdrv_acmp.h:124
uint8_t dain
Definition: sdrv_acmp.h:135
bool sample_en
Definition: sdrv_acmp.h:125
bool sync_en
Definition: sdrv_acmp.h:130
Definition: sdrv_acmp.h:176
sdrv_acmp_callback callback
Definition: sdrv_acmp.h:179
void * priv
Definition: sdrv_acmp.h:180
paddr_t base
Definition: sdrv_acmp.h:177
int irq
Definition: sdrv_acmp.h:178
Definition: sdrv_acmp.h:139
uint16_t amsel
Definition: sdrv_acmp.h:141
bool ie
Definition: sdrv_acmp.h:143
sdrv_acmp_index_t idx
Definition: sdrv_acmp.h:140
bool uie
Definition: sdrv_acmp.h:144
uint8_t csel
Definition: sdrv_acmp.h:142