Fork of Smoothie to port to mbed non-LPC targets.

Dependencies:   mbed

Fork of Smoothie by Stéphane Cachat

Committer:
Michael J. Spencer
Date:
Fri Feb 28 18:52:52 2014 -0800
Revision:
2:1df0b61d3b5a
Update to latest Smoothie.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Michael J. Spencer 2:1df0b61d3b5a 1 #ifdef __LPC17XX__
Michael J. Spencer 2:1df0b61d3b5a 2
Michael J. Spencer 2:1df0b61d3b5a 3 /**********************************************************************
Michael J. Spencer 2:1df0b61d3b5a 4 * $Id$ lpc17xx_dac.c 2010-05-21
Michael J. Spencer 2:1df0b61d3b5a 5 *//**
Michael J. Spencer 2:1df0b61d3b5a 6 * @file lpc17xx_dac.c
Michael J. Spencer 2:1df0b61d3b5a 7 * @brief Contains all functions support for DAC firmware library on LPC17xx
Michael J. Spencer 2:1df0b61d3b5a 8 * @version 2.0
Michael J. Spencer 2:1df0b61d3b5a 9 * @date 21. May. 2010
Michael J. Spencer 2:1df0b61d3b5a 10 * @author NXP MCU SW Application Team
Michael J. Spencer 2:1df0b61d3b5a 11 *
Michael J. Spencer 2:1df0b61d3b5a 12 * Copyright(C) 2010, NXP Semiconductor
Michael J. Spencer 2:1df0b61d3b5a 13 * All rights reserved.
Michael J. Spencer 2:1df0b61d3b5a 14 *
Michael J. Spencer 2:1df0b61d3b5a 15 ***********************************************************************
Michael J. Spencer 2:1df0b61d3b5a 16 * Software that is described herein is for illustrative purposes only
Michael J. Spencer 2:1df0b61d3b5a 17 * which provides customers with programming information regarding the
Michael J. Spencer 2:1df0b61d3b5a 18 * products. This software is supplied "AS IS" without any warranties.
Michael J. Spencer 2:1df0b61d3b5a 19 * NXP Semiconductors assumes no responsibility or liability for the
Michael J. Spencer 2:1df0b61d3b5a 20 * use of the software, conveys no license or title under any patent,
Michael J. Spencer 2:1df0b61d3b5a 21 * copyright, or mask work right to the product. NXP Semiconductors
Michael J. Spencer 2:1df0b61d3b5a 22 * reserves the right to make changes in the software without
Michael J. Spencer 2:1df0b61d3b5a 23 * notification. NXP Semiconductors also make no representation or
Michael J. Spencer 2:1df0b61d3b5a 24 * warranty that such application will be suitable for the specified
Michael J. Spencer 2:1df0b61d3b5a 25 * use without further testing or modification.
Michael J. Spencer 2:1df0b61d3b5a 26 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 27
Michael J. Spencer 2:1df0b61d3b5a 28 /* Peripheral group ----------------------------------------------------------- */
Michael J. Spencer 2:1df0b61d3b5a 29 /** @addtogroup DAC
Michael J. Spencer 2:1df0b61d3b5a 30 * @{
Michael J. Spencer 2:1df0b61d3b5a 31 */
Michael J. Spencer 2:1df0b61d3b5a 32
Michael J. Spencer 2:1df0b61d3b5a 33 /* Includes ------------------------------------------------------------------- */
Michael J. Spencer 2:1df0b61d3b5a 34 #include "lpc17xx_dac.h"
Michael J. Spencer 2:1df0b61d3b5a 35 #include "lpc17xx_clkpwr.h"
Michael J. Spencer 2:1df0b61d3b5a 36
Michael J. Spencer 2:1df0b61d3b5a 37 /* If this source file built with example, the LPC17xx FW library configuration
Michael J. Spencer 2:1df0b61d3b5a 38 * file in each example directory ("lpc17xx_libcfg.h") must be included,
Michael J. Spencer 2:1df0b61d3b5a 39 * otherwise the default FW library configuration file must be included instead
Michael J. Spencer 2:1df0b61d3b5a 40 */
Michael J. Spencer 2:1df0b61d3b5a 41 #ifdef __BUILD_WITH_EXAMPLE__
Michael J. Spencer 2:1df0b61d3b5a 42 #include "lpc17xx_libcfg.h"
Michael J. Spencer 2:1df0b61d3b5a 43 #else
Michael J. Spencer 2:1df0b61d3b5a 44 #include "lpc17xx_libcfg_default.h"
Michael J. Spencer 2:1df0b61d3b5a 45 #endif /* __BUILD_WITH_EXAMPLE__ */
Michael J. Spencer 2:1df0b61d3b5a 46
Michael J. Spencer 2:1df0b61d3b5a 47
Michael J. Spencer 2:1df0b61d3b5a 48 #ifdef _DAC
Michael J. Spencer 2:1df0b61d3b5a 49
Michael J. Spencer 2:1df0b61d3b5a 50 /* Public Functions ----------------------------------------------------------- */
Michael J. Spencer 2:1df0b61d3b5a 51 /** @addtogroup DAC_Public_Functions
Michael J. Spencer 2:1df0b61d3b5a 52 * @{
Michael J. Spencer 2:1df0b61d3b5a 53 */
Michael J. Spencer 2:1df0b61d3b5a 54
Michael J. Spencer 2:1df0b61d3b5a 55 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 56 * @brief Initial ADC configuration
Michael J. Spencer 2:1df0b61d3b5a 57 * - Maximum current is 700 uA
Michael J. Spencer 2:1df0b61d3b5a 58 * - Value to AOUT is 0
Michael J. Spencer 2:1df0b61d3b5a 59 * @param[in] DACx pointer to LPC_DAC_TypeDef, should be: LPC_DAC
Michael J. Spencer 2:1df0b61d3b5a 60 * @return None
Michael J. Spencer 2:1df0b61d3b5a 61 ***********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 62 void DAC_Init(LPC_DAC_TypeDef *DACx)
Michael J. Spencer 2:1df0b61d3b5a 63 {
Michael J. Spencer 2:1df0b61d3b5a 64 CHECK_PARAM(PARAM_DACx(DACx));
Michael J. Spencer 2:1df0b61d3b5a 65 /* Set default clock divider for DAC */
Michael J. Spencer 2:1df0b61d3b5a 66 // CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_DAC, CLKPWR_PCLKSEL_CCLK_DIV_4);
Michael J. Spencer 2:1df0b61d3b5a 67 //Set maximum current output
Michael J. Spencer 2:1df0b61d3b5a 68 DAC_SetBias(LPC_DAC,DAC_MAX_CURRENT_700uA);
Michael J. Spencer 2:1df0b61d3b5a 69 }
Michael J. Spencer 2:1df0b61d3b5a 70
Michael J. Spencer 2:1df0b61d3b5a 71 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 72 * @brief Update value to DAC
Michael J. Spencer 2:1df0b61d3b5a 73 * @param[in] DACx pointer to LPC_DAC_TypeDef, should be: LPC_DAC
Michael J. Spencer 2:1df0b61d3b5a 74 * @param[in] dac_value : value 10 bit to be converted to output
Michael J. Spencer 2:1df0b61d3b5a 75 * @return None
Michael J. Spencer 2:1df0b61d3b5a 76 ***********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 77 void DAC_UpdateValue (LPC_DAC_TypeDef *DACx,uint32_t dac_value)
Michael J. Spencer 2:1df0b61d3b5a 78 {
Michael J. Spencer 2:1df0b61d3b5a 79 uint32_t tmp;
Michael J. Spencer 2:1df0b61d3b5a 80 CHECK_PARAM(PARAM_DACx(DACx));
Michael J. Spencer 2:1df0b61d3b5a 81 tmp = DACx->DACR & DAC_BIAS_EN;
Michael J. Spencer 2:1df0b61d3b5a 82 tmp |= DAC_VALUE(dac_value);
Michael J. Spencer 2:1df0b61d3b5a 83 // Update value
Michael J. Spencer 2:1df0b61d3b5a 84 DACx->DACR = tmp;
Michael J. Spencer 2:1df0b61d3b5a 85 }
Michael J. Spencer 2:1df0b61d3b5a 86
Michael J. Spencer 2:1df0b61d3b5a 87 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 88 * @brief Set Maximum current for DAC
Michael J. Spencer 2:1df0b61d3b5a 89 * @param[in] DACx pointer to LPC_DAC_TypeDef, should be: LPC_DAC
Michael J. Spencer 2:1df0b61d3b5a 90 * @param[in] bias : 0 is 700 uA
Michael J. Spencer 2:1df0b61d3b5a 91 * 1 350 uA
Michael J. Spencer 2:1df0b61d3b5a 92 * @return None
Michael J. Spencer 2:1df0b61d3b5a 93 ***********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 94 void DAC_SetBias (LPC_DAC_TypeDef *DACx,uint32_t bias)
Michael J. Spencer 2:1df0b61d3b5a 95 {
Michael J. Spencer 2:1df0b61d3b5a 96 CHECK_PARAM(PARAM_DAC_CURRENT_OPT(bias));
Michael J. Spencer 2:1df0b61d3b5a 97 DACx->DACR &=~DAC_BIAS_EN;
Michael J. Spencer 2:1df0b61d3b5a 98 if (bias == DAC_MAX_CURRENT_350uA)
Michael J. Spencer 2:1df0b61d3b5a 99 {
Michael J. Spencer 2:1df0b61d3b5a 100 DACx->DACR |= DAC_BIAS_EN;
Michael J. Spencer 2:1df0b61d3b5a 101 }
Michael J. Spencer 2:1df0b61d3b5a 102 }
Michael J. Spencer 2:1df0b61d3b5a 103
Michael J. Spencer 2:1df0b61d3b5a 104 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 105 * @brief To enable the DMA operation and control DMA timer
Michael J. Spencer 2:1df0b61d3b5a 106 * @param[in] DACx pointer to LPC_DAC_TypeDef, should be: LPC_DAC
Michael J. Spencer 2:1df0b61d3b5a 107 * @param[in] DAC_ConverterConfigStruct pointer to DAC_CONVERTER_CFG_Type
Michael J. Spencer 2:1df0b61d3b5a 108 * - DBLBUF_ENA : enable/disable DACR double buffering feature
Michael J. Spencer 2:1df0b61d3b5a 109 * - CNT_ENA : enable/disable timer out counter
Michael J. Spencer 2:1df0b61d3b5a 110 * - DMA_ENA : enable/disable DMA access
Michael J. Spencer 2:1df0b61d3b5a 111 * @return None
Michael J. Spencer 2:1df0b61d3b5a 112 ***********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 113 void DAC_ConfigDAConverterControl (LPC_DAC_TypeDef *DACx,DAC_CONVERTER_CFG_Type *DAC_ConverterConfigStruct)
Michael J. Spencer 2:1df0b61d3b5a 114 {
Michael J. Spencer 2:1df0b61d3b5a 115 CHECK_PARAM(PARAM_DACx(DACx));
Michael J. Spencer 2:1df0b61d3b5a 116 DACx->DACCTRL &= ~DAC_DACCTRL_MASK;
Michael J. Spencer 2:1df0b61d3b5a 117 if (DAC_ConverterConfigStruct->DBLBUF_ENA)
Michael J. Spencer 2:1df0b61d3b5a 118 DACx->DACCTRL |= DAC_DBLBUF_ENA;
Michael J. Spencer 2:1df0b61d3b5a 119 if (DAC_ConverterConfigStruct->CNT_ENA)
Michael J. Spencer 2:1df0b61d3b5a 120 DACx->DACCTRL |= DAC_CNT_ENA;
Michael J. Spencer 2:1df0b61d3b5a 121 if (DAC_ConverterConfigStruct->DMA_ENA)
Michael J. Spencer 2:1df0b61d3b5a 122 DACx->DACCTRL |= DAC_DMA_ENA;
Michael J. Spencer 2:1df0b61d3b5a 123 }
Michael J. Spencer 2:1df0b61d3b5a 124
Michael J. Spencer 2:1df0b61d3b5a 125 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 126 * @brief Set reload value for interrupt/DMA counter
Michael J. Spencer 2:1df0b61d3b5a 127 * @param[in] DACx pointer to LPC_DAC_TypeDef, should be: LPC_DAC
Michael J. Spencer 2:1df0b61d3b5a 128 * @param[in] time_out time out to reload for interrupt/DMA counter
Michael J. Spencer 2:1df0b61d3b5a 129 * @return None
Michael J. Spencer 2:1df0b61d3b5a 130 ***********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 131 void DAC_SetDMATimeOut(LPC_DAC_TypeDef *DACx, uint32_t time_out)
Michael J. Spencer 2:1df0b61d3b5a 132 {
Michael J. Spencer 2:1df0b61d3b5a 133 CHECK_PARAM(PARAM_DACx(DACx));
Michael J. Spencer 2:1df0b61d3b5a 134 DACx->DACCNTVAL = DAC_CCNT_VALUE(time_out);
Michael J. Spencer 2:1df0b61d3b5a 135 }
Michael J. Spencer 2:1df0b61d3b5a 136
Michael J. Spencer 2:1df0b61d3b5a 137 /**
Michael J. Spencer 2:1df0b61d3b5a 138 * @}
Michael J. Spencer 2:1df0b61d3b5a 139 */
Michael J. Spencer 2:1df0b61d3b5a 140
Michael J. Spencer 2:1df0b61d3b5a 141 #endif /* _DAC */
Michael J. Spencer 2:1df0b61d3b5a 142
Michael J. Spencer 2:1df0b61d3b5a 143 /**
Michael J. Spencer 2:1df0b61d3b5a 144 * @}
Michael J. Spencer 2:1df0b61d3b5a 145 */
Michael J. Spencer 2:1df0b61d3b5a 146
Michael J. Spencer 2:1df0b61d3b5a 147 /* --------------------------------- End Of File ------------------------------ */
Michael J. Spencer 2:1df0b61d3b5a 148 #endif /* __LPC17XX__ */