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)22void 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)34void 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)64void 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)93void 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)108uint8_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)122void 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)142void 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)157uint8_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)170void TADC_ClearINTStatus(void) 171 { 172 ANA->INTSTS = ANA_INTSTS_INTSTS13; 173 } 174 175 /*********************************** END OF FILE ******************************/ 176