1 /**
2   ******************************************************************************
3   * @file    lib_adc_tiny.c
4   * @author  Application Team
5   * @version V4.4.0
6   * @date    2018-09-27
7   * @brief   ADC_TINY library.
8   ******************************************************************************
9   * @attention
10   *
11   ******************************************************************************
12   */
13 #include "lib_adc_tiny.h"
14 
15 #define ANA_REGF_RSTValue (0U)
16 
17 /**
18   * @brief  Initializes the Tiny ADC peripheral registers to their default reset values.
19   * @param  None
20   * @retval None
21   */
TADC_DeInit(void)22 void TADC_DeInit(void)
23 {
24   ANA->REGF = ANA_REGF_RSTValue;
25   ANA->INTSTS = ANA_INTSTS_INTSTS13;
26   ANA->MISC_A &= ~ANA_MISC_TADCTH;
27 }
28 
29 /**
30   * @brief  Fills each TADC_InitStruct member with its default value.
31   * @param  TADC_InitStruct: pointer to an TADCInitType structure which will be initialized.
32   * @retval None
33   */
TADC_StructInit(TADCInitType * TADC_InitStruct)34 void TADC_StructInit(TADCInitType* TADC_InitStruct)
35 {
36   /*--------------- Reset TADC init structure parameters values ---------------*/
37   /* Initialize the SignalSel member */
38   TADC_InitStruct->SignalSel = ADCTINY_SIGNALSEL_IOE6;
39   /* Initialize the ADTREF1 member */
40   TADC_InitStruct->ADTREF1 = ADCTINY_REF1_0_9;
41   /* Initialize the ADTREF2 member */
42   TADC_InitStruct->ADTREF2 = ADCTINY_REF2_1_8;
43   /* Initialize the ADTREF3 member */
44   TADC_InitStruct->ADTREF3 = ADCTINY_REF3_2_7;
45 }
46 
47 /**
48   * @brief  Tiny ADC initialization.
49   * @param  TADC_InitStruct
50                 SelADT:
51                     ADCTINY_SIGNALSEL_IOE6
52                     ADCTINY_SIGNALSEL_IOE7
53                 ADTREF1:
54                     ADCTINY_REF1_0_9
55                     ADCTINY_REF1_0_7
56                 ADTREF2:
57                     ADCTINY_REF2_1_8
58                     ADCTINY_REF2_1_6
59                 ADTREF3:
60                     ADCTINY_REF3_2_7
61                     ADCTINY_REF3_2_5
62   * @retval None
63   */
TADC_Init(TADCInitType * TADC_InitStruct)64 void TADC_Init(TADCInitType* TADC_InitStruct)
65 {
66   uint32_t tmp;
67 
68   /* Check parameters */
69   assert_parameters(IS_ADCTINY_SELADT(TADC_InitStruct->SignalSel));
70   assert_parameters(IS_ADCTINY_ADTREF1(TADC_InitStruct->ADTREF1));
71   assert_parameters(IS_ADCTINY_ADTREF2(TADC_InitStruct->ADTREF2));
72   assert_parameters(IS_ADCTINY_ADTREF3(TADC_InitStruct->ADTREF3));
73 
74   tmp = ANA->REGF;
75   tmp &= ~(ANA_REGF_SELADT     \
76            |ANA_REGF_ADTREF1SEL\
77            |ANA_REGF_ADTREF2SEL\
78            |ANA_REGF_ADTREF3SEL);
79   tmp |= (TADC_InitStruct->SignalSel \
80           |TADC_InitStruct->ADTREF1\
81           |TADC_InitStruct->ADTREF2\
82           |TADC_InitStruct->ADTREF3);
83   ANA->REGF = tmp;
84 }
85 
86 /**
87   * @brief  TADC enable control.
88   * @param  NewState
89                 ENABLE
90                 DISABLE
91   * @retval None
92   */
TADC_Cmd(uint32_t NewState)93 void TADC_Cmd(uint32_t NewState)
94 {
95   /* Check parameters */
96   assert_parameters(IS_FUNCTIONAL_STATE(NewState));
97   if (NewState == ENABLE)
98     ANA->REGF |= ANA_REGF_PDNADT;
99   else
100     ANA->REGF &= ~ANA_REGF_PDNADT;
101 }
102 
103 /**
104   * @brief  Get TADC output.
105   * @param  None
106   * @retval Output of Tiny ADC(0 ~ 3).
107   */
TADC_GetOutput(void)108 uint8_t TADC_GetOutput(void)
109 {
110   return ((ANA->COMPOUT & ANA_COMPOUT_TADCO) >> ANA_COMPOUT_TADCO_Pos);
111 }
112 
113 /**
114   * @brief  Configure Tiny ADC interrupt threshold.
115   * @param  THSel:
116                 ADCTINY_THSEL_0
117                 ADCTINY_THSEL_1
118                 ADCTINY_THSEL_2
119                 ADCTINY_THSEL_3
120   * @retval None.
121   */
TADC_IntTHConfig(uint32_t THSel)122 void TADC_IntTHConfig(uint32_t THSel)
123 {
124   uint32_t tmp;
125 
126   /* Check parameters */
127   assert_parameters(IS_ADCTINY_THSEL(THSel));
128 
129   tmp = ANA->MISC_A;
130   tmp &= ~ANA_MISC_TADCTH;
131   tmp |= THSel;
132   ANA->MISC_A = tmp;
133 }
134 
135 /**
136   * @brief  TADC interrupt enable control.
137   * @param  NewState
138                 ENABLE
139                 DISABLE
140   * @retval None
141   */
TADC_INTConfig(uint32_t NewState)142 void TADC_INTConfig(uint32_t NewState)
143 {
144   /* Check parameters */
145   assert_parameters(IS_FUNCTIONAL_STATE(NewState));
146   if (NewState == ENABLE)
147     ANA->INTEN |= ANA_INTEN_INTEN13;
148   else
149     ANA->INTEN &= ~ANA_INTEN_INTEN13;
150 }
151 
152 /**
153   * @brief  Get Tiny ADC interrupt status.
154   * @param  None
155   * @retval Interrupt status.
156   */
TADC_GetINTStatus(void)157 uint8_t TADC_GetINTStatus(void)
158 {
159   if (ANA->INTSTS & ANA_INTSTS_INTSTS13)
160     return 1;
161   else
162     return 0;
163 }
164 
165 /**
166   * @brief  Clear Tiny ADC interrupt status.
167   * @param  None
168   * @retval None
169   */
TADC_ClearINTStatus(void)170 void TADC_ClearINTStatus(void)
171 {
172   ANA->INTSTS = ANA_INTSTS_INTSTS13;
173 }
174 
175 /*********************************** END OF FILE ******************************/
176