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>© 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****/