| /********************************************************************** | |
| * $Id$ lpc18xx_dac.c 2011-06-02 | |
| *//** | |
| * @file lpc18xx_dac.c | |
| * @brief Contains all functions support for DAC firmware library on LPC18xx | |
| * @version 1.0 | |
| * @date 02. June. 2011 | |
| * @author NXP MCU SW Application Team | |
| * | |
| * Copyright(C) 2011, NXP Semiconductor | |
| * All rights reserved. | |
| * | |
| *********************************************************************** | |
| * Software that is described herein is for illustrative purposes only | |
| * which provides customers with programming information regarding the | |
| * products. This software is supplied "AS IS" without any warranties. | |
| * NXP Semiconductors assumes no responsibility or liability for the | |
| * use of the software, conveys no license or title under any patent, | |
| * copyright, or mask work right to the product. NXP Semiconductors | |
| * reserves the right to make changes in the software without | |
| * notification. NXP Semiconductors also make no representation or | |
| * warranty that such application will be suitable for the specified | |
| * use without further testing or modification. | |
| **********************************************************************/ | |
| /* Peripheral group ----------------------------------------------------------- */ | |
| /** @addtogroup DAC | |
| * @{ | |
| */ | |
| /* Includes ------------------------------------------------------------------- */ | |
| #include "lpc18xx_dac.h" | |
| #include "lpc18xx_cgu.h" | |
| /* If this source file built with example, the LPC18xx FW library configuration | |
| * file in each example directory ("lpc18xx_libcfg.h") must be included, | |
| * otherwise the default FW library configuration file must be included instead | |
| */ | |
| #ifdef __BUILD_WITH_EXAMPLE__ | |
| #include "lpc18xx_libcfg.h" | |
| #else | |
| #include "lpc18xx_libcfg_default.h" | |
| #endif /* __BUILD_WITH_EXAMPLE__ */ | |
| #ifdef _DAC | |
| /* Public Functions ----------------------------------------------------------- */ | |
| /** @addtogroup DAC_Public_Functions | |
| * @{ | |
| */ | |
| /*********************************************************************//** | |
| * @brief Initial ADC configuration | |
| * - Maximum current is 700 uA | |
| * - Value to AOUT is 0 | |
| * @param[in] DACx pointer to LPC_DAC_Type, should be: LPC_DAC | |
| * @return None | |
| ***********************************************************************/ | |
| void DAC_Init(LPC_DAC_Type *DACx) | |
| { | |
| CHECK_PARAM(PARAM_DACx(DACx)); | |
| /* Set default clock divider for DAC */ | |
| //LPC_CGU->BASE_VPB3_CLK = (SRC_PL160M_0<<24) | (1<<11); // ABP3 base clock use PLL1 and auto block | |
| CGU_EntityConnect(CGU_CLKSRC_PLL1, CGU_BASE_APB3); | |
| //Set maximum current output | |
| DAC_SetBias(LPC_DAC,DAC_MAX_CURRENT_700uA); | |
| } | |
| /*********************************************************************//** | |
| * @brief Update value to DAC | |
| * @param[in] DACx pointer to LPC_DAC_Type, should be: LPC_DAC | |
| * @param[in] dac_value value 10 bit to be converted to output | |
| * @return None | |
| ***********************************************************************/ | |
| void DAC_UpdateValue (LPC_DAC_Type *DACx,uint32_t dac_value) | |
| { | |
| uint32_t tmp; | |
| CHECK_PARAM(PARAM_DACx(DACx)); | |
| tmp = DACx->CR & DAC_BIAS_EN; | |
| tmp |= DAC_VALUE(dac_value); | |
| // Update value | |
| DACx->CR = tmp; | |
| } | |
| /*********************************************************************//** | |
| * @brief Set Maximum current for DAC | |
| * @param[in] DACx pointer to LPC_DAC_Type, should be: LPC_DAC | |
| * @param[in] bias Using Bias value, should be: | |
| * - 0 is 700 uA | |
| * - 1 is 350 uA | |
| * @return None | |
| ***********************************************************************/ | |
| void DAC_SetBias (LPC_DAC_Type *DACx,uint32_t bias) | |
| { | |
| CHECK_PARAM(PARAM_DAC_CURRENT_OPT(bias)); | |
| DACx->CR &=~DAC_BIAS_EN; | |
| if (bias == DAC_MAX_CURRENT_350uA) | |
| { | |
| DACx->CR |= DAC_BIAS_EN; | |
| } | |
| } | |
| /*********************************************************************//** | |
| * @brief To enable the DMA operation and control DMA timer | |
| * @param[in] DACx pointer to LPC_DAC_Type, should be: LPC_DAC | |
| * @param[in] DAC_ConverterConfigStruct pointer to DAC_CONVERTER_CFG_Type | |
| * - DBLBUF_ENA :enable/disable DACR double buffering feature | |
| * - CNT_ENA :enable/disable timer out counter | |
| * - DMA_ENA :enable/disable DMA access | |
| * @return None | |
| ***********************************************************************/ | |
| void DAC_ConfigDAConverterControl (LPC_DAC_Type *DACx,DAC_CONVERTER_CFG_Type *DAC_ConverterConfigStruct) | |
| { | |
| CHECK_PARAM(PARAM_DACx(DACx)); | |
| DACx->CTRL &= ~DAC_DACCTRL_MASK; | |
| if (DAC_ConverterConfigStruct->DBLBUF_ENA) | |
| DACx->CTRL |= DAC_DBLBUF_ENA; | |
| if (DAC_ConverterConfigStruct->CNT_ENA) | |
| DACx->CTRL |= DAC_CNT_ENA; | |
| if (DAC_ConverterConfigStruct->DMA_ENA) | |
| DACx->CTRL |= DAC_DMA_ENA; | |
| } | |
| /*********************************************************************//** | |
| * @brief Set reload value for interrupt/DMA counter | |
| * @param[in] DACx pointer to LPC_DAC_Type, should be: LPC_DAC | |
| * @param[in] time_out time out to reload for interrupt/DMA counter | |
| * @return None | |
| ***********************************************************************/ | |
| void DAC_SetDMATimeOut(LPC_DAC_Type *DACx, uint32_t time_out) | |
| { | |
| CHECK_PARAM(PARAM_DACx(DACx)); | |
| DACx->CNTVAL = DAC_CCNT_VALUE(time_out); | |
| } | |
| /** | |
| * @} | |
| */ | |
| #endif /* _DAC */ | |
| /** | |
| * @} | |
| */ | |
| /* --------------------------------- End Of File ------------------------------ */ |