HPM SDK
HPMicro Software Development Kit
hpm_sdm_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2022 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_SDM_DRV_H
9 #define HPM_SDM_DRV_H
10 
11 #include "hpm_common.h"
12 #include "hpm_sdm_regs.h"
13 #include "hpm_soc_ip_feature.h"
14 
22 /* defined channel mask macro */
23 #define SAMPLING_MODE_MASK (0x7U)
24 #define CHN_SAMPLING_MODE_SHIFT(ch) ((ch) * 3U + SDM_CTRL_CHMD_SHIFT)
25 #define CHN_SAMPLING_MODE_MASK(ch) (SAMPLING_MODE_MASK << CHN_SAMPLING_MODE_SHIFT(ch))
26 
27 #define CH0_EN_MASK (0x1U << SDM_CTRL_CH_EN_SHIFT)
28 #define CHN_EN_MASK(ch) (CH0_EN_MASK << (ch))
29 
30 #define CHN_ERR_MASK(ch) (SDM_INT_EN_CH0ERR_MASK << (ch))
31 #define CHN_DRY_MASK(ch) (SDM_INT_EN_CH0DRY_MASK << (ch))
32 
33 typedef enum {
41 
42 typedef enum {
48 
49 typedef struct {
50  uint8_t clk_signal_sync; /* clk sync for channel */
51  uint8_t data_signal_sync; /* data sync for channel */
54 
55 typedef struct {
56  uint8_t sampling_mode;
60 
61 /* amplitude detect config */
62 typedef struct {
63  uint16_t high_threshold;
65  uint16_t low_threshold;
71  uint8_t filter_type;
74  bool enable;
76 
77 /* sample data config */
78 typedef struct {
79  uint8_t fifo_threshold;
81  uint8_t manchester_threshold :8;
82  uint8_t wdg_threshold :8;
83  uint8_t en_af_int :1;
84  uint8_t en_data_overflow_int :1;
86  uint8_t en_data_ready_int :1;
87  uint8_t sync_source :6;
88  uint8_t fifo_clean_on_sync :1;
89  uint8_t wtsynaclr :1;
90  uint8_t wtsynmclr :1;
91  uint8_t wtsyncen :1;
92  uint8_t output_32bit :1;
94  uint8_t enable :1;
96  uint8_t filter_type;
98  uint8_t output_offset;
99  uint16_t oversampling_rate;
102 
103 #if defined(HPM_IP_FEATURE_SDM_GATE_FUNC) && (HPM_IP_FEATURE_SDM_GATE_FUNC)
104 typedef struct {
105  bool enable; /* enable gate function */
106  bool start_on_rising_edge; /* start from gate signal rising edge */
107  bool stop_sample_by_gate_count; /* true: gate_count decide stop sample time; false: stop sample time related to gate signal timing */
108  uint16_t gate_count; /* gate sample count */
109  uint16_t gate_source; /* gate signal source from trgmmux */
110 } sdm_filter_gate_config_t;
111 #endif
112 
113 #if defined(HPM_IP_FEATURE_SDM_TIMESTAMP_FUNC) && (HPM_IP_FEATURE_SDM_TIMESTAMP_FUNC)
114 typedef struct {
115  bool enable_fifo_output_timestamp; /* enable SDATA register output timestamp */
116  bool enable_register_output_timestamp; /* enable SDFIFO output timestamp */
117  bool timestamp_output_subtract_delay; /* false: calculation results output time; true: calculation results output time - the delay of filter time */
118 } sdm_filter_timestamp_config_t;
119 #endif
120 
121 typedef struct {
122  uint32_t count;
123  uint8_t *buff;
124  uint8_t data_len_in_bytes; /* 16bit-2 32bit-4 */
127 
128 typedef enum {
135 
136 typedef enum {
146 
147 typedef enum {
153 
154 #ifdef __cplusplus
155 extern "C" {
156 #endif
157 
164 static inline void sdm_enable_module_interrupt(SDM_Type *ptr, bool enable)
165 {
166  if (enable) {
167  ptr->CTRL |= SDM_CTRL_IE_MASK;
168  } else {
169  ptr->CTRL &= ~SDM_CTRL_IE_MASK;
170  }
171 }
172 
180 static inline void sdm_enable_channel(SDM_Type *ptr, uint8_t ch_index, bool enable)
181 {
182  if (enable) {
183  ptr->CTRL |= CHN_EN_MASK(ch_index);
184  } else {
185  ptr->CTRL &= ~CHN_EN_MASK(ch_index);
186  }
187 }
188 
196 static inline void sdm_enable_channel_filter(SDM_Type *ptr, uint8_t ch_index, bool enable)
197 {
198  if (enable) {
199  ptr->CH[ch_index].SDCTRLP |= SDM_CH_SDCTRLP_EN_MASK;
200  } else {
201  ptr->CH[ch_index].SDCTRLP &= ~SDM_CH_SDCTRLP_EN_MASK;
202  }
203 }
204 
212 static inline void sdm_enable_channel_comparator(SDM_Type *ptr, uint8_t ch_index, bool enable)
213 {
214  if (enable) {
215  ptr->CH[ch_index].SCCTRL |= SDM_CH_SCCTRL_EN_MASK;
216  } else {
217  ptr->CH[ch_index].SCCTRL &= ~SDM_CH_SCCTRL_EN_MASK;
218  }
219 }
220 
229 static inline void sdm_enable_channel_by_mask(SDM_Type *ptr, uint32_t ch_mask)
230 {
231  ptr->CTRL = (ptr->CTRL & (~SDM_CTRL_CH_EN_MASK)) | ch_mask;
232 }
233 
241 static inline void sdm_set_channel_sampling_mode(SDM_Type *ptr, uint8_t ch_index, sdm_sampling_mode_t mode)
242 {
243  ptr->CTRL &= ~CHN_SAMPLING_MODE_MASK(ch_index);
244  ptr->CTRL |= mode << (SDM_CTRL_CHMD_SHIFT + ch_index);
245 }
246 
253 static inline void sdm_enable_channel_interrupt(SDM_Type *ptr, uint32_t mask)
254 {
255  ptr->INT_EN |= mask;
256 }
257 
264 static inline uint32_t sdm_get_status(SDM_Type *ptr)
265 {
266  return ptr->STATUS;
267 }
268 
277 static inline bool sdm_get_channel_data_ready_status(SDM_Type *ptr, uint8_t ch)
278 {
279  return (((ptr->STATUS) & CHN_DRY_MASK(ch)) == CHN_DRY_MASK(ch));
280 }
281 
290 static inline bool sdm_get_channel_data_error_status(SDM_Type *ptr, uint8_t ch)
291 {
292  return (((ptr->STATUS) & CHN_ERR_MASK(ch)) == CHN_ERR_MASK(ch));
293 }
294 
302 static inline void sdm_set_ch_fifo_threshold(SDM_Type *ptr, uint8_t ch, uint8_t threshold)
303 {
304  ptr->CH[ch].SDFIFOCTRL = SDM_CH_SDFIFOCTRL_THRSH_SET(threshold);
305 }
306 
314 static inline uint8_t sdm_get_ch_fifo_threshold(SDM_Type *ptr, uint8_t ch)
315 {
316  return (uint8_t)(SDM_CH_SDFIFOCTRL_THRSH_GET(ptr->CH[ch].SDFIFOCTRL));
317 }
318 
326 static inline uint32_t sdm_get_channel_filter_status(SDM_Type *ptr, uint8_t ch)
327 {
328  return ptr->CH[ch].SDST;
329 }
330 
331 #if defined(HPM_IP_FEATURE_SDM_TIMESTAMP_FUNC) && (HPM_IP_FEATURE_SDM_TIMESTAMP_FUNC)
341 static inline bool sdm_channel_filter_fifo_is_data(SDM_Type *ptr, uint8_t ch)
342 {
343  return (bool)(SDM_CH_SDST_SDFIFO_D0_T1_GET(ptr->CH[ch].SDST));
344 }
345 
355 static inline bool sdm_channel_filter_register_is_data(SDM_Type *ptr, uint8_t ch)
356 {
357  return (bool)(SDM_CH_SDST_SDATA_D0_T1_GET(ptr->CH[ch].SDST));
358 }
359 #endif
360 
368 static inline void sdm_clean_channel_filter_status(SDM_Type *ptr, uint8_t ch, uint32_t mask)
369 {
370  ptr->CH[ch].SDST = mask;
371 }
372 
380 static inline uint8_t sdm_get_channel_fifo_data_count(SDM_Type *ptr, uint8_t ch)
381 {
382  return (uint8_t)(SDM_CH_SDST_FILL_GET(ptr->CH[ch].SDST));
383 }
384 
392 static inline int32_t sdm_get_channel_fifo_data(SDM_Type *ptr, uint8_t ch)
393 {
394  return ptr->CH[ch].SDFIFO;
395 }
396 
404 static inline uint8_t sdm_get_channel_clock_cycle_count(SDM_Type *ptr, uint8_t ch)
405 {
406  return (uint8_t)(SDM_CH_SDST_PERIOD_MCLK_GET(ptr->CH[ch].SDST));
407 }
408 
416 static inline uint16_t sdm_get_channel_comparator_data(SDM_Type *ptr, uint8_t ch)
417 {
418  return (uint16_t)(ptr->CH[ch].SCAMP);
419 }
420 
428 static inline void sdm_set_channel_comparator_high_threshold(SDM_Type *ptr, uint8_t ch, uint16_t value)
429 {
430  ptr->CH[ch].SCHTL = value;
431 }
432 
440 static inline void sdm_set_channel_comparator_zero_crossing_threshold(SDM_Type *ptr, uint8_t ch, uint16_t value)
441 {
442  ptr->CH[ch].SCHTLZ = value;
443 }
444 
452 static inline void sdm_set_channel_comparator_low_threshold(SDM_Type *ptr, uint8_t ch, uint16_t value)
453 {
454  ptr->CH[ch].SCLLT = value;
455 }
456 
464 static inline uint32_t sdm_get_channel_comparator_status(SDM_Type *ptr, uint8_t ch)
465 {
466  return ptr->CH[ch].SCST;
467 }
468 
476 static inline void sdm_clean_channel_comparator_status(SDM_Type *ptr, uint8_t ch, uint32_t mask)
477 {
478  ptr->CH[ch].SCST = mask;
479 }
480 
488 
495 void sdm_init_module(SDM_Type *ptr, sdm_control_t *control);
496 
504 
512 void sdm_config_channel_common_setting(SDM_Type *ptr, uint8_t ch_index, sdm_channel_common_config_t *config);
513 
521 
530 
538 
546 void sdm_config_channel_comparator(SDM_Type *ptr, uint8_t ch_index, sdm_comparator_config_t *cmp_config);
547 
558 hpm_stat_t sdm_receive_one_filter_data(SDM_Type *ptr, uint8_t ch_index, bool using_fifo, int8_t *data, uint8_t data_len_in_bytes);
559 
571 hpm_stat_t sdm_receive_filter_data(SDM_Type *ptr, uint8_t ch_index, bool using_fifo, int8_t *data, uint32_t count, uint8_t data_len_in_bytes);
572 
573 #if defined(HPM_IP_FEATURE_SDM_GATE_FUNC) && (HPM_IP_FEATURE_SDM_GATE_FUNC)
582 hpm_stat_t sdm_config_channel_filter_gate(SDM_Type *ptr, uint8_t ch_index, sdm_filter_gate_config_t *gate_config);
583 #endif
584 
585 #if defined(HPM_IP_FEATURE_SDM_TIMESTAMP_FUNC) && (HPM_IP_FEATURE_SDM_TIMESTAMP_FUNC)
593 void sdm_config_channel_filter_timestamp(SDM_Type *ptr, uint8_t ch_index, sdm_filter_timestamp_config_t *timestamp_config);
594 #endif
595 
600 #ifdef __cplusplus
601 }
602 #endif
603 
604 #endif /* HPM_SDM_DRV_H */
605 
#define SDM_CH_SCST_CMPH_MASK
Definition: hpm_sdm_regs.h:699
#define SDM_INT_EN_CH3ERR_MASK
Definition: hpm_sdm_regs.h:153
#define SDM_CH_SDST_PERIOD_MCLK_GET(x)
Definition: hpm_sdm_regs.h:474
#define SDM_INT_EN_CH2ERR_MASK
Definition: hpm_sdm_regs.h:163
#define SDM_CH_SCCTRL_EN_MASK
Definition: hpm_sdm_regs.h:668
#define SDM_CH_SDCTRLP_EN_MASK
Definition: hpm_sdm_regs.h:405
#define SDM_INT_EN_CH1DRY_MASK
Definition: hpm_sdm_regs.h:133
#define SDM_CH_SCST_HZ_MASK
Definition: hpm_sdm_regs.h:679
#define SDM_CH_SDST_FILL_GET(x)
Definition: hpm_sdm_regs.h:522
#define SDM_CTRL_CH_EN_MASK
Definition: hpm_sdm_regs.h:92
#define SDM_CH_SCST_MF_MASK
Definition: hpm_sdm_regs.h:689
#define SDM_CH_SDFIFOCTRL_THRSH_SET(x)
Definition: hpm_sdm_regs.h:272
#define SDM_CTRL_IE_MASK
Definition: hpm_sdm_regs.h:102
#define SDM_CTRL_CH_EN_SHIFT
Definition: hpm_sdm_regs.h:93
#define SDM_INT_EN_CH3DRY_MASK
Definition: hpm_sdm_regs.h:113
#define SDM_INT_EN_CH1ERR_MASK
Definition: hpm_sdm_regs.h:173
#define SDM_CTRL_CHMD_SHIFT
Definition: hpm_sdm_regs.h:63
#define SDM_INT_EN_CH2DRY_MASK
Definition: hpm_sdm_regs.h:123
#define SDM_CH_SCST_CMPL_MASK
Definition: hpm_sdm_regs.h:709
#define SDM_INT_EN_CH0ERR_MASK
Definition: hpm_sdm_regs.h:183
#define SDM_INT_EN_CH0DRY_MASK
Definition: hpm_sdm_regs.h:143
#define SDM_CH_SDFIFOCTRL_THRSH_GET(x)
Definition: hpm_sdm_regs.h:273
#define SDM_CH_SDST_SDATA_D0_T1_GET(x)
Definition: hpm_sdm_regs.h:570
#define SDM_CH_SDST_SDFIFO_D0_T1_GET(x)
Definition: hpm_sdm_regs.h:580
uint32_t hpm_stat_t
Definition: hpm_common.h:123
void sdm_init_module(SDM_Type *ptr, sdm_control_t *control)
sdm init module
Definition: hpm_sdm_drv.c:23
void sdm_get_channel_common_setting(SDM_Type *ptr, sdm_channel_common_config_t *config)
sdm get channel common setting
Definition: hpm_sdm_drv.c:38
static void sdm_enable_channel_interrupt(SDM_Type *ptr, uint32_t mask)
sdm enable channel interrupt
Definition: hpm_sdm_drv.h:253
void sdm_config_channel_common_setting(SDM_Type *ptr, uint8_t ch_index, sdm_channel_common_config_t *config)
sdm config channel's common setting
Definition: hpm_sdm_drv.c:46
void sdm_config_channel_comparator(SDM_Type *ptr, uint8_t ch_index, sdm_comparator_config_t *cmp_config)
sdm config channel comparator
Definition: hpm_sdm_drv.c:143
sdm_comparator_event_t
Definition: hpm_sdm_drv.h:128
sdm_filter_type_t
Definition: hpm_sdm_drv.h:42
static void sdm_set_ch_fifo_threshold(SDM_Type *ptr, uint8_t ch, uint8_t threshold)
sdm set channel's fifo threshold
Definition: hpm_sdm_drv.h:302
#define CHN_SAMPLING_MODE_MASK(ch)
Definition: hpm_sdm_drv.h:25
void sdm_get_default_module_control(SDM_Type *ptr, sdm_control_t *control)
sdm get default module control
Definition: hpm_sdm_drv.c:15
#define CHN_DRY_MASK(ch)
Definition: hpm_sdm_drv.h:31
static void sdm_enable_channel_comparator(SDM_Type *ptr, uint8_t ch_index, bool enable)
sdm enable channel amplitude detect function
Definition: hpm_sdm_drv.h:212
sdm_sampling_mode_t
Definition: hpm_sdm_drv.h:33
#define CHN_ERR_MASK(ch)
Definition: hpm_sdm_drv.h:30
void sdm_get_channel_default_filter_config(SDM_Type *ptr, sdm_filter_config_t *filter_config)
sdm get channel default filter config
Definition: hpm_sdm_drv.c:64
static void sdm_clean_channel_filter_status(SDM_Type *ptr, uint8_t ch, uint32_t mask)
sdm clean channel sample data status
Definition: hpm_sdm_drv.h:368
static void sdm_enable_module_interrupt(SDM_Type *ptr, bool enable)
sdm enable module interrupt
Definition: hpm_sdm_drv.h:164
hpm_stat_t sdm_receive_one_filter_data(SDM_Type *ptr, uint8_t ch_index, bool using_fifo, int8_t *data, uint8_t data_len_in_bytes)
sdm receive one filter data
Definition: hpm_sdm_drv.c:160
static uint32_t sdm_get_channel_filter_status(SDM_Type *ptr, uint8_t ch)
sdm get channel filter status
Definition: hpm_sdm_drv.h:326
sdm_channel_int_status_mask_t
Definition: hpm_sdm_drv.h:136
static uint8_t sdm_get_channel_fifo_data_count(SDM_Type *ptr, uint8_t ch)
sdm get channel data count in fifo
Definition: hpm_sdm_drv.h:380
static uint16_t sdm_get_channel_comparator_data(SDM_Type *ptr, uint8_t ch)
sdm get channel comparator data
Definition: hpm_sdm_drv.h:416
static void sdm_enable_channel_by_mask(SDM_Type *ptr, uint32_t ch_mask)
sdm enable channel by mask
Definition: hpm_sdm_drv.h:229
sdm_channel_enable_mask_t
Definition: hpm_sdm_drv.h:147
static int32_t sdm_get_channel_fifo_data(SDM_Type *ptr, uint8_t ch)
sdm get channel filter output data in fifo
Definition: hpm_sdm_drv.h:392
static uint32_t sdm_get_status(SDM_Type *ptr)
sdm get status register value
Definition: hpm_sdm_drv.h:264
static void sdm_set_channel_comparator_low_threshold(SDM_Type *ptr, uint8_t ch, uint16_t value)
sdm set channel comparator low threshold
Definition: hpm_sdm_drv.h:452
hpm_stat_t sdm_receive_filter_data(SDM_Type *ptr, uint8_t ch_index, bool using_fifo, int8_t *data, uint32_t count, uint8_t data_len_in_bytes)
sdm receive filter data
Definition: hpm_sdm_drv.c:189
static uint8_t sdm_get_channel_clock_cycle_count(SDM_Type *ptr, uint8_t ch)
sdm get channel input clock cycle count
Definition: hpm_sdm_drv.h:404
static void sdm_enable_channel(SDM_Type *ptr, uint8_t ch_index, bool enable)
sdm enable channel
Definition: hpm_sdm_drv.h:180
static uint32_t sdm_get_channel_comparator_status(SDM_Type *ptr, uint8_t ch)
sdm get channel comparator status register value
Definition: hpm_sdm_drv.h:464
static void sdm_set_channel_comparator_high_threshold(SDM_Type *ptr, uint8_t ch, uint16_t value)
sdm set channel comparator high threshold
Definition: hpm_sdm_drv.h:428
#define CHN_EN_MASK(ch)
Definition: hpm_sdm_drv.h:28
void sdm_config_channel_filter(SDM_Type *ptr, uint8_t ch_index, sdm_filter_config_t *filter_config)
sdm config channel filter
Definition: hpm_sdm_drv.c:108
static bool sdm_get_channel_data_error_status(SDM_Type *ptr, uint8_t ch)
get channel error status
Definition: hpm_sdm_drv.h:290
static void sdm_set_channel_comparator_zero_crossing_threshold(SDM_Type *ptr, uint8_t ch, uint16_t value)
sdm set channel comparator zero crossing threshold
Definition: hpm_sdm_drv.h:440
static void sdm_set_channel_sampling_mode(SDM_Type *ptr, uint8_t ch_index, sdm_sampling_mode_t mode)
sdm set channel sampling mode
Definition: hpm_sdm_drv.h:241
static void sdm_clean_channel_comparator_status(SDM_Type *ptr, uint8_t ch, uint32_t mask)
sdm clean channel amplitude detect status
Definition: hpm_sdm_drv.h:476
static bool sdm_get_channel_data_ready_status(SDM_Type *ptr, uint8_t ch)
get channel data ready status
Definition: hpm_sdm_drv.h:277
static uint8_t sdm_get_ch_fifo_threshold(SDM_Type *ptr, uint8_t ch)
sdm get channel fifo threshold
Definition: hpm_sdm_drv.h:314
static void sdm_enable_channel_filter(SDM_Type *ptr, uint8_t ch_index, bool enable)
sdm enable channel sample data function
Definition: hpm_sdm_drv.h:196
void sdm_get_channel_default_comparator_config(SDM_Type *ptr, sdm_comparator_config_t *cmp_config)
sdm get channel default comparator config
Definition: hpm_sdm_drv.c:91
@ sdm_comparator_no_event
Definition: hpm_sdm_drv.h:129
@ sdm_comparator_event_invalid_clk
Definition: hpm_sdm_drv.h:133
@ sdm_comparator_event_out_high_threshold
Definition: hpm_sdm_drv.h:130
@ sdm_comparator_event_hz
Definition: hpm_sdm_drv.h:132
@ sdm_comparator_event_out_low_threshold
Definition: hpm_sdm_drv.h:131
@ sdm_filter_sinc2
Definition: hpm_sdm_drv.h:44
@ sdm_filter_sinc1
Definition: hpm_sdm_drv.h:43
@ sdm_filter_fast_sinc2
Definition: hpm_sdm_drv.h:46
@ sdm_filter_sinc3
Definition: hpm_sdm_drv.h:45
@ sdm_sampling_falling_clk_edge
Definition: hpm_sdm_drv.h:37
@ sdm_sampling_falling_two_clk_edge
Definition: hpm_sdm_drv.h:39
@ sdm_sampling_rising_clk_edge
Definition: hpm_sdm_drv.h:34
@ sdm_sampling_every_clk_edge
Definition: hpm_sdm_drv.h:35
@ sdm_sampling_rising_two_clk_edge
Definition: hpm_sdm_drv.h:38
@ sdm_sampling_manchester_mode
Definition: hpm_sdm_drv.h:36
@ sdm_chn3_data_ready_mask
Definition: hpm_sdm_drv.h:144
@ sdm_chn2_data_ready_mask
Definition: hpm_sdm_drv.h:143
@ sdm_chn0_data_ready_mask
Definition: hpm_sdm_drv.h:141
@ sdm_chn2_error_mask
Definition: hpm_sdm_drv.h:139
@ sdm_chn1_error_mask
Definition: hpm_sdm_drv.h:138
@ sdm_chn1_data_ready_mask
Definition: hpm_sdm_drv.h:142
@ sdm_chn3_error_mask
Definition: hpm_sdm_drv.h:140
@ sdm_chn0_error_mask
Definition: hpm_sdm_drv.h:137
@ sdm_chn0_enable_mask
Definition: hpm_sdm_drv.h:148
@ sdm_chn1_enable_mask
Definition: hpm_sdm_drv.h:149
@ sdm_chn3_enable_mask
Definition: hpm_sdm_drv.h:151
@ sdm_chn2_enable_mask
Definition: hpm_sdm_drv.h:150
Definition: hpm_sdm_regs.h:12
struct SDM_Type::@397 CH[4]
__R uint32_t SCAMP
Definition: hpm_sdm_regs.h:24
__RW uint32_t INT_EN
Definition: hpm_sdm_regs.h:14
__RW uint32_t SCLLT
Definition: hpm_sdm_regs.h:27
__RW uint32_t SDST
Definition: hpm_sdm_regs.h:21
__RW uint32_t CTRL
Definition: hpm_sdm_regs.h:13
__RW uint32_t SDFIFOCTRL
Definition: hpm_sdm_regs.h:18
__RW uint32_t SCHTL
Definition: hpm_sdm_regs.h:25
__RW uint32_t SCST
Definition: hpm_sdm_regs.h:29
__RW uint32_t SDCTRLP
Definition: hpm_sdm_regs.h:19
__R uint32_t STATUS
Definition: hpm_sdm_regs.h:15
__RW uint32_t SCCTRL
Definition: hpm_sdm_regs.h:28
__R uint32_t SDFIFO
Definition: hpm_sdm_regs.h:23
__RW uint32_t SCHTLZ
Definition: hpm_sdm_regs.h:26
Definition: hpm_filter.h:21
Definition: hpm_sdm_drv.h:55
bool enable_err_interrupt
Definition: hpm_sdm_drv.h:57
bool enable_data_ready_interrupt
Definition: hpm_sdm_drv.h:58
uint8_t sampling_mode
Definition: hpm_sdm_drv.h:56
Definition: hpm_sdm_drv.h:62
uint16_t high_threshold
Definition: hpm_sdm_drv.h:63
uint8_t ignore_invalid_samples
Definition: hpm_sdm_drv.h:73
uint16_t low_threshold
Definition: hpm_sdm_drv.h:65
bool enable
Definition: hpm_sdm_drv.h:74
bool en_low_threshold_int
Definition: hpm_sdm_drv.h:70
bool en_zero_cross_threshold_int
Definition: hpm_sdm_drv.h:67
uint8_t oversampling_rate
Definition: hpm_sdm_drv.h:72
bool en_clock_invalid_int
Definition: hpm_sdm_drv.h:68
uint8_t filter_type
Definition: hpm_sdm_drv.h:71
uint16_t zero_cross_threshold
Definition: hpm_sdm_drv.h:64
bool en_high_threshold_int
Definition: hpm_sdm_drv.h:69
Definition: hpm_sdm_drv.h:49
uint8_t clk_signal_sync
Definition: hpm_sdm_drv.h:50
uint8_t data_signal_sync
Definition: hpm_sdm_drv.h:51
bool interrupt_en
Definition: hpm_sdm_drv.h:52
Definition: hpm_sdm_drv.h:78
uint8_t en_cic_data_saturation_int
Definition: hpm_sdm_drv.h:85
uint8_t wtsynmclr
Definition: hpm_sdm_drv.h:90
uint8_t enable
Definition: hpm_sdm_drv.h:94
uint16_t oversampling_rate
Definition: hpm_sdm_drv.h:99
uint8_t ignore_invalid_samples
Definition: hpm_sdm_drv.h:100
uint8_t en_af_int
Definition: hpm_sdm_drv.h:83
uint8_t fifo_clean_on_sync
Definition: hpm_sdm_drv.h:88
uint8_t sync_source
Definition: hpm_sdm_drv.h:87
uint8_t wtsynaclr
Definition: hpm_sdm_drv.h:89
uint8_t wdg_threshold
Definition: hpm_sdm_drv.h:82
uint8_t fifo_threshold
Definition: hpm_sdm_drv.h:79
uint8_t filter_type
Definition: hpm_sdm_drv.h:96
uint8_t output_offset
Definition: hpm_sdm_drv.h:98
bool en_fifo_threshold_int
Definition: hpm_sdm_drv.h:80
uint8_t en_data_ready_int
Definition: hpm_sdm_drv.h:86
bool pwm_signal_sync
Definition: hpm_sdm_drv.h:97
uint8_t en_data_overflow_int
Definition: hpm_sdm_drv.h:84
uint8_t output_32bit
Definition: hpm_sdm_drv.h:92
uint8_t wtsyncen
Definition: hpm_sdm_drv.h:91
uint8_t data_ready_flag_by_fifo
Definition: hpm_sdm_drv.h:93
uint8_t manchester_threshold
Definition: hpm_sdm_drv.h:81
Definition: hpm_sdm_drv.h:121
bool using_fifo
Definition: hpm_sdm_drv.h:125
uint8_t data_len_in_bytes
Definition: hpm_sdm_drv.h:124
uint32_t count
Definition: hpm_sdm_drv.h:122
uint8_t * buff
Definition: hpm_sdm_drv.h:123