STM8L15x Standard Peripherals Drivers: stm8l15x_dac.h Source File

STM8L15x/16x Standard Peripherals Drivers

STM8L15x Standard Peripherals Drivers

stm8l15x_dac.h

Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm8l15x_dac.h
00004   * @author  MCD Application Team
00005   * @version V1.5.0
00006   * @date    13-May-2011
00007   * @brief   This file contains all the functions prototypes for the DAC firmware
00008   *          library.
00009   ******************************************************************************
00010   * @attention
00011   *
00012   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
00013   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
00014   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
00015   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
00016   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
00017   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
00018   *
00019   * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
00020   ******************************************************************************  
00021   */
00022 
00023 /* Define to prevent recursive inclusion -------------------------------------*/
00024 #ifndef __STM8L15x_DAC_H
00025 #define __STM8L15x_DAC_H
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm8l15x.h"
00029 
00030 /** @addtogroup STM8L15x_StdPeriph_Driver
00031   * @{
00032   */
00033 
00034 /** @addtogroup DAC
00035   * @{
00036   */
00037   
00038 /* Exported types ------------------------------------------------------------*/
00039 
00040 /** @defgroup DAC_Exported_types
00041   * @{
00042   */
00043   
00044 /** @defgroup DAC_trigger_selection 
00045   * @{
00046   */
00047 typedef enum
00048 {
00049   DAC_Trigger_None     = ((uint8_t)0x30), /*!< DAC trigger None  */
00050   DAC_Trigger_T4_TRGO  = ((uint8_t)0x00), /*!< DAC trigger TIM4 TRGO  */
00051   DAC_Trigger_T5_TRGO  = ((uint8_t)0x08), /*!< DAC trigger TIM5 TRGO  */
00052   DAC_Trigger_Ext      = ((uint8_t)0x10), /*!< DAC trigger External Trigger (PE4) */
00053   DAC_Trigger_Software = ((uint8_t)0x38)  /*!< DAC trigger software  */
00054 }DAC_Trigger_TypeDef;
00055 
00056 #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_Trigger_None) || \
00057                                  ((TRIGGER) == DAC_Trigger_T4_TRGO) || \
00058                                  ((TRIGGER) == DAC_Trigger_T5_TRGO) || \
00059                                  ((TRIGGER) == DAC_Trigger_Ext) || \
00060                                  ((TRIGGER) == DAC_Trigger_Software))
00061 /**
00062   * @}
00063   */
00064 
00065 /** @defgroup DAC_data_alignment 
00066   * @{
00067   */
00068 typedef enum
00069 {
00070   DAC_Align_12b_R = ((uint8_t)0x00), /*!< DAC alignment  Right 12bit */
00071   DAC_Align_12b_L = ((uint8_t)0x04), /*!< DAC alignment  Left 12bit */
00072   DAC_Align_8b_R  = ((uint8_t)0x08)  /*!< DAC alignment  Right 8bit */
00073 }DAC_Align_TypeDef;
00074 
00075 #define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_Align_12b_R) || \
00076                              ((ALIGN) == DAC_Align_12b_L) || \
00077                              ((ALIGN) == DAC_Align_8b_R))
00078 /**
00079   * @}
00080   */
00081   
00082 /** @defgroup DAC_Channel_selection 
00083   * @{
00084   */
00085 typedef enum
00086 {
00087   DAC_Channel_1 = ((uint8_t)0x00), /*!< DAC Channel 1 selection  */
00088   DAC_Channel_2 = ((uint8_t)0x01)  /*!< DAC Channel 2 selection  */
00089 }DAC_Channel_TypeDef;
00090 
00091 #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_Channel_1) || \
00092                                  ((CHANNEL) == DAC_Channel_2))
00093                                  
00094 /**
00095   * @}
00096   */
00097   
00098 /** @defgroup DAC_wave_generation 
00099   * @{
00100   */
00101 
00102 typedef enum
00103 {
00104   DAC_Wave_Noise    = ((uint8_t)0x40), /*!< Noise Wave Generation  */
00105   DAC_Wave_Triangle = ((uint8_t)0x80)  /*!< Triangle Wave Generation */
00106 }DAC_Wave_TypeDef;
00107 
00108 #define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_Wave_Noise) || \
00109                            ((WAVE) == DAC_Wave_Triangle))
00110 /**
00111   * @}
00112   */
00113   
00114 /** @defgroup DAC_output_buffer 
00115   * @{
00116   */
00117 typedef enum
00118 {
00119   DAC_OutputBuffer_Enable  = ((uint8_t)0x00), /*!< DAC output buffer Enabled  */
00120   DAC_OutputBuffer_Disable = ((uint8_t)0x02)  /*!< DAC output buffer Disabled  */
00121 }DAC_OutputBuffer_TypeDef;
00122 
00123 #define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OutputBuffer_Enable) || \
00124                                            ((STATE) == DAC_OutputBuffer_Disable))
00125 /**
00126   * @}
00127   */
00128   
00129 /** @defgroup DAC_interrupts_definition 
00130   * @{
00131   */
00132 typedef enum
00133 {
00134   DAC_IT_DMAUDR = ((uint8_t)0x20) /*!< DMA Underrun Interrupt */
00135 }DAC_IT_TypeDef;
00136 
00137 #define IS_DAC_IT(IT) (((IT) == DAC_IT_DMAUDR))
00138 /**
00139   * @}
00140   */
00141   
00142 /** @defgroup DAC_flags_definition 
00143   * @{
00144   */ 
00145 typedef enum
00146 {
00147   DAC_FLAG_DMAUDR = ((uint8_t)0x01) /*!< DMA Underrun flag  */
00148 }DAC_FLAG_TypeDef;
00149 
00150 #define IS_DAC_GET_FLAG(FLAG) (((FLAG) == DAC_FLAG_DMAUDR))
00151 #define IS_DAC_FLAG(FLAG) (((FLAG) == DAC_FLAG_DMAUDR))
00152 
00153 /**
00154   * @}
00155   */
00156   
00157 /** @defgroup DAC_lfsrunmask
00158   * @{
00159   */
00160   
00161 typedef enum
00162 {
00163   DAC_LFSRUnmask_Bit0       =  ((uint8_t)0x00), /*!<  Noise LFSR Unmask 1 LSB */
00164   DAC_LFSRUnmask_Bits1_0    =  ((uint8_t)0x01), /*!<  Noise LFSR Unmask 2 LSB */
00165   DAC_LFSRUnmask_Bits2_0    =  ((uint8_t)0x02), /*!<  Noise LFSR Unmask 3 LSB */
00166   DAC_LFSRUnmask_Bits3_0    =  ((uint8_t)0x03), /*!<  Noise LFSR Unmask 4 LSB */
00167   DAC_LFSRUnmask_Bits4_0    =  ((uint8_t)0x04), /*!<  Noise LFSR Unmask 5 LSB */
00168   DAC_LFSRUnmask_Bits5_0    =  ((uint8_t)0x05), /*!<  Noise LFSR Unmask 6 LSB */
00169   DAC_LFSRUnmask_Bits6_0    =  ((uint8_t)0x06), /*!<  Noise LFSR Unmask 7 LSB */
00170   DAC_LFSRUnmask_Bits7_0    =  ((uint8_t)0x07), /*!<  Noise LFSR Unmask 8 LSB */
00171   DAC_LFSRUnmask_Bits8_0    =  ((uint8_t)0x08), /*!<  Noise LFSR Unmask 9 LSB */
00172   DAC_LFSRUnmask_Bits9_0    =  ((uint8_t)0x09), /*!<  Noise LFSR Unmask 10 LSB */
00173   DAC_LFSRUnmask_Bits10_0   =  ((uint8_t)0x0A), /*!<  Noise LFSR Unmask 11 LSB */
00174   DAC_LFSRUnmask_Bits11_0   =  ((uint8_t)0x0B)  /*!<  Noise LFSR Unmask 12 LSB */
00175 }DAC_LFSRUnmask_TypeDef;
00176 
00177 #define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) ((VALUE) <= 0x0F)
00178 /**
00179   * @}
00180   */
00181   
00182 /** @defgroup DAC_triangleamplitude
00183   * @{
00184   */
00185 typedef enum
00186 {
00187   DAC_TriangleAmplitude_1     =  ((uint8_t)0x00), /*!<  Triangle Amplitude = Vref.(1/4096)*/
00188   DAC_TriangleAmplitude_3     =  ((uint8_t)0x01), /*!<  Triangle Amplitude = Vref.(3/4096)*/
00189   DAC_TriangleAmplitude_7     =  ((uint8_t)0x02), /*!<  Triangle Amplitude = Vref.(7/4096)*/
00190   DAC_TriangleAmplitude_15    =  ((uint8_t)0x03), /*!<  Triangle Amplitude = Vref.(15/4096)*/
00191   DAC_TriangleAmplitude_31    =  ((uint8_t)0x04), /*!<  Triangle Amplitude = Vref.(31/4096)*/
00192   DAC_TriangleAmplitude_63    =  ((uint8_t)0x05), /*!<  Triangle Amplitude = Vref.(63/4096)*/
00193   DAC_TriangleAmplitude_127   =  ((uint8_t)0x06), /*!<  Triangle Amplitude = Vref.(127/4096)*/
00194   DAC_TriangleAmplitude_255   =  ((uint8_t)0x07), /*!<  Triangle Amplitude = Vref.(255/4096)*/
00195   DAC_TriangleAmplitude_511   =  ((uint8_t)0x08), /*!<  Triangle Amplitude = Vref.(511/4096)*/
00196   DAC_TriangleAmplitude_1023  =  ((uint8_t)0x09), /*!<  Triangle Amplitude = Vref.(1023/4096)*/
00197   DAC_TriangleAmplitude_2047  =  ((uint8_t)0x0A), /*!<  Triangle Amplitude = Vref.(2047/4096)*/
00198   DAC_TriangleAmplitude_4095  =  ((uint8_t)0x0B)  /*!<  Triangle Amplitude = Vref.(4095/4096)*/
00199 }DAC_TriangleAmplitude_TypeDef;
00200 
00201 /**
00202   * @}
00203   */
00204   
00205 /**
00206   * @}
00207   */
00208 /* Exported constants --------------------------------------------------------*/
00209 /** @defgroup DAC_Exported_Constants
00210   * @{
00211   */
00212 
00213 /** @defgroup DAC_data 
00214   * @{
00215   */
00216 #define IS_DAC_DATA_08R(DATA) ((DATA) <= 0x00FF) 
00217 
00218 /**
00219   * @}
00220   */
00221 /** @defgroup DAC_Registers_Offset 
00222   * @{
00223   */  
00224 #define CR1_Offset         ((uint8_t)0x00)
00225 #define CR2_Offset         ((uint8_t)0x01)
00226 #define DCH1RDHRH_Offset   ((uint8_t)0x20)
00227 #define CH1RDHRH_Offset    ((uint8_t)0x08)
00228 #define CH2RDHRH_Offset    ((uint8_t)0x14)
00229 /**
00230   * @}
00231   */
00232 
00233 /** @defgroup DAC_legacy 
00234   * @{
00235   */
00236 #define DAC_TriangleWaveAmplitude  DAC_SetTriangleWaveAmplitude
00237 #define DAC_NoiseWaveLFSR  DAC_SetNoiseWaveLFSR 
00238 
00239 /**
00240   * @}
00241   */
00242      
00243 /**
00244   * @}
00245   */ 
00246 /* Exported macro ------------------------------------------------------------*/
00247 /* Exported functions ------------------------------------------------------- */ 
00248 
00249 /*  Function used to set the DAC configuration to the default reset state *****/  
00250 void DAC_DeInit(void);
00251 
00252 /*  DAC channels configuration: trigger, output buffer, data format functions */
00253 void DAC_Init(DAC_Channel_TypeDef DAC_Channel,
00254               DAC_Trigger_TypeDef DAC_Trigger,
00255               DAC_OutputBuffer_TypeDef DAC_OutputBuffer);
00256 void DAC_Cmd(DAC_Channel_TypeDef DAC_Channel, FunctionalState NewState);
00257 void DAC_SoftwareTriggerCmd(DAC_Channel_TypeDef DAC_Channel, FunctionalState NewState);
00258 void DAC_DualSoftwareTriggerCmd(FunctionalState NewState);
00259 void DAC_WaveGenerationCmd(DAC_Channel_TypeDef DAC_Channel, DAC_Wave_TypeDef DAC_Wave, FunctionalState NewState);
00260 void DAC_SetNoiseWaveLFSR(DAC_Channel_TypeDef DAC_Channel, DAC_LFSRUnmask_TypeDef DAC_LFSRUnmask);
00261 void DAC_SetTriangleWaveAmplitude(DAC_Channel_TypeDef DAC_Channel, DAC_TriangleAmplitude_TypeDef DAC_TriangleAmplitude);
00262 void DAC_SetChannel1Data(DAC_Align_TypeDef DAC_Align, uint16_t DAC_Data);
00263 void DAC_SetChannel2Data(DAC_Align_TypeDef DAC_Align, uint16_t DAC_Data);
00264 void DAC_SetDualChannelData(DAC_Align_TypeDef DAC_Align, uint16_t DAC_Data2, uint16_t DAC_Data1);
00265 uint16_t DAC_GetDataOutputValue(DAC_Channel_TypeDef DAC_Channel);
00266 
00267 /* DMA management function ***************************************************/                            
00268 void DAC_DMACmd(DAC_Channel_TypeDef DAC_Channel, FunctionalState NewState);
00269 
00270 /* Interrupts and flags management functions **********************************/
00271 void DAC_ITConfig(DAC_Channel_TypeDef DAC_Channel, DAC_IT_TypeDef DAC_IT, FunctionalState NewState);
00272 FlagStatus DAC_GetFlagStatus(DAC_Channel_TypeDef DAC_Channel, DAC_FLAG_TypeDef DAC_FLAG);
00273 void DAC_ClearFlag(DAC_Channel_TypeDef DAC_Channel, DAC_FLAG_TypeDef DAC_FLAG);
00274 ITStatus DAC_GetITStatus(DAC_Channel_TypeDef DAC_Channel, DAC_IT_TypeDef DAC_IT);
00275 void DAC_ClearITPendingBit(DAC_Channel_TypeDef DAC_Channel, DAC_IT_TypeDef DAC_IT);
00276 
00277 #endif /*__STM8L15x_DAC_H */
00278 
00279 /**
00280   * @}
00281   */
00282   
00283 /**
00284   * @}
00285   */
00286 
00287 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
STM8S Firmware Library: Overview

 

 

 

For complete documentation on STM8L15x 8-bit microcontrollers platform visit www.st.com