Date: March 20, 2011 This library is created from "LPC17xx CMSIS-Compliant Standard Peripheral Firmware Driver Library (GNU, Keil, IAR) (Jan 28, 2011)", available from NXP's website, under "All microcontrollers support documents" [[http://ics.nxp.com/support/documents/microcontrollers/?type=software]] You will need to follow [[/projects/libraries/svn/mbed/trunk/LPC1768/LPC17xx.h]] while using this library Examples provided here [[/users/frank26080115/programs/LPC1700CMSIS_Examples/]] The beautiful thing is that NXP does not place copyright protection on any of the files in here Only a few modifications are made to make it compile with the mbed online compiler, I fixed some warnings as well. This is untested as of March 20, 2011 Forum post about this library: [[/forum/mbed/topic/2030/]]

Committer:
frank26080115
Date:
Sun Mar 20 18:45:15 2011 +0000
Revision:
0:84d7747641aa

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frank26080115 0:84d7747641aa 1 /***********************************************************************//**
frank26080115 0:84d7747641aa 2 * @file lpc17xx_adc.c
frank26080115 0:84d7747641aa 3 * @brief Contains all functions support for ADC firmware library on LPC17xx
frank26080115 0:84d7747641aa 4 * @version 3.0
frank26080115 0:84d7747641aa 5 * @date 18. June. 2010
frank26080115 0:84d7747641aa 6 * @author NXP MCU SW Application Team
frank26080115 0:84d7747641aa 7 **************************************************************************
frank26080115 0:84d7747641aa 8 * Software that is described herein is for illustrative purposes only
frank26080115 0:84d7747641aa 9 * which provides customers with programming information regarding the
frank26080115 0:84d7747641aa 10 * products. This software is supplied "AS IS" without any warranties.
frank26080115 0:84d7747641aa 11 * NXP Semiconductors assumes no responsibility or liability for the
frank26080115 0:84d7747641aa 12 * use of the software, conveys no license or title under any patent,
frank26080115 0:84d7747641aa 13 * copyright, or mask work right to the product. NXP Semiconductors
frank26080115 0:84d7747641aa 14 * reserves the right to make changes in the software without
frank26080115 0:84d7747641aa 15 * notification. NXP Semiconductors also make no representation or
frank26080115 0:84d7747641aa 16 * warranty that such application will be suitable for the specified
frank26080115 0:84d7747641aa 17 * use without further testing or modification.
frank26080115 0:84d7747641aa 18 **********************************************************************/
frank26080115 0:84d7747641aa 19
frank26080115 0:84d7747641aa 20 /* Peripheral group ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 21 /** @addtogroup ADC
frank26080115 0:84d7747641aa 22 * @{
frank26080115 0:84d7747641aa 23 */
frank26080115 0:84d7747641aa 24
frank26080115 0:84d7747641aa 25 /* Includes ------------------------------------------------------------------- */
frank26080115 0:84d7747641aa 26 #include "lpc17xx_adc.h"
frank26080115 0:84d7747641aa 27 #include "lpc17xx_clkpwr.h"
frank26080115 0:84d7747641aa 28
frank26080115 0:84d7747641aa 29 /* If this source file built with example, the LPC17xx FW library configuration
frank26080115 0:84d7747641aa 30 * file in each example directory ("lpc17xx_libcfg.h") must be included,
frank26080115 0:84d7747641aa 31 * otherwise the default FW library configuration file must be included instead
frank26080115 0:84d7747641aa 32 */
frank26080115 0:84d7747641aa 33 #ifdef __BUILD_WITH_EXAMPLE__
frank26080115 0:84d7747641aa 34 #include "lpc17xx_libcfg.h"
frank26080115 0:84d7747641aa 35 #else
frank26080115 0:84d7747641aa 36 #include "lpc17xx_libcfg_default.h"
frank26080115 0:84d7747641aa 37 #endif /* __BUILD_WITH_EXAMPLE__ */
frank26080115 0:84d7747641aa 38
frank26080115 0:84d7747641aa 39
frank26080115 0:84d7747641aa 40 #ifdef _ADC
frank26080115 0:84d7747641aa 41
frank26080115 0:84d7747641aa 42 /* Public Functions ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 43 /** @addtogroup ADC_Public_Functions
frank26080115 0:84d7747641aa 44 * @{
frank26080115 0:84d7747641aa 45 */
frank26080115 0:84d7747641aa 46
frank26080115 0:84d7747641aa 47 /*********************************************************************//**
frank26080115 0:84d7747641aa 48 * @brief Initial for ADC
frank26080115 0:84d7747641aa 49 * + Set bit PCADC
frank26080115 0:84d7747641aa 50 * + Set clock for ADC
frank26080115 0:84d7747641aa 51 * + Set Clock Frequency
frank26080115 0:84d7747641aa 52 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 53 * @param[in] rate ADC conversion rate, should be <=200KHz
frank26080115 0:84d7747641aa 54 * @return None
frank26080115 0:84d7747641aa 55 **********************************************************************/
frank26080115 0:84d7747641aa 56 void ADC_Init(LPC_ADC_TypeDef *ADCx, uint32_t rate)
frank26080115 0:84d7747641aa 57 {
frank26080115 0:84d7747641aa 58 uint32_t temp, tmp;
frank26080115 0:84d7747641aa 59
frank26080115 0:84d7747641aa 60 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 61 CHECK_PARAM(PARAM_ADC_RATE(rate));
frank26080115 0:84d7747641aa 62
frank26080115 0:84d7747641aa 63 // Turn on power and clock
frank26080115 0:84d7747641aa 64 CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCAD, ENABLE);
frank26080115 0:84d7747641aa 65
frank26080115 0:84d7747641aa 66 ADCx->ADCR = 0;
frank26080115 0:84d7747641aa 67
frank26080115 0:84d7747641aa 68 //Enable PDN bit
frank26080115 0:84d7747641aa 69 tmp = ADC_CR_PDN;
frank26080115 0:84d7747641aa 70 // Set clock frequency
frank26080115 0:84d7747641aa 71 temp = CLKPWR_GetPCLK(CLKPWR_PCLKSEL_ADC);
frank26080115 0:84d7747641aa 72 /* The APB clock (PCLK_ADC0) is divided by (CLKDIV+1) to produce the clock for
frank26080115 0:84d7747641aa 73 * A/D converter, which should be less than or equal to 13MHz.
frank26080115 0:84d7747641aa 74 * A fully conversion requires 65 of these clocks.
frank26080115 0:84d7747641aa 75 * ADC clock = PCLK_ADC0 / (CLKDIV + 1);
frank26080115 0:84d7747641aa 76 * ADC rate = ADC clock / 65;
frank26080115 0:84d7747641aa 77 */
frank26080115 0:84d7747641aa 78 temp = (temp /(rate * 65)) - 1;
frank26080115 0:84d7747641aa 79 tmp |= ADC_CR_CLKDIV(temp);
frank26080115 0:84d7747641aa 80
frank26080115 0:84d7747641aa 81 ADCx->ADCR = tmp;
frank26080115 0:84d7747641aa 82 }
frank26080115 0:84d7747641aa 83
frank26080115 0:84d7747641aa 84
frank26080115 0:84d7747641aa 85 /*********************************************************************//**
frank26080115 0:84d7747641aa 86 * @brief Close ADC
frank26080115 0:84d7747641aa 87 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 88 * @return None
frank26080115 0:84d7747641aa 89 **********************************************************************/
frank26080115 0:84d7747641aa 90 void ADC_DeInit(LPC_ADC_TypeDef *ADCx)
frank26080115 0:84d7747641aa 91 {
frank26080115 0:84d7747641aa 92 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 93
frank26080115 0:84d7747641aa 94 // Clear PDN bit
frank26080115 0:84d7747641aa 95 ADCx->ADCR &= ~ADC_CR_PDN;
frank26080115 0:84d7747641aa 96 // Turn on power and clock
frank26080115 0:84d7747641aa 97 CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCAD, DISABLE);
frank26080115 0:84d7747641aa 98 }
frank26080115 0:84d7747641aa 99
frank26080115 0:84d7747641aa 100
frank26080115 0:84d7747641aa 101 /*********************************************************************//**
frank26080115 0:84d7747641aa 102 * @brief Get Result conversion from A/D data register
frank26080115 0:84d7747641aa 103 * @param[in] channel number which want to read back the result
frank26080115 0:84d7747641aa 104 * @return Result of conversion
frank26080115 0:84d7747641aa 105 *********************************************************************/
frank26080115 0:84d7747641aa 106 uint32_t ADC_GetData(uint32_t channel)
frank26080115 0:84d7747641aa 107 {
frank26080115 0:84d7747641aa 108 uint32_t adc_value;
frank26080115 0:84d7747641aa 109
frank26080115 0:84d7747641aa 110 CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));
frank26080115 0:84d7747641aa 111
frank26080115 0:84d7747641aa 112 adc_value = *(uint32_t *)((&LPC_ADC->ADDR0) + channel);
frank26080115 0:84d7747641aa 113 return ADC_GDR_RESULT(adc_value);
frank26080115 0:84d7747641aa 114 }
frank26080115 0:84d7747641aa 115
frank26080115 0:84d7747641aa 116 /*********************************************************************//**
frank26080115 0:84d7747641aa 117 * @brief Set start mode for ADC
frank26080115 0:84d7747641aa 118 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 119 * @param[in] start_mode Start mode choose one of modes in
frank26080115 0:84d7747641aa 120 * 'ADC_START_OPT' enumeration type definition, should be:
frank26080115 0:84d7747641aa 121 * - ADC_START_CONTINUOUS
frank26080115 0:84d7747641aa 122 * - ADC_START_NOW
frank26080115 0:84d7747641aa 123 * - ADC_START_ON_EINT0
frank26080115 0:84d7747641aa 124 * - ADC_START_ON_CAP01
frank26080115 0:84d7747641aa 125 * - ADC_START_ON_MAT01
frank26080115 0:84d7747641aa 126 * - ADC_START_ON_MAT03
frank26080115 0:84d7747641aa 127 * - ADC_START_ON_MAT10
frank26080115 0:84d7747641aa 128 * - ADC_START_ON_MAT11
frank26080115 0:84d7747641aa 129 * @return None
frank26080115 0:84d7747641aa 130 *********************************************************************/
frank26080115 0:84d7747641aa 131 void ADC_StartCmd(LPC_ADC_TypeDef *ADCx, uint8_t start_mode)
frank26080115 0:84d7747641aa 132 {
frank26080115 0:84d7747641aa 133 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 134 CHECK_PARAM(PARAM_ADC_START_OPT(start_mode));
frank26080115 0:84d7747641aa 135
frank26080115 0:84d7747641aa 136 ADCx->ADCR &= ~ADC_CR_START_MASK;
frank26080115 0:84d7747641aa 137 ADCx->ADCR |=ADC_CR_START_MODE_SEL((uint32_t)start_mode);
frank26080115 0:84d7747641aa 138 }
frank26080115 0:84d7747641aa 139
frank26080115 0:84d7747641aa 140
frank26080115 0:84d7747641aa 141 /*********************************************************************//**
frank26080115 0:84d7747641aa 142 * @brief ADC Burst mode setting
frank26080115 0:84d7747641aa 143 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 144 * @param[in] NewState
frank26080115 0:84d7747641aa 145 * - 1: Set Burst mode
frank26080115 0:84d7747641aa 146 * - 0: reset Burst mode
frank26080115 0:84d7747641aa 147 * @return None
frank26080115 0:84d7747641aa 148 **********************************************************************/
frank26080115 0:84d7747641aa 149 void ADC_BurstCmd(LPC_ADC_TypeDef *ADCx, FunctionalState NewState)
frank26080115 0:84d7747641aa 150 {
frank26080115 0:84d7747641aa 151 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 152
frank26080115 0:84d7747641aa 153 ADCx->ADCR &= ~ADC_CR_BURST;
frank26080115 0:84d7747641aa 154 if (NewState){
frank26080115 0:84d7747641aa 155 ADCx->ADCR |= ADC_CR_BURST;
frank26080115 0:84d7747641aa 156 }
frank26080115 0:84d7747641aa 157 }
frank26080115 0:84d7747641aa 158
frank26080115 0:84d7747641aa 159 /*********************************************************************//**
frank26080115 0:84d7747641aa 160 * @brief Set AD conversion in power mode
frank26080115 0:84d7747641aa 161 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 162 * @param[in] NewState
frank26080115 0:84d7747641aa 163 * - 1: AD converter is optional
frank26080115 0:84d7747641aa 164 * - 0: AD Converter is in power down mode
frank26080115 0:84d7747641aa 165 * @return None
frank26080115 0:84d7747641aa 166 **********************************************************************/
frank26080115 0:84d7747641aa 167 void ADC_PowerdownCmd(LPC_ADC_TypeDef *ADCx, FunctionalState NewState)
frank26080115 0:84d7747641aa 168 {
frank26080115 0:84d7747641aa 169 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 170
frank26080115 0:84d7747641aa 171 ADCx->ADCR &= ~ADC_CR_PDN;
frank26080115 0:84d7747641aa 172 if (NewState){
frank26080115 0:84d7747641aa 173 ADCx->ADCR |= ADC_CR_PDN;
frank26080115 0:84d7747641aa 174 }
frank26080115 0:84d7747641aa 175 }
frank26080115 0:84d7747641aa 176
frank26080115 0:84d7747641aa 177 /*********************************************************************//**
frank26080115 0:84d7747641aa 178 * @brief Set Edge start configuration
frank26080115 0:84d7747641aa 179 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 180 * @param[in] EdgeOption is ADC_START_ON_RISING and ADC_START_ON_FALLING
frank26080115 0:84d7747641aa 181 * 0:ADC_START_ON_RISING
frank26080115 0:84d7747641aa 182 * 1:ADC_START_ON_FALLING
frank26080115 0:84d7747641aa 183 * @return None
frank26080115 0:84d7747641aa 184 **********************************************************************/
frank26080115 0:84d7747641aa 185 void ADC_EdgeStartConfig(LPC_ADC_TypeDef *ADCx, uint8_t EdgeOption)
frank26080115 0:84d7747641aa 186 {
frank26080115 0:84d7747641aa 187 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 188 CHECK_PARAM(PARAM_ADC_START_ON_EDGE_OPT(EdgeOption));
frank26080115 0:84d7747641aa 189
frank26080115 0:84d7747641aa 190 ADCx->ADCR &= ~ADC_CR_EDGE;
frank26080115 0:84d7747641aa 191 if (EdgeOption){
frank26080115 0:84d7747641aa 192 ADCx->ADCR |= ADC_CR_EDGE;
frank26080115 0:84d7747641aa 193 }
frank26080115 0:84d7747641aa 194 }
frank26080115 0:84d7747641aa 195
frank26080115 0:84d7747641aa 196 /*********************************************************************//**
frank26080115 0:84d7747641aa 197 * @brief ADC interrupt configuration
frank26080115 0:84d7747641aa 198 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 199 * @param[in] IntType: type of interrupt, should be:
frank26080115 0:84d7747641aa 200 * - ADC_ADINTEN0: Interrupt channel 0
frank26080115 0:84d7747641aa 201 * - ADC_ADINTEN1: Interrupt channel 1
frank26080115 0:84d7747641aa 202 * ...
frank26080115 0:84d7747641aa 203 * - ADC_ADINTEN7: Interrupt channel 7
frank26080115 0:84d7747641aa 204 * - ADC_ADGINTEN: Individual channel/global flag done generate an interrupt
frank26080115 0:84d7747641aa 205 * @param[in] NewState:
frank26080115 0:84d7747641aa 206 * - SET : enable ADC interrupt
frank26080115 0:84d7747641aa 207 * - RESET: disable ADC interrupt
frank26080115 0:84d7747641aa 208 * @return None
frank26080115 0:84d7747641aa 209 **********************************************************************/
frank26080115 0:84d7747641aa 210 void ADC_IntConfig (LPC_ADC_TypeDef *ADCx, ADC_TYPE_INT_OPT IntType, FunctionalState NewState)
frank26080115 0:84d7747641aa 211 {
frank26080115 0:84d7747641aa 212 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 213 CHECK_PARAM(PARAM_ADC_TYPE_INT_OPT(IntType));
frank26080115 0:84d7747641aa 214
frank26080115 0:84d7747641aa 215 ADCx->ADINTEN &= ~ADC_INTEN_CH(IntType);
frank26080115 0:84d7747641aa 216 if (NewState){
frank26080115 0:84d7747641aa 217 ADCx->ADINTEN |= ADC_INTEN_CH(IntType);
frank26080115 0:84d7747641aa 218 }
frank26080115 0:84d7747641aa 219 }
frank26080115 0:84d7747641aa 220
frank26080115 0:84d7747641aa 221 /*********************************************************************//**
frank26080115 0:84d7747641aa 222 * @brief Enable/Disable ADC channel number
frank26080115 0:84d7747641aa 223 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 224 * @param[in] Channel channel number
frank26080115 0:84d7747641aa 225 * @param[in] NewState Enable or Disable
frank26080115 0:84d7747641aa 226 *
frank26080115 0:84d7747641aa 227 * @return None
frank26080115 0:84d7747641aa 228 **********************************************************************/
frank26080115 0:84d7747641aa 229 void ADC_ChannelCmd (LPC_ADC_TypeDef *ADCx, uint8_t Channel, FunctionalState NewState)
frank26080115 0:84d7747641aa 230 {
frank26080115 0:84d7747641aa 231 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 232 CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(Channel));
frank26080115 0:84d7747641aa 233
frank26080115 0:84d7747641aa 234 if (NewState == ENABLE) {
frank26080115 0:84d7747641aa 235 ADCx->ADCR |= ADC_CR_CH_SEL(Channel);
frank26080115 0:84d7747641aa 236 } else {
frank26080115 0:84d7747641aa 237 ADCx->ADCR &= ~ADC_CR_CH_SEL(Channel);
frank26080115 0:84d7747641aa 238 }
frank26080115 0:84d7747641aa 239 }
frank26080115 0:84d7747641aa 240
frank26080115 0:84d7747641aa 241 /*********************************************************************//**
frank26080115 0:84d7747641aa 242 * @brief Get ADC result
frank26080115 0:84d7747641aa 243 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 244 * @param[in] channel: channel number, should be 0...7
frank26080115 0:84d7747641aa 245 * @return Data conversion
frank26080115 0:84d7747641aa 246 **********************************************************************/
frank26080115 0:84d7747641aa 247 uint16_t ADC_ChannelGetData(LPC_ADC_TypeDef *ADCx, uint8_t channel)
frank26080115 0:84d7747641aa 248 {
frank26080115 0:84d7747641aa 249 uint32_t adc_value;
frank26080115 0:84d7747641aa 250
frank26080115 0:84d7747641aa 251 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 252 CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));
frank26080115 0:84d7747641aa 253
frank26080115 0:84d7747641aa 254 adc_value = *(uint32_t *) ((&ADCx->ADDR0) + channel);
frank26080115 0:84d7747641aa 255 return ADC_DR_RESULT(adc_value);
frank26080115 0:84d7747641aa 256 }
frank26080115 0:84d7747641aa 257
frank26080115 0:84d7747641aa 258 /*********************************************************************//**
frank26080115 0:84d7747641aa 259 * @brief Get ADC Chanel status from ADC data register
frank26080115 0:84d7747641aa 260 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 261 * @param[in] channel: channel number, should be 0..7
frank26080115 0:84d7747641aa 262 * @param[in] StatusType
frank26080115 0:84d7747641aa 263 * 0:Burst status
frank26080115 0:84d7747641aa 264 * 1:Done status
frank26080115 0:84d7747641aa 265 * @return SET / RESET
frank26080115 0:84d7747641aa 266 **********************************************************************/
frank26080115 0:84d7747641aa 267 FlagStatus ADC_ChannelGetStatus(LPC_ADC_TypeDef *ADCx, uint8_t channel, uint32_t StatusType)
frank26080115 0:84d7747641aa 268 {
frank26080115 0:84d7747641aa 269 uint32_t temp;
frank26080115 0:84d7747641aa 270
frank26080115 0:84d7747641aa 271 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 272 CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));
frank26080115 0:84d7747641aa 273 CHECK_PARAM(PARAM_ADC_DATA_STATUS(StatusType));
frank26080115 0:84d7747641aa 274
frank26080115 0:84d7747641aa 275 temp = *(uint32_t *) ((&ADCx->ADDR0) + channel);
frank26080115 0:84d7747641aa 276 if (StatusType) {
frank26080115 0:84d7747641aa 277 temp &= ADC_DR_DONE_FLAG;
frank26080115 0:84d7747641aa 278 }else{
frank26080115 0:84d7747641aa 279 temp &= ADC_DR_OVERRUN_FLAG;
frank26080115 0:84d7747641aa 280 }
frank26080115 0:84d7747641aa 281 if (temp) {
frank26080115 0:84d7747641aa 282 return SET;
frank26080115 0:84d7747641aa 283 } else {
frank26080115 0:84d7747641aa 284 return RESET;
frank26080115 0:84d7747641aa 285 }
frank26080115 0:84d7747641aa 286
frank26080115 0:84d7747641aa 287 }
frank26080115 0:84d7747641aa 288
frank26080115 0:84d7747641aa 289 /*********************************************************************//**
frank26080115 0:84d7747641aa 290 * @brief Get ADC Data from AD Global register
frank26080115 0:84d7747641aa 291 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 292 * @return Result of conversion
frank26080115 0:84d7747641aa 293 **********************************************************************/
frank26080115 0:84d7747641aa 294 uint32_t ADC_GlobalGetData(LPC_ADC_TypeDef *ADCx)
frank26080115 0:84d7747641aa 295 {
frank26080115 0:84d7747641aa 296 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 297
frank26080115 0:84d7747641aa 298 return ((uint32_t)(ADCx->ADGDR));
frank26080115 0:84d7747641aa 299 }
frank26080115 0:84d7747641aa 300
frank26080115 0:84d7747641aa 301 /*********************************************************************//**
frank26080115 0:84d7747641aa 302 * @brief Get ADC Chanel status from AD global data register
frank26080115 0:84d7747641aa 303 * @param[in] ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
frank26080115 0:84d7747641aa 304 * @param[in] StatusType
frank26080115 0:84d7747641aa 305 * 0:Burst status
frank26080115 0:84d7747641aa 306 * 1:Done status
frank26080115 0:84d7747641aa 307 * @return SET / RESET
frank26080115 0:84d7747641aa 308 **********************************************************************/
frank26080115 0:84d7747641aa 309 FlagStatus ADC_GlobalGetStatus(LPC_ADC_TypeDef *ADCx, uint32_t StatusType)
frank26080115 0:84d7747641aa 310 {
frank26080115 0:84d7747641aa 311 uint32_t temp;
frank26080115 0:84d7747641aa 312
frank26080115 0:84d7747641aa 313 CHECK_PARAM(PARAM_ADCx(ADCx));
frank26080115 0:84d7747641aa 314 CHECK_PARAM(PARAM_ADC_DATA_STATUS(StatusType));
frank26080115 0:84d7747641aa 315
frank26080115 0:84d7747641aa 316 temp = ADCx->ADGDR;
frank26080115 0:84d7747641aa 317 if (StatusType){
frank26080115 0:84d7747641aa 318 temp &= ADC_DR_DONE_FLAG;
frank26080115 0:84d7747641aa 319 }else{
frank26080115 0:84d7747641aa 320 temp &= ADC_DR_OVERRUN_FLAG;
frank26080115 0:84d7747641aa 321 }
frank26080115 0:84d7747641aa 322 if (temp){
frank26080115 0:84d7747641aa 323 return SET;
frank26080115 0:84d7747641aa 324 }else{
frank26080115 0:84d7747641aa 325 return RESET;
frank26080115 0:84d7747641aa 326 }
frank26080115 0:84d7747641aa 327 }
frank26080115 0:84d7747641aa 328
frank26080115 0:84d7747641aa 329 /**
frank26080115 0:84d7747641aa 330 * @}
frank26080115 0:84d7747641aa 331 */
frank26080115 0:84d7747641aa 332
frank26080115 0:84d7747641aa 333 #endif /* _ADC */
frank26080115 0:84d7747641aa 334
frank26080115 0:84d7747641aa 335 /**
frank26080115 0:84d7747641aa 336 * @}
frank26080115 0:84d7747641aa 337 */
frank26080115 0:84d7747641aa 338
frank26080115 0:84d7747641aa 339 /* --------------------------------- End Of File ------------------------------ */
frank26080115 0:84d7747641aa 340