TMPM4G(1) Group Peripheral Driver User Manual  V1.0.0.0
txz_adc.h
Go to the documentation of this file.
1 
13 /*------------------------------------------------------------------------------*/
14 /* Define to prevent recursive inclusion */
15 /*------------------------------------------------------------------------------*/
16 #ifndef __ADC_H
17 #define __ADC_H
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 /*------------------------------------------------------------------------------*/
24 /* Includes */
25 /*------------------------------------------------------------------------------*/
26 #include "txz_driver_def.h"
27 #include "txz_adc_ch.h"
38 /*------------------------------------------------------------------------------*/
39 /* Macro Definition */
40 /*------------------------------------------------------------------------------*/
52  #define ADC_NUM_MAX ((uint32_t)24) /* End of group ADC_ChannelMax */
56  /* End of group ADC_Exported_define */
59 
60 /*------------------------------------------------------------------------------*/
61 /* Enumerated Type Definition */
62 /*------------------------------------------------------------------------------*/
70 typedef enum
71 {
82 typedef enum
83 {
91 
95 typedef enum
96 {
97  ADC_SCLK_1 = (0x00000000U),
98  ADC_SCLK_2 = (0x00000001U),
99  ADC_SCLK_4 = (0x00000002U),
100  ADC_SCLK_8 = (0x00000003U),
101  ADC_SCLK_16 = (0x00000004U),
102 }adc_sclk_t;
103 
107 typedef enum
108 {
109  ADC_MOD1_SCLK_1 = (0x00001000U),
110  ADC_MOD1_SCLK_2 = (0x00003000U),
111  ADC_MOD1_SCLK_3 = (0x00004000U),
112  ADC_MOD1_SCLK_4 = (0x00106011U),
113 }adc_mod1_t;
114 
118 typedef enum
119 {
120  ADC_MOD2_TMPM4G9 = (0x00000000U),
121  ADC_MOD2_CLEAR = (0x00000000U),
122 }adc_mod2_t;
123 
127 typedef enum
128 {
129  ADC_INT_DISABLE = (0x00000000U),
130  ADC_INT_ENABLE = (0x00000080U),
131 }adc_int_t;
132 
136 typedef enum
137 {
138  ADC_CONVERSION_DISABLE = (0x00000000U),
139  ADC_CONVERSION_CNT = (0x00000100U),
140  ADC_CONVERSION_SGL = (0x00000200U),
141  ADC_CONVERSION_TRG = (0x00000300U),
142  ADC_CONVERSION_HPTG = (0x00000400U),
144 
148 typedef enum
149 {
150  ADC_DMA_INT_SGL_DISABLE = (0x00000000U),
151  ADC_DMA_INT_SGL_ENABLE = (0x00000020U),
152  ADC_DMA_INT_CNT_DISABLE = (0x00000000U),
153  ADC_DMA_INT_CNT_ENABLE = (0x00000040U),
154  ADC_DMA_INT_TRG_DISABLE = (0x00000000U),
155  ADC_DMA_INT_TRG_ENABLE = (0x00000010U),
156  ADC_TRG_DISABLE = (0x00000000U),
157  ADC_TRG_ENABLE = (0x00000001U),
158  ADC_HPTG_DISABLE = (0x00000000U),
159  ADC_HPTG_ENABLE = (0x00000002U),
161 
166 typedef enum
167 {
168  ADC_AIN_RANGE_MIN = (0x00000000U),
169  ADC_AIN_RANGE_MAX = (0x00000017U),
171 
175 typedef enum
176 {
177  ADC_STATUS_MASK = (0x00000080U),
178  ADC_STATUS_SLEEP = (0x00000000U),
179  ADC_STATUS_RUNNING = (0x00000080U),
180 }adc_status_t;
181 
185 typedef enum
186 {
187  ADC_CNT_STATUS_MASK = (0x00000008U),
188  ADC_CNT_STATUS_SLEEP = (0x00000000U),
189  ADC_CNT_STATUS_RUNNING = (0x00000008U),
191 
195 typedef enum
196 {
197  ADC_SGL_STATUS_MASK = (0x00000004U),
198  ADC_SGL_STATUS_SLEEP = (0x00000000U),
199  ADC_SGL_STATUS_RUNNING = (0x00000004U),
201 
205 typedef enum
206 {
207  ADC_TRG_STATUS_MASK = (0x00000002U),
208  ADC_TRG_STATUS_SLEEP = (0x00000000U),
209  ADC_TRG_STATUS_RUNNING = (0x00000002U),
211 
215 typedef enum
216 {
217  ADC_HPTG_STATUS_MASK = (0x00000001U),
218  ADC_HPTG_STATUS_SLEEP = (0x00000000U),
219  ADC_HPTG_STATUS_RUNNING = (0x00000001U),
221 
225 typedef enum
226 {
227  ADCMP3EN_DISABLE = (0x00000000U),
228  ADCMP3EN_ENABLE = (0x00000008U),
229  ADCMP2EN_DISABLE = (0x00000000U),
230  ADCMP2EN_ENABLE = (0x00000004U),
231  ADCMP1EN_DISABLE = (0x00000000U),
232  ADCMP1EN_ENABLE = (0x00000002U),
233  ADCMP0EN_DISABLE = (0x00000000U),
234  ADCMP0EN_ENABLE = (0x00000001U),
235 }adcmpxen_t;
236 
240 typedef enum
241 {
242  ADCMPCNT_1 = (0x00000000U),
243  ADCMPCNT_2 = (0x00000100U),
244  ADCMPCNT_3 = (0x00000200U),
245  ADCMPCNT_4 = (0x00000300U),
246  ADCMPCNT_5 = (0x00000400U),
247  ADCMPCNT_6 = (0x00000500U),
248  ADCMPCNT_7 = (0x00000600U),
249  ADCMPCNT_8 = (0x00000700U),
250  ADCMPCNT_9 = (0x00000800U),
251  ADCMPCNT_10 = (0x00000900U),
252  ADCMPCNT_11 = (0x00000a00U),
253  ADCMPCNT_12 = (0x00000b00U),
254  ADCMPCNT_13 = (0x00000c00U),
255  ADCMPCNT_14 = (0x00000d00U),
256  ADCMPCNT_15 = (0x00000e00U),
257  ADCMPCNT_16 = (0x00000f00U),
258 }adcmpcnt_t;
259 
263 typedef enum
264 {
265  ADCMPCond_CNT = (0x00000000U),
266  ADCMPCond_ACC = (0x00000040U),
267 }adcmpcond_t;
268 
272 typedef enum
273 {
274  ADCMPBigSml_Big = (0x00000000U),
275  ADCMPBigSml_Sml = (0x00000020U),
277 
281 typedef enum
282 {
283  ADCMPStr_Reg0 = (0x00000000U),
284  ADCMPStr_Reg1 = (0x00000001U),
285  ADCMPStr_Reg2 = (0x00000002U),
286  ADCMPStr_Reg3 = (0x00000003U),
287  ADCMPStr_Reg4 = (0x00000004U),
288  ADCMPStr_Reg5 = (0x00000005U),
289  ADCMPStr_Reg6 = (0x00000006U),
290  ADCMPStr_Reg7 = (0x00000007U),
291  ADCMPStr_Reg8 = (0x00000008U),
292  ADCMPStr_Reg9 = (0x00000009U),
293  ADCMPStr_Reg10 = (0x0000000aU),
294  ADCMPStr_Reg11 = (0x0000000bU),
295  ADCMPStr_Reg12 = (0x0000000cU),
296  ADCMPStr_Reg13 = (0x0000000dU),
297  ADCMPStr_Reg14 = (0x0000000eU),
298  ADCMPStr_Reg15 = (0x0000000fU),
299  ADCMPStr_Reg16 = (0x00000010U),
300  ADCMPStr_Reg17 = (0x00000011U),
301  ADCMPStr_Reg18 = (0x00000012U),
302  ADCMPStr_Reg19 = (0x00000013U),
303  ADCMPStr_Reg20 = (0x00000014U),
304  ADCMPStr_Reg21 = (0x00000015U),
305  ADCMPStr_Reg22 = (0x00000016U),
306  ADCMPStr_Reg23 = (0x00000017U),
307 }adcmpstr_t;
312 typedef enum
313 {
338 }adcexazain_t;
342 typedef enum
343 {
344  ADCEXAZSEL_EXAZ0 = (0x00000000), /*< EXAZ0 */
345  ADCEXAZSEL_EXAZ1 = (0x00000001), /*< EXAZ1 */
346 }adcexazsel_t;
347  /* End of group ADC_Exported_define */
351 
352 /*------------------------------------------------------------------------------*/
353 /* Structure Definition */
354 /*------------------------------------------------------------------------------*/
360 /*----------------------------------*/
364 /*----------------------------------*/
365 typedef struct
366 {
373  uint32_t sampling_select;
374 } adc_clock_t;
375 
376 /*----------------------------------*/
380 /*----------------------------------*/
381 typedef struct
382 {
383  uint32_t CMPEN;
384  uint32_t CMPCNT;
385  uint32_t CMPCond;
386  uint32_t CMPBigSml;
387  uint32_t StrReg;
388  uint32_t ADComp;
389  void (*handle)(uint32_t id, TXZ_Result result);
390 } adc_cmpx_t;
391 
392 /*----------------------------------*/
396 /*----------------------------------*/
397 typedef struct
398 {
399  uint32_t id;
402  uint32_t mod1;
404  uint32_t mod2;
406  adc_cmpx_t CMPxEN[4];
410 
411 /*----------------------------------*/
415 /*----------------------------------*/
416 typedef struct
417 {
418  uint32_t interrupt;
420  uint32_t type;
422  uint32_t ain;
424 
425 /*----------------------------------*/
429 /*----------------------------------*/
430 typedef struct
431 {
434 
435 /*----------------------------------*/
439 /*----------------------------------*/
440 typedef struct
441 {
442  TSB_AD_TypeDef *p_instance;
445  struct
446  {
447  void (*single)(uint32_t id, TXZ_Result result);
448  void (*continuity)(uint32_t id, TXZ_Result result);
449  void (*trigger)(uint32_t id, TXZ_Result result);
450  void (*highpriority)(uint32_t id, TXZ_Result result);
451  } handler;
452 } adc_t;
453  /* End of group ADC_Exported_typedef */
457 
458 /*------------------------------------------------------------------------------*/
459 /* Functions */
460 /*------------------------------------------------------------------------------*/
465 TXZ_Result adc_init(adc_t *p_obj);
466 TXZ_Result adc_deinit(adc_t *p_obj);
468 TXZ_Result adc_channel_setting(adc_t *p_obj, uint32_t ch, adc_channel_setting_t *p_setting);
469 TXZ_Result adc_channel_clear(adc_t *p_obj, uint32_t ch);
470 TXZ_Result adc_cmp_init(adc_t *p_obj, adc_cmpx_t *p_cmpx_t);
471 TXZ_Result adc_cmp_deinit(adc_t *p_obj, adc_cmpx_t *p_cmpx_t);
472 TXZ_Result adc_channel_get_value(adc_t *p_obj, uint32_t ch, uint32_t *p_value);
473 TXZ_Result adc_start(adc_t *p_obj);
474 TXZ_Result adc_stop(adc_t *p_obj);
475 TXZ_Result adc_get_status(adc_t *p_obj, uint32_t *p_status);
476 TXZ_WorkState adc_poll_conversion(adc_t *p_obj, uint32_t timeout);
477 void adc_compa_irq_handler( void );
478 void adc_compb_irq_handler( void );
479 void adc_single_irq_handler( void );
480 void adc_continuity_irq_handler( void );
481 void adc_trigger_irq_handler( void ); /* End of group ADC_Exported_functions */
485  /* End of group ADC */
489  /* End of group Periph_Driver */
493 
494 #ifdef __cplusplus
495 }
496 #endif /* __cplusplus */
497 #endif /* __ADC_H */
498 
499 
Definition: txz_adc.h:110
This file provides all the functions prototypes for ADC driver. Channel Class.
adc_mod2_t
Select ADC Product Setting Value (MOD2).
Definition: txz_adc.h:118
Definition: txz_adc.h:298
Definition: txz_adc.h:86
Definition: txz_adc.h:168
Definition: txz_adc.h:251
Definition: txz_adc.h:248
adc_ain_range_t
Range of AIN Macro Definition. Range of AIN be set "(ADC_AIN_RANGE_MIN <= Value <= ADC_AIN_RANGE_MAX)...
Definition: txz_adc.h:166
Definition: txz_adc.h:337
Definition: txz_adc.h:112
adc_conversion_t
Select conversion method.
Definition: txz_adc.h:136
#define ADC_NUM_MAX
Definition: txz_adc.h:52
Definition: txz_adc.h:325
Definition: txz_adc.h:257
Definition: txz_adc.h:290
Definition: txz_adc.h:326
void adc_single_irq_handler(void)
Definition: txz_adc.h:232
Definition: txz_adc.h:77
TXZ_Result adc_channel_clear(adc_t *p_obj, uint32_t ch)
TXZ_Result adc_get_status(adc_t *p_obj, uint32_t *p_status)
TXZ_Result adc_channel_get_value(adc_t *p_obj, uint32_t ch, uint32_t *p_value)
Definition: txz_adc.h:301
Definition: txz_adc.h:150
Definition: txz_adc.h:227
Definition: txz_adc.h:97
Definition: txz_adc.h:283
Definition: txz_adc.h:249
Definition: txz_adc.h:247
TXZ_Result
Definition: txz_driver_def.h:43
adc_sampling_period1_t exaz1
Definition: txz_adc.h:369
Definition: txz_adc.h:217
Definition: txz_adc.h:296
Definition: txz_adc.h:101
Definition: txz_adc.h:246
Definition: txz_adc.h:156
Definition: txz_adc.h:198
uint32_t StrReg
Definition: txz_adc.h:387
Definition: txz_adc.h:229
adcmpstr_t
Select Compare Store register.
Definition: txz_adc.h:281
Definition: txz_adc.h:303
Definition: txz_adc.h:154
Definition: txz_adc.h:159
adc_cnt_status_t
Continuity Conversion Running Status.
Definition: txz_adc.h:185
void adc_compa_irq_handler(void)
Definition: txz_adc.h:179
Definition: txz_adc.h:324
Definition: txz_adc.h:289
Definition: txz_adc.h:75
Initial setting structure definition.
Definition: txz_adc.h:397
Definition: txz_adc.h:306
Definition: txz_adc.h:120
Definition: txz_adc.h:344
Definition: txz_adc.h:178
Definition: txz_adc.h:322
Definition: txz_adc.h:199
Definition: txz_adc.h:302
Definition: txz_adc.h:87
Definition: txz_adc.h:250
TXZ_Result adc_stop(adc_t *p_obj)
Definition: txz_adc.h:266
Clock information structure definition.
Definition: txz_adc.h:365
Definition: txz_adc.h:336
Definition: txz_adc.h:274
TXZ_Result adc_cmp_deinit(adc_t *p_obj, adc_cmpx_t *p_cmpx_t)
Definition: txz_adc.h:256
adc_dma_int_t
Select DMA interrupt method.
Definition: txz_adc.h:148
TXZ_WorkState
Definition: txz_driver_def.h:48
Definition: txz_adc.h:121
Definition: txz_adc.h:300
Definition: txz_adc.h:320
Definition: txz_adc.h:345
Definition: txz_adc.h:254
uint32_t CMPBigSml
Definition: txz_adc.h:386
TXZ_Result adc_mode1_setting(void)
TXZ_Result adc_start(adc_t *p_obj)
adc_internal_info_t info
Definition: txz_adc.h:444
Definition: txz_adc.h:84
Definition: txz_adc.h:89
Definition: txz_adc.h:99
Definition: txz_adc.h:275
Definition: txz_adc.h:321
void adc_continuity_irq_handler(void)
Definition: txz_adc.h:111
adc_sgl_status_t
Single Conversion Running Status.
Definition: txz_adc.h:195
Definition: txz_adc.h:73
Definition: txz_adc.h:109
Definition: txz_adc.h:219
Definition: txz_adc.h:331
Definition: txz_adc.h:230
Channel Setting. .
Definition: txz_adc.h:416
Definition: txz_adc.h:187
Definition: txz_adc.h:74
Definition: txz_adc.h:72
TXZ_Result adc_cmp_init(adc_t *p_obj, adc_cmpx_t *p_cmpx_t)
Definition: txz_adc.h:88
adc_hpri_status_t
Trigger Conversion Running Status.
Definition: txz_adc.h:215
adc_sclk_t vadcld
Definition: txz_adc.h:371
TXZ_Result adc_channel_setting(adc_t *p_obj, uint32_t ch, adc_channel_setting_t *p_setting)
uint32_t ain
Definition: txz_adc.h:422
Definition: txz_adc.h:188
TXZ_Result adc_deinit(adc_t *p_obj)
uint32_t ADComp
Definition: txz_adc.h:388
TXZ_WorkState adc_poll_conversion(adc_t *p_obj, uint32_t timeout)
Definition: txz_adc.h:293
Definition: txz_adc.h:305
Definition: txz_adc.h:291
Definition: txz_adc.h:140
Definition: txz_adc.h:155
Clock information structure definition.
Definition: txz_adc.h:381
Definition: txz_adc.h:233
All common macro and definition for TXZ peripheral drivers.
Definition: txz_adc.h:288
Definition: txz_adc.h:207
Definition: txz_adc.h:286
adcmpcnt_t
Select Compare count num.
Definition: txz_adc.h:240
Definition: txz_adc.h:242
Definition: txz_adc.h:142
Definition: txz_adc.h:319
Definition: txz_adc.h:335
Definition: txz_adc.h:138
uint32_t id
Definition: txz_adc.h:399
Definition: txz_adc.h:284
Definition: txz_adc.h:141
Definition: txz_adc.h:304
Definition: txz_adc.h:252
Definition: txz_adc.h:157
adc_sampling_period0_t
Outside AIN sampling period.
Definition: txz_adc.h:70
Definition: txz_adc.h:334
Definition: txz_adc.h:314
Definition: txz_adc.h:177
Definition: txz_adc.h:129
Definition: txz_adc.h:98
Definition: txz_adc.h:234
Definition: txz_adc.h:323
Definition: txz_adc.h:255
Definition: txz_adc.h:265
adcmpcond_t
Compare condition.
Definition: txz_adc.h:263
Definition: txz_adc.h:228
Definition: txz_adc.h:158
adc_int_t
Select Interrupt Enable/Disable.
Definition: txz_adc.h:127
Definition: txz_adc.h:243
Definition: txz_adc.h:231
Definition: txz_adc.h:316
Definition: txz_adc.h:294
Definition: txz_adc.h:295
adc_initial_setting_t init
Definition: txz_adc.h:443
Definition: txz_adc.h:329
Definition: txz_adc.h:153
Driver internal information structure definition.
Definition: txz_adc.h:430
Definition: txz_adc.h:218
void adc_trigger_irq_handler(void)
Definition: txz_adc.h:152
Definition: txz_adc.h:315
uint32_t type
Definition: txz_adc.h:420
adcmpbigsml_t
Compare Big, Small condition.
Definition: txz_adc.h:272
Definition: txz_adc.h:197
adc_sampling_period0_t exaz0
Definition: txz_adc.h:367
Definition: txz_adc.h:244
Definition: txz_adc.h:245
uint32_t interrupt
Definition: txz_adc.h:418
Definition: txz_adc.h:151
Definition: txz_adc.h:130
Definition: txz_adc.h:330
Definition: txz_adc.h:76
adc_status_t
AD Running Status.
Definition: txz_adc.h:175
uint32_t CMPCond
Definition: txz_adc.h:385
uint32_t mod2
Definition: txz_adc.h:404
adc_trg_status_t
Trigger Conversion Running Status.
Definition: txz_adc.h:205
Definition: txz_adc.h:139
Definition: txz_adc.h:299
adcexazain_t
Select AIN no.
Definition: txz_adc.h:312
ADC handle structure definition.
Definition: txz_adc.h:440
Definition: txz_adc.h:327
Definition: txz_adc.h:208
adcmpxen_t
Select Enable, Disable setting(ADxCMPEN).
Definition: txz_adc.h:225
ADC handle structure definition.
Definition: txz_adc_ch.h:94
TSB_AD_TypeDef * p_instance
Definition: txz_adc.h:442
adcexazsel_t
Select sampling period, EXAS0 or EXAS1.
Definition: txz_adc.h:342
Definition: txz_adc.h:292
uint32_t CMPEN
Definition: txz_adc.h:383
uint32_t CMPCNT
Definition: txz_adc.h:384
Definition: txz_adc.h:332
Definition: txz_adc.h:318
Definition: txz_adc.h:333
Definition: txz_adc.h:317
void adc_compb_irq_handler(void)
Definition: txz_adc.h:85
Definition: txz_adc.h:287
adc_sclk_t
Select AD prescaler output (SCLK).
Definition: txz_adc.h:95
Definition: txz_adc.h:253
adc_clock_t clk
Definition: txz_adc.h:400
Definition: txz_adc.h:100
uint32_t mod1
Definition: txz_adc.h:402
Definition: txz_adc.h:189
Definition: txz_adc.h:328
Definition: txz_adc.h:209
Definition: txz_adc.h:297
adc_mod1_t
Select SCLK Frequency Band (MOD1).
Definition: txz_adc.h:107
uint32_t sampling_select
Definition: txz_adc.h:373
Definition: txz_adc.h:285
adc_sampling_period1_t
Outside AIN sampling period.
Definition: txz_adc.h:82
Definition: txz_adc.h:169
TXZ_Result adc_init(adc_t *p_obj)