stm32g4xx_ll_dac.h 133 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676
  1. /**
  2. ******************************************************************************
  3. * @file stm32g4xx_ll_dac.h
  4. * @author MCD Application Team
  5. * @brief Header file of DAC LL module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) 2019 STMicroelectronics.
  10. * All rights reserved.
  11. *
  12. * This software is licensed under terms that can be found in the LICENSE file
  13. * in the root directory of this software component.
  14. * If no LICENSE file comes with this software, it is provided AS-IS.
  15. *
  16. ******************************************************************************
  17. */
  18. /* Define to prevent recursive inclusion -------------------------------------*/
  19. #ifndef STM32G4xx_LL_DAC_H
  20. #define STM32G4xx_LL_DAC_H
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /* Includes ------------------------------------------------------------------*/
  25. #include "stm32g4xx.h"
  26. /** @addtogroup STM32G4xx_LL_Driver
  27. * @{
  28. */
  29. #if defined(DAC1) || defined(DAC2) || defined(DAC3) ||defined (DAC4)
  30. /** @defgroup DAC_LL DAC
  31. * @{
  32. */
  33. /* Private types -------------------------------------------------------------*/
  34. /* Private variables ---------------------------------------------------------*/
  35. /* Private constants ---------------------------------------------------------*/
  36. /** @defgroup DAC_LL_Private_Constants DAC Private Constants
  37. * @{
  38. */
  39. /* Internal masks for DAC channels definition */
  40. /* To select into literal LL_DAC_CHANNEL_x the relevant bits for: */
  41. /* - channel bits position into registers CR, MCR, CCR, SHHR, SHRR, STMODR */
  42. /* - channel bits position into register SWTRIG */
  43. /* - channel bits position into register SWTRIGB */
  44. /* - channel register offset of data holding register DHRx */
  45. /* - channel register offset of data output register DORx */
  46. /* - channel register offset of sample-and-hold sample time register SHSRx */
  47. /* - channel register offset of sawtooth register STRx */
  48. #define DAC_CR_CH1_BITOFFSET 0UL /* Position of channel bits into registers
  49. CR, MCR, CCR, SHHR, SHRR, STMODR of channel 1 */
  50. #define DAC_CR_CH2_BITOFFSET 16UL /* Position of channel bits into registers
  51. CR, MCR, CCR, SHHR, SHRR, STMODR of channel 2 */
  52. #define DAC_CR_CHX_BITOFFSET_MASK (DAC_CR_CH1_BITOFFSET | DAC_CR_CH2_BITOFFSET)
  53. #define DAC_SWTR_CH1 (DAC_SWTRIGR_SWTRIG1) /* Channel bit into register SWTRIGR of channel 1. */
  54. #define DAC_SWTR_CH2 (DAC_SWTRIGR_SWTRIG2) /* Channel bit into register SWTRIGR of channel 2. */
  55. #define DAC_SWTR_CHX_MASK (DAC_SWTR_CH1 | DAC_SWTR_CH2)
  56. #define DAC_SWTRB_CH1 (DAC_SWTRIGR_SWTRIGB1) /* Channel bit into register SWTRIGRB of channel 1.*/
  57. #define DAC_SWTRB_CH2 (DAC_SWTRIGR_SWTRIGB2) /* Channel bit into register SWTRIGR of channel 2.*/
  58. #define DAC_SWTRB_CHX_MASK (DAC_SWTRB_CH1 | DAC_SWTRB_CH2)
  59. #define DAC_REG_DHR12R1_REGOFFSET 0x00000000UL /* Register DHR12Rx channel 1 taken as reference */
  60. #define DAC_REG_DHR12L1_REGOFFSET 0x00100000UL /* Register offset of DHR12Lx channel 1 versus
  61. DHR12Rx channel 1 (shifted left of 20 bits) */
  62. #define DAC_REG_DHR8R1_REGOFFSET 0x02000000UL /* Register offset of DHR8Rx channel 1 versus
  63. DHR12Rx channel 1 (shifted left of 24 bits) */
  64. #define DAC_REG_DHR12R2_REGOFFSET 0x30000000UL /* Register offset of DHR12Rx channel 2 versus
  65. DHR12Rx channel 1 (shifted left of 28 bits) */
  66. #define DAC_REG_DHR12L2_REGOFFSET 0x00400000UL /* Register offset of DHR12Lx channel 2 versus
  67. DHR12Rx channel 1 (shifted left of 20 bits) */
  68. #define DAC_REG_DHR8R2_REGOFFSET 0x05000000UL /* Register offset of DHR8Rx channel 2 versus
  69. DHR12Rx channel 1 (shifted left of 24 bits) */
  70. #define DAC_REG_DHR12RX_REGOFFSET_MASK 0xF0000000UL
  71. #define DAC_REG_DHR12LX_REGOFFSET_MASK 0x00F00000UL
  72. #define DAC_REG_DHR8RX_REGOFFSET_MASK 0x0F000000UL
  73. #define DAC_REG_DHRX_REGOFFSET_MASK (DAC_REG_DHR12RX_REGOFFSET_MASK\
  74. | DAC_REG_DHR12LX_REGOFFSET_MASK | DAC_REG_DHR8RX_REGOFFSET_MASK)
  75. #define DAC_REG_DOR1_REGOFFSET 0x00000000UL /* Register DORx channel 1 taken as reference */
  76. #define DAC_REG_DOR2_REGOFFSET 0x00000020UL /* Register offset of DORx channel 1 versus
  77. DORx channel 2 (shifted left of 5 bits) */
  78. #define DAC_REG_DORX_REGOFFSET_MASK (DAC_REG_DOR1_REGOFFSET | DAC_REG_DOR2_REGOFFSET)
  79. #define DAC_REG_SHSR1_REGOFFSET 0x00000000UL /* Register SHSRx channel 1 taken as reference */
  80. #define DAC_REG_SHSR2_REGOFFSET 0x00000040UL /* Register offset of SHSRx channel 1 versus
  81. SHSRx channel 2 (shifted left of 6 bits) */
  82. #define DAC_REG_SHSRX_REGOFFSET_MASK (DAC_REG_SHSR1_REGOFFSET | DAC_REG_SHSR2_REGOFFSET)
  83. #define DAC_REG_STR1_REGOFFSET 0x00000000UL /* Register STRx channel 1 taken as reference */
  84. #define DAC_REG_STR2_REGOFFSET 0x00000080UL /* Register offset of STRx channel 1 versus
  85. STRx channel 2 (shifted left of 7 bits) */
  86. #define DAC_REG_STRX_REGOFFSET_MASK (DAC_REG_STR1_REGOFFSET | DAC_REG_STR2_REGOFFSET)
  87. #define DAC_REG_DHR_REGOFFSET_MASK_POSBIT0 0x0000000FUL /* Mask of data hold registers offset (DHR12Rx,
  88. DHR12Lx, DHR8Rx, ...) when shifted to position 0 */
  89. #define DAC_REG_DORX_REGOFFSET_MASK_POSBIT0 0x00000001UL /* Mask of DORx registers offset when shifted
  90. to position 0 */
  91. #define DAC_REG_SHSRX_REGOFFSET_MASK_POSBIT0 0x00000001UL /* Mask of SHSRx registers offset when shifted
  92. to position 0 */
  93. #define DAC_REG_STRX_REGOFFSET_MASK_POSBIT0 0x00000001UL /* Mask of STRx registers offset when shifted
  94. to position 0 */
  95. #define DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS 28UL /* Position of bits register offset of DHR12Rx
  96. channel 1 or 2 versus DHR12Rx channel 1
  97. (shifted left of 28 bits) */
  98. #define DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS 20UL /* Position of bits register offset of DHR12Lx
  99. channel 1 or 2 versus DHR12Rx channel 1
  100. (shifted left of 20 bits) */
  101. #define DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS 24UL /* Position of bits register offset of DHR8Rx
  102. channel 1 or 2 versus DHR12Rx channel 1
  103. (shifted left of 24 bits) */
  104. #define DAC_REG_DORX_REGOFFSET_BITOFFSET_POS 5UL /* Position of bits register offset of DORx
  105. channel 1 or 2 versus DORx channel 1
  106. (shifted left of 5 bits) */
  107. #define DAC_REG_SHSRX_REGOFFSET_BITOFFSET_POS 6UL /* Position of bits register offset of SHSRx
  108. channel 1 or 2 versus SHSRx channel 1
  109. (shifted left of 6 bits) */
  110. #define DAC_REG_STRX_REGOFFSET_BITOFFSET_POS 7UL /* Position of bits register offset of STRx
  111. channel 1 or 2 versus STRx channel 1
  112. (shifted left of 7 bits) */
  113. /* DAC registers bits positions */
  114. #define DAC_DHR12RD_DACC2DHR_BITOFFSET_POS DAC_DHR12RD_DACC2DHR_Pos
  115. #define DAC_DHR12LD_DACC2DHR_BITOFFSET_POS DAC_DHR12LD_DACC2DHR_Pos
  116. #define DAC_DHR8RD_DACC2DHR_BITOFFSET_POS DAC_DHR8RD_DACC2DHR_Pos
  117. /* Miscellaneous data */
  118. #define DAC_DIGITAL_SCALE_12BITS 4095UL /* Full-scale digital value with a resolution of 12
  119. bits (voltage range determined by analog voltage
  120. references Vref+ and Vref-, refer to reference manual) */
  121. /**
  122. * @}
  123. */
  124. /* Private macros ------------------------------------------------------------*/
  125. /** @defgroup DAC_LL_Private_Macros DAC Private Macros
  126. * @{
  127. */
  128. /**
  129. * @brief Driver macro reserved for internal use: set a pointer to
  130. * a register from a register basis from which an offset
  131. * is applied.
  132. * @param __REG__ Register basis from which the offset is applied.
  133. * @param __REG_OFFFSET__ Offset to be applied (unit: number of registers).
  134. * @retval Pointer to register address
  135. */
  136. #define __DAC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \
  137. ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2UL))))
  138. /**
  139. * @}
  140. */
  141. /* Exported types ------------------------------------------------------------*/
  142. #if defined(USE_FULL_LL_DRIVER)
  143. /** @defgroup DAC_LL_ES_INIT DAC Exported Init structure
  144. * @{
  145. */
  146. /**
  147. * @brief Structure definition of some features of DAC instance.
  148. */
  149. typedef struct
  150. {
  151. uint32_t TriggerSource; /*!< Set the conversion trigger source for the selected DAC channel:
  152. internal (SW start) or from external peripheral
  153. (timer event, external interrupt line).
  154. This parameter can be a value of @ref DAC_LL_EC_TRIGGER_SOURCE
  155. This feature can be modified afterwards using unitary
  156. function @ref LL_DAC_SetTriggerSource().
  157. @note If waveform automatic generation mode is set to sawtooth,
  158. this parameter is used as sawtooth RESET trigger */
  159. uint32_t TriggerSource2; /*!< Set the conversion secondary trigger source for the selected DAC channel:
  160. internal (SW start) or from external peripheral
  161. (timer event, external interrupt line).
  162. This parameter can be a value of @ref DAC_LL_EC_TRIGGER_SOURCE
  163. This feature can be modified afterwards using unitary
  164. function @ref LL_DAC_SetTriggerSource2().
  165. @note If waveform automatic generation mode is set to sawtooth,
  166. this parameter is used as sawtooth step trigger */
  167. uint32_t WaveAutoGeneration; /*!< Set the waveform automatic generation mode for the selected DAC channel.
  168. This parameter can be a value of @ref DAC_LL_EC_WAVE_AUTO_GENERATION_MODE
  169. This feature can be modified afterwards using unitary
  170. function @ref LL_DAC_SetWaveAutoGeneration(). */
  171. uint32_t WaveAutoGenerationConfig; /*!< Set the waveform automatic generation mode for the selected DAC channel.
  172. If waveform automatic generation mode is set to noise, this parameter
  173. can be a value of @ref DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS
  174. If waveform automatic generation mode is set to triangle,
  175. this parameter can be a value of @ref DAC_LL_EC_WAVE_TRIANGLE_AMPLITUDE
  176. If waveform automatic generation mode is set to sawtooth, this parameter
  177. host the sawtooth configuration: polarity, reset data, increment data.
  178. Use __LL_DAC_FORMAT_SAWTOOTHWAVECONFIG macro to set this parameter value.
  179. @note If waveform automatic generation mode is disabled,
  180. this parameter is discarded.
  181. This feature can be modified afterwards using unitary
  182. function @ref LL_DAC_SetWaveNoiseLFSR(),
  183. @ref LL_DAC_SetWaveTriangleAmplitude(),
  184. @ref LL_DAC_SetWaveSawtoothPolarity(),
  185. @ref LL_DAC_SetWaveSawtoothResetData()
  186. or @ref LL_DAC_SetWaveSawtoothStepData(),
  187. depending on the wave automatic generation selected. */
  188. uint32_t OutputBuffer; /*!< Set the output buffer for the selected DAC channel.
  189. This parameter can be a value of @ref DAC_LL_EC_OUTPUT_BUFFER
  190. This feature can be modified afterwards using unitary
  191. function @ref LL_DAC_SetOutputBuffer(). */
  192. uint32_t OutputConnection; /*!< Set the output connection for the selected DAC channel.
  193. This parameter can be a value of @ref DAC_LL_EC_OUTPUT_CONNECTION
  194. This feature can be modified afterwards using unitary
  195. function @ref LL_DAC_SetOutputConnection(). */
  196. uint32_t OutputMode; /*!< Set the output mode normal or sample-and-hold for the selected DAC
  197. channel. This parameter can be a value of @ref DAC_LL_EC_OUTPUT_MODE
  198. This feature can be modified afterwards using unitary
  199. function @ref LL_DAC_SetOutputMode(). */
  200. } LL_DAC_InitTypeDef;
  201. /**
  202. * @}
  203. */
  204. #endif /* USE_FULL_LL_DRIVER */
  205. /* Exported constants --------------------------------------------------------*/
  206. /** @defgroup DAC_LL_Exported_Constants DAC Exported Constants
  207. * @{
  208. */
  209. /** @defgroup DAC_LL_EC_GET_FLAG DAC flags
  210. * @brief Flags defines which can be used with LL_DAC_ReadReg function
  211. * @{
  212. */
  213. /* DAC channel 1 flags */
  214. #define LL_DAC_FLAG_DMAUDR1 (DAC_SR_DMAUDR1) /*!< DAC channel 1 flag DMA underrun */
  215. #define LL_DAC_FLAG_CAL1 (DAC_SR_CAL_FLAG1) /*!< DAC channel 1 flag offset calibration status */
  216. #define LL_DAC_FLAG_BWST1 (DAC_SR_BWST1) /*!< DAC channel 1 flag busy writing sample time */
  217. #define LL_DAC_FLAG_DAC1RDY (DAC_SR_DAC1RDY) /*!< DAC channel 1 flag ready */
  218. #define LL_DAC_FLAG_DORSTAT1 (DAC_SR_DORSTAT1) /*!< DAC channel 1 flag output register */
  219. /* DAC channel 2 flags */
  220. #define LL_DAC_FLAG_DMAUDR2 (DAC_SR_DMAUDR2) /*!< DAC channel 2 flag DMA underrun */
  221. #define LL_DAC_FLAG_CAL2 (DAC_SR_CAL_FLAG2) /*!< DAC channel 2 flag offset calibration status */
  222. #define LL_DAC_FLAG_BWST2 (DAC_SR_BWST2) /*!< DAC channel 2 flag busy writing sample time */
  223. #define LL_DAC_FLAG_DAC2RDY (DAC_SR_DAC2RDY) /*!< DAC channel 2 flag ready */
  224. #define LL_DAC_FLAG_DORSTAT2 (DAC_SR_DORSTAT2) /*!< DAC channel 2 flag output register */
  225. /**
  226. * @}
  227. */
  228. /** @defgroup DAC_LL_EC_IT DAC interruptions
  229. * @brief IT defines which can be used with LL_DAC_ReadReg and LL_DAC_WriteReg functions
  230. * @{
  231. */
  232. #define LL_DAC_IT_DMAUDRIE1 (DAC_CR_DMAUDRIE1) /*!< DAC channel 1 interruption DMA underrun */
  233. #define LL_DAC_IT_DMAUDRIE2 (DAC_CR_DMAUDRIE2) /*!< DAC channel 2 interruption DMA underrun */
  234. /**
  235. * @}
  236. */
  237. /** @defgroup DAC_LL_EC_CHANNEL DAC channels
  238. * @{
  239. */
  240. #define LL_DAC_CHANNEL_1 (DAC_REG_STR1_REGOFFSET | DAC_REG_SHSR1_REGOFFSET | DAC_REG_DOR1_REGOFFSET | DAC_REG_DHR12R1_REGOFFSET | DAC_REG_DHR12L1_REGOFFSET | DAC_REG_DHR8R1_REGOFFSET | DAC_CR_CH1_BITOFFSET | DAC_SWTR_CH1 | DAC_SWTRB_CH1) /*!< DAC channel 1 */
  241. #define LL_DAC_CHANNEL_2 (DAC_REG_STR2_REGOFFSET | DAC_REG_SHSR2_REGOFFSET | DAC_REG_DOR2_REGOFFSET | DAC_REG_DHR12R2_REGOFFSET | DAC_REG_DHR12L2_REGOFFSET | DAC_REG_DHR8R2_REGOFFSET | DAC_CR_CH2_BITOFFSET | DAC_SWTR_CH2 | DAC_SWTRB_CH2) /*!< DAC channel 2 */
  242. /**
  243. * @}
  244. */
  245. /** @defgroup DAC_LL_EC_HIGH_FREQUENCY_MODE DAC high frequency interface mode
  246. * @brief High frequency interface mode defines that can be used
  247. * with LL_DAC_SetHighFrequencyMode and LL_DAC_GetHighFrequencyMode
  248. * @{
  249. */
  250. #define LL_DAC_HIGH_FREQ_MODE_DISABLE 0x00000000UL /*!< High frequency interface mode disabled */
  251. #define LL_DAC_HIGH_FREQ_MODE_ABOVE_80MHZ (DAC_MCR_HFSEL_0) /*!< High frequency interface mode compatible to AHB>80MHz enabled */
  252. #define LL_DAC_HIGH_FREQ_MODE_ABOVE_160MHZ (DAC_MCR_HFSEL_1) /*!< High frequency interface mode compatible to AHB>160MHz enabled */
  253. /**
  254. * @}
  255. */
  256. /** @defgroup DAC_LL_EC_OPERATING_MODE DAC operating mode
  257. * @{
  258. */
  259. #define LL_DAC_MODE_NORMAL_OPERATION 0x00000000UL /*!< DAC channel in mode normal operation */
  260. #define LL_DAC_MODE_CALIBRATION (DAC_CR_CEN1) /*!< DAC channel in mode calibration */
  261. /**
  262. * @}
  263. */
  264. /** @defgroup DAC_LL_EC_TRIGGER_SOURCE DAC trigger source
  265. * @{
  266. */
  267. #define LL_DAC_TRIG_SOFTWARE 0x00000000UL /*!< DAC (all) channel conversion trigger internal (SW start) */
  268. #define LL_DAC_TRIG_EXT_TIM1_TRGO ( DAC_CR_TSEL1_0) /*!< DAC3 channel conversion trigger from external peripheral: TIM1 TRGO. */
  269. #define LL_DAC_TRIG_EXT_TIM8_TRGO ( DAC_CR_TSEL1_0) /*!< DAC1/2/4 channel conversion trigger from external peripheral: TIM8 TRGO. Refer to device datasheet for DACx instance availability. */
  270. #define LL_DAC_TRIG_EXT_TIM7_TRGO ( DAC_CR_TSEL1_1 ) /*!< DAC (all) channel conversion trigger from external peripheral: TIM7 TRGO. */
  271. #define LL_DAC_TRIG_EXT_TIM15_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC (all) channel conversion trigger from external peripheral: TIM15 TRGO. */
  272. #define LL_DAC_TRIG_EXT_TIM2_TRGO ( DAC_CR_TSEL1_2 ) /*!< DAC (all) channel conversion trigger from external peripheral: TIM2 TRGO. */
  273. #define LL_DAC_TRIG_EXT_TIM4_TRGO ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0) /*!< DAC (all) channel conversion trigger from external peripheral: TIM4 TRGO. */
  274. #define LL_DAC_TRIG_EXT_EXTI_LINE9 ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 ) /*!< DAC (all) channel conversion trigger from external peripheral: external interrupt line 9. Note: only to be used as update or reset (sawtooth generation) trigger */
  275. #define LL_DAC_TRIG_EXT_EXTI_LINE10 ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 ) /*!< DAC (all) channel conversion trigger from external peripheral: external interrupt line 10. Note: only to be used as increment (sawtooth generation) trigger */
  276. #define LL_DAC_TRIG_EXT_TIM6_TRGO ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC (all) channel conversion trigger from external peripheral: TIM6 TRGO. */
  277. #define LL_DAC_TRIG_EXT_TIM3_TRGO (DAC_CR_TSEL1_3 ) /*!< DAC (all) channel conversion trigger from external peripheral: TIM3 TRGO. */
  278. #define LL_DAC_TRIG_EXT_HRTIM_STEP_TRG1 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_0) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC STEP TRIG1 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  279. #define LL_DAC_TRIG_EXT_HRTIM_RST_TRG1 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_0) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC RESET TRIG1 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  280. #define LL_DAC_TRIG_EXT_HRTIM_STEP_TRG2 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_1 ) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC STEP TRIG2 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  281. #define LL_DAC_TRIG_EXT_HRTIM_RST_TRG2 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_1 ) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC RESET TRIG2 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  282. #define LL_DAC_TRIG_EXT_HRTIM_STEP_TRG3 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC STEP TRIG3 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  283. #define LL_DAC_TRIG_EXT_HRTIM_RST_TRG3 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC RESET TRIG3 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  284. #define LL_DAC_TRIG_EXT_HRTIM_STEP_TRG4 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 ) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC STEP TRIG4 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  285. #define LL_DAC_TRIG_EXT_HRTIM_RST_TRG4 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 ) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC RESET TRIG4 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  286. #define LL_DAC_TRIG_EXT_HRTIM_STEP_TRG5 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC STEP TRIG5 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  287. #define LL_DAC_TRIG_EXT_HRTIM_RST_TRG5 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC RESET TRIG5 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  288. #define LL_DAC_TRIG_EXT_HRTIM_STEP_TRG6 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 ) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC STEP TRIG6 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  289. #define LL_DAC_TRIG_EXT_HRTIM_RST_TRG6 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 ) /*!< DAC (all) channel conversion trigger from external peripheral: HRTIM DAC RESET TRIG6 (only available for sawtooth wave generation). On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  290. #define LL_DAC_TRIG_EXT_HRTIM_TRGO1 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC1&4 channel conversion trigger from external peripheral: HRTIM1 DACTRG1. Note: only to be used as update or reset (sawtooth generation) trigger. Refer to device datasheet for DACx instance availability. On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  291. #define LL_DAC_TRIG_EXT_HRTIM_TRGO2 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC2 channel conversion trigger from external peripheral: HRTIM1 DACTRG2. Note: only to be used as update or reset (sawtooth generation) trigger. On this STM32 series, parameter only available if HRTIM feature is supported and DAC2 instance present (refer to device datasheet for supported features list and DAC2 instance availability) */
  292. #define LL_DAC_TRIG_EXT_HRTIM_TRGO3 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC3 channel conversion trigger from external peripheral: HRTIM1 DACTRG3. Note: only to be used as update or reset (sawtooth generation) trigger. On this STM32 series, parameter only available if HRTIM feature is supported (refer to device datasheet for supported features list) */
  293. /**
  294. * @}
  295. */
  296. /** @defgroup DAC_LL_EC_WAVE_AUTO_GENERATION_MODE DAC waveform automatic generation mode
  297. * @{
  298. */
  299. #define LL_DAC_WAVE_AUTO_GENERATION_NONE 0x00000000UL /*!< DAC channel wave auto generation mode disabled. */
  300. #define LL_DAC_WAVE_AUTO_GENERATION_NOISE ( DAC_CR_WAVE1_0) /*!< DAC channel wave auto generation mode enabled, set generated noise waveform. */
  301. #define LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE (DAC_CR_WAVE1_1 ) /*!< DAC channel wave auto generation mode enabled, set generated triangle waveform. */
  302. #define LL_DAC_WAVE_AUTO_GENERATION_SAWTOOTH (DAC_CR_WAVE1_1|DAC_CR_WAVE1_0) /*!< DAC channel wave auto generation mode enabled, set generated sawtooth waveform. */
  303. /**
  304. * @}
  305. */
  306. /** @defgroup DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS DAC wave generation - Noise LFSR unmask bits
  307. * @{
  308. */
  309. #define LL_DAC_NOISE_LFSR_UNMASK_BIT0 0x00000000UL /*!< Noise wave generation, unmask LFSR bit0, for the selected DAC channel */
  310. #define LL_DAC_NOISE_LFSR_UNMASK_BITS1_0 ( DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[1:0], for the selected DAC channel */
  311. #define LL_DAC_NOISE_LFSR_UNMASK_BITS2_0 ( DAC_CR_MAMP1_1 ) /*!< Noise wave generation, unmask LFSR bits[2:0], for the selected DAC channel */
  312. #define LL_DAC_NOISE_LFSR_UNMASK_BITS3_0 ( DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[3:0], for the selected DAC channel */
  313. #define LL_DAC_NOISE_LFSR_UNMASK_BITS4_0 ( DAC_CR_MAMP1_2 ) /*!< Noise wave generation, unmask LFSR bits[4:0], for the selected DAC channel */
  314. #define LL_DAC_NOISE_LFSR_UNMASK_BITS5_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[5:0], for the selected DAC channel */
  315. #define LL_DAC_NOISE_LFSR_UNMASK_BITS6_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 ) /*!< Noise wave generation, unmask LFSR bits[6:0], for the selected DAC channel */
  316. #define LL_DAC_NOISE_LFSR_UNMASK_BITS7_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[7:0], for the selected DAC channel */
  317. #define LL_DAC_NOISE_LFSR_UNMASK_BITS8_0 (DAC_CR_MAMP1_3 ) /*!< Noise wave generation, unmask LFSR bits[8:0], for the selected DAC channel */
  318. #define LL_DAC_NOISE_LFSR_UNMASK_BITS9_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[9:0], for the selected DAC channel */
  319. #define LL_DAC_NOISE_LFSR_UNMASK_BITS10_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 ) /*!< Noise wave generation, unmask LFSR bits[10:0], for the selected DAC channel */
  320. #define LL_DAC_NOISE_LFSR_UNMASK_BITS11_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[11:0], for the selected DAC channel */
  321. /**
  322. * @}
  323. */
  324. /** @defgroup DAC_LL_EC_WAVE_TRIANGLE_AMPLITUDE DAC wave generation - Triangle amplitude
  325. * @{
  326. */
  327. #define LL_DAC_TRIANGLE_AMPLITUDE_1 0x00000000UL /*!< Triangle wave generation, amplitude of 1 LSB of DAC output range, for the selected DAC channel */
  328. #define LL_DAC_TRIANGLE_AMPLITUDE_3 ( DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 3 LSB of DAC output range, for the selected DAC channel */
  329. #define LL_DAC_TRIANGLE_AMPLITUDE_7 ( DAC_CR_MAMP1_1 ) /*!< Triangle wave generation, amplitude of 7 LSB of DAC output range, for the selected DAC channel */
  330. #define LL_DAC_TRIANGLE_AMPLITUDE_15 ( DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 15 LSB of DAC output range, for the selected DAC channel */
  331. #define LL_DAC_TRIANGLE_AMPLITUDE_31 ( DAC_CR_MAMP1_2 ) /*!< Triangle wave generation, amplitude of 31 LSB of DAC output range, for the selected DAC channel */
  332. #define LL_DAC_TRIANGLE_AMPLITUDE_63 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 63 LSB of DAC output range, for the selected DAC channel */
  333. #define LL_DAC_TRIANGLE_AMPLITUDE_127 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 ) /*!< Triangle wave generation, amplitude of 127 LSB of DAC output range, for the selected DAC channel */
  334. #define LL_DAC_TRIANGLE_AMPLITUDE_255 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 255 LSB of DAC output range, for the selected DAC channel */
  335. #define LL_DAC_TRIANGLE_AMPLITUDE_511 (DAC_CR_MAMP1_3 ) /*!< Triangle wave generation, amplitude of 512 LSB of DAC output range, for the selected DAC channel */
  336. #define LL_DAC_TRIANGLE_AMPLITUDE_1023 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 1023 LSB of DAC output range, for the selected DAC channel */
  337. #define LL_DAC_TRIANGLE_AMPLITUDE_2047 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 ) /*!< Triangle wave generation, amplitude of 2047 LSB of DAC output range, for the selected DAC channel */
  338. #define LL_DAC_TRIANGLE_AMPLITUDE_4095 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 4095 LSB of DAC output range, for the selected DAC channel */
  339. /**
  340. * @}
  341. */
  342. /** @defgroup DAC_LL_EC_SAWTOOTH_POLARITY_MODE DAC wave generation - Sawtooth polarity mode
  343. * @{
  344. */
  345. #define LL_DAC_SAWTOOTH_POLARITY_DECREMENT 0x00000000UL /*!< Sawtooth wave generation, polarity is decrement */
  346. #define LL_DAC_SAWTOOTH_POLARITY_INCREMENT (DAC_STR1_STDIR1) /*!< Sawtooth wave generation, polarity is increment */
  347. /**
  348. * @}
  349. */
  350. /** @defgroup DAC_LL_EC_OUTPUT_MODE DAC channel output mode
  351. * @{
  352. */
  353. #define LL_DAC_OUTPUT_MODE_NORMAL 0x00000000UL /*!< The selected DAC channel output is on mode normal. */
  354. #define LL_DAC_OUTPUT_MODE_SAMPLE_AND_HOLD (DAC_MCR_MODE1_2) /*!< The selected DAC channel output is on mode sample-and-hold. Mode sample-and-hold requires an external capacitor, refer to description of function @ref LL_DAC_ConfigOutput() or @ref LL_DAC_SetOutputMode(). */
  355. /**
  356. * @}
  357. */
  358. /** @defgroup DAC_LL_EC_OUTPUT_BUFFER DAC channel output buffer
  359. * @{
  360. */
  361. #define LL_DAC_OUTPUT_BUFFER_ENABLE 0x00000000UL /*!< The selected DAC channel output is buffered: higher drive current capability, but also higher current consumption */
  362. #define LL_DAC_OUTPUT_BUFFER_DISABLE (DAC_MCR_MODE1_1) /*!< The selected DAC channel output is not buffered: lower drive current capability, but also lower current consumption */
  363. /**
  364. * @}
  365. */
  366. /** @defgroup DAC_LL_EC_OUTPUT_CONNECTION DAC channel output connection
  367. * @{
  368. */
  369. #define LL_DAC_OUTPUT_CONNECT_GPIO 0x00000000UL /*!< The selected DAC channel output is connected to external pin */
  370. #define LL_DAC_OUTPUT_CONNECT_INTERNAL (DAC_MCR_MODE1_0) /*!< The selected DAC channel output is connected to on-chip peripherals via internal paths. On this STM32 series, output connection depends on output mode (normal or sample and hold) and output buffer state. Refer to comments of function @ref LL_DAC_SetOutputConnection(). */
  371. /**
  372. * @}
  373. */
  374. /** @defgroup DAC_LL_EC_SIGNED_FORMAT DAC channel signed format
  375. * @{
  376. */
  377. #define LL_DAC_SIGNED_FORMAT_DISABLE 0x00000000UL /*!< The selected DAC channel data format is not signed */
  378. #define LL_DAC_SIGNED_FORMAT_ENABLE (DAC_MCR_SINFORMAT1) /*!< The selected DAC channel data format is signed */
  379. /**
  380. * @}
  381. */
  382. /** @defgroup DAC_LL_EC_RESOLUTION DAC channel output resolution
  383. * @{
  384. */
  385. #define LL_DAC_RESOLUTION_12B 0x00000000UL /*!< DAC channel resolution 12 bits */
  386. #define LL_DAC_RESOLUTION_8B 0x00000002UL /*!< DAC channel resolution 8 bits */
  387. /**
  388. * @}
  389. */
  390. /** @defgroup DAC_LL_EC_REGISTERS DAC registers compliant with specific purpose
  391. * @{
  392. */
  393. /* List of DAC registers intended to be used (most commonly) with */
  394. /* DMA transfer. */
  395. /* Refer to function @ref LL_DAC_DMA_GetRegAddr(). */
  396. #define LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS /*!< DAC channel data holding register 12 bits right aligned */
  397. #define LL_DAC_DMA_REG_DATA_12BITS_LEFT_ALIGNED DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS /*!< DAC channel data holding register 12 bits left aligned */
  398. #define LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS /*!< DAC channel data holding register 8 bits right aligned */
  399. /**
  400. * @}
  401. */
  402. /** @defgroup DAC_LL_EC_HW_DELAYS Definitions of DAC hardware constraints delays
  403. * @note Only DAC peripheral HW delays are defined in DAC LL driver driver,
  404. * not timeout values.
  405. * For details on delays values, refer to descriptions in source code
  406. * above each literal definition.
  407. * @{
  408. */
  409. /* Delay for DAC channel voltage settling time from DAC channel startup */
  410. /* (transition from disable to enable). */
  411. /* Note: DAC channel startup time depends on board application environment: */
  412. /* impedance connected to DAC channel output. */
  413. /* The delay below is specified under conditions: */
  414. /* - voltage maximum transition (lowest to highest value) */
  415. /* - until voltage reaches final value +-1LSB */
  416. /* - DAC channel output buffer enabled */
  417. /* - load impedance of 5kOhm (min), 50pF (max) */
  418. /* Literal set to maximum value (refer to device datasheet, */
  419. /* parameter "tWAKEUP"). */
  420. /* Unit: us */
  421. #define LL_DAC_DELAY_STARTUP_VOLTAGE_SETTLING_US 8UL /*!< Delay for DAC channel voltage settling time from DAC channel startup (transition from disable to enable) */
  422. /* Delay for DAC channel voltage settling time. */
  423. /* Note: DAC channel startup time depends on board application environment: */
  424. /* impedance connected to DAC channel output. */
  425. /* The delay below is specified under conditions: */
  426. /* - voltage maximum transition (lowest to highest value) */
  427. /* - until voltage reaches final value +-1LSB */
  428. /* - DAC channel output buffer enabled */
  429. /* - load impedance of 5kOhm min, 50pF max */
  430. /* Literal set to maximum value (refer to device datasheet, */
  431. /* parameter "tSETTLING"). */
  432. /* Unit: us */
  433. #define LL_DAC_DELAY_VOLTAGE_SETTLING_US 3UL /*!< Delay for DAC channel voltage settling time */
  434. /**
  435. * @}
  436. */
  437. /**
  438. * @}
  439. */
  440. /* Exported macro ------------------------------------------------------------*/
  441. /** @defgroup DAC_LL_Exported_Macros DAC Exported Macros
  442. * @{
  443. */
  444. /** @defgroup DAC_LL_EM_WRITE_READ Common write and read registers macros
  445. * @{
  446. */
  447. /**
  448. * @brief Write a value in DAC register
  449. * @param __INSTANCE__ DAC Instance
  450. * @param __REG__ Register to be written
  451. * @param __VALUE__ Value to be written in the register
  452. * @retval None
  453. */
  454. #define LL_DAC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
  455. /**
  456. * @brief Read a value in DAC register
  457. * @param __INSTANCE__ DAC Instance
  458. * @param __REG__ Register to be read
  459. * @retval Register value
  460. */
  461. #define LL_DAC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
  462. /**
  463. * @}
  464. */
  465. /** @defgroup DAC_LL_EM_HELPER_MACRO DAC helper macro
  466. * @{
  467. */
  468. /**
  469. * @brief Helper macro to get DAC channel number in decimal format
  470. * from literals LL_DAC_CHANNEL_x.
  471. * Example:
  472. * __LL_DAC_CHANNEL_TO_DECIMAL_NB(LL_DAC_CHANNEL_1)
  473. * will return decimal number "1".
  474. * @note The input can be a value from functions where a channel
  475. * number is returned.
  476. * @param __CHANNEL__ This parameter can be one of the following values:
  477. * @arg @ref LL_DAC_CHANNEL_1
  478. * @arg @ref LL_DAC_CHANNEL_2 (1)
  479. *
  480. * (1) On this STM32 series, parameter not available on all instances.
  481. * Refer to device datasheet for channels availability.
  482. * @retval 1...2
  483. */
  484. #define __LL_DAC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \
  485. ((__CHANNEL__) & DAC_SWTR_CHX_MASK)
  486. /**
  487. * @brief Helper macro to get DAC channel in literal format LL_DAC_CHANNEL_x
  488. * from number in decimal format.
  489. * Example:
  490. * __LL_DAC_DECIMAL_NB_TO_CHANNEL(1)
  491. * will return a data equivalent to "LL_DAC_CHANNEL_1".
  492. * @note If the input parameter does not correspond to a DAC channel,
  493. * this macro returns value '0'.
  494. * @param __DECIMAL_NB__ 1...2
  495. * @retval Returned value can be one of the following values:
  496. * @arg @ref LL_DAC_CHANNEL_1
  497. * @arg @ref LL_DAC_CHANNEL_2 (1)
  498. *
  499. * (1) On this STM32 series, parameter not available on all instances.
  500. * Refer to device datasheet for channels availability.
  501. */
  502. #define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__)\
  503. (((__DECIMAL_NB__) == 1UL)? (LL_DAC_CHANNEL_1 ):(((__DECIMAL_NB__) == 2UL) ? ( LL_DAC_CHANNEL_2):(0UL)))
  504. /**
  505. * @brief Helper macro to define the DAC conversion data full-scale digital
  506. * value corresponding to the selected DAC resolution.
  507. * @note DAC conversion data full-scale corresponds to voltage range
  508. * determined by analog voltage references Vref+ and Vref-
  509. * (refer to reference manual).
  510. * @param __DAC_RESOLUTION__ This parameter can be one of the following values:
  511. * @arg @ref LL_DAC_RESOLUTION_12B
  512. * @arg @ref LL_DAC_RESOLUTION_8B
  513. * @retval ADC conversion data equivalent voltage value (unit: mVolt)
  514. */
  515. #define __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__) \
  516. ((0x00000FFFUL) >> ((__DAC_RESOLUTION__) << 1UL))
  517. /**
  518. * @brief Helper macro to calculate the DAC conversion data (unit: digital
  519. * value) corresponding to a voltage (unit: mVolt).
  520. * @note This helper macro is intended to provide input data in voltage
  521. * rather than digital value,
  522. * to be used with LL DAC functions such as
  523. * @ref LL_DAC_ConvertData12RightAligned().
  524. * @note Analog reference voltage (Vref+) must be either known from
  525. * user board environment or can be calculated using ADC measurement
  526. * and ADC helper macro __LL_ADC_CALC_VREFANALOG_VOLTAGE().
  527. * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
  528. * @param __DAC_VOLTAGE__ Voltage to be generated by DAC channel
  529. * (unit: mVolt).
  530. * @param __DAC_RESOLUTION__ This parameter can be one of the following values:
  531. * @arg @ref LL_DAC_RESOLUTION_12B
  532. * @arg @ref LL_DAC_RESOLUTION_8B
  533. * @retval DAC conversion data (unit: digital value)
  534. */
  535. #define __LL_DAC_CALC_VOLTAGE_TO_DATA(__VREFANALOG_VOLTAGE__, __DAC_VOLTAGE__, __DAC_RESOLUTION__) \
  536. ((__DAC_VOLTAGE__) * __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__) \
  537. / (__VREFANALOG_VOLTAGE__) \
  538. )
  539. /**
  540. * @brief Helper macro to format sawtooth wave generation configuration
  541. * value to be filled into WaveAutoGenerationConfig parameter of @ref LL_DAC_InitTypeDef.
  542. * @note This helper will format information to fit in DAC_STRx register.
  543. * @param __POLARITY__ sawtooth wave polarity (must be value of @ref DAC_LL_EC_SAWTOOTH_POLARITY_MODE)
  544. * @param __RESET_DATA__ sawtooth reset data.
  545. * @param __STEP_DATA__ sawtooth step data
  546. * @retval Sawtooth configuration organized in DAC_STRx compatible format.
  547. */
  548. #define __LL_DAC_FORMAT_SAWTOOTHWAVECONFIG(__POLARITY__, __RESET_DATA__, __STEP_DATA__) \
  549. ( (((__STEP_DATA__) << DAC_STR1_STINCDATA1_Pos) & DAC_STR1_STINCDATA1_Msk) \
  550. | ((__POLARITY__) & DAC_STR1_STDIR1_Msk) \
  551. | (((__RESET_DATA__) << DAC_STR1_STRSTDATA1_Pos) & DAC_STR1_STRSTDATA1_Msk) \
  552. )
  553. /**
  554. * @}
  555. */
  556. /**
  557. * @}
  558. */
  559. /* Exported functions --------------------------------------------------------*/
  560. /** @defgroup DAC_LL_Exported_Functions DAC Exported Functions
  561. * @{
  562. */
  563. /** @defgroup DAC_LL_EF_Channel_Configuration Configuration of DAC instance
  564. * @{
  565. */
  566. /**
  567. * @brief Set the high frequency interface mode for the selected DAC instance
  568. * @rmtoll MCR HFSEL LL_DAC_SetHighFrequencyMode
  569. * @param DACx DAC instance
  570. * @param HighFreqMode This parameter can be one of the following values:
  571. * @arg @ref LL_DAC_HIGH_FREQ_MODE_DISABLE
  572. * @arg @ref LL_DAC_HIGH_FREQ_MODE_ABOVE_80MHZ
  573. * @arg @ref LL_DAC_HIGH_FREQ_MODE_ABOVE_160MHZ
  574. * @retval None
  575. */
  576. __STATIC_INLINE void LL_DAC_SetHighFrequencyMode(DAC_TypeDef *DACx, uint32_t HighFreqMode)
  577. {
  578. MODIFY_REG(DACx->MCR, DAC_MCR_HFSEL, HighFreqMode);
  579. }
  580. /**
  581. * @brief Get the high frequency interface mode for the selected DAC instance
  582. * @rmtoll MCR HFSEL LL_DAC_GetHighFrequencyMode
  583. * @param DACx DAC instance
  584. * @retval Returned value can be one of the following values:
  585. * @arg @ref LL_DAC_HIGH_FREQ_MODE_DISABLE
  586. * @arg @ref LL_DAC_HIGH_FREQ_MODE_ABOVE_80MHZ
  587. * @arg @ref LL_DAC_HIGH_FREQ_MODE_ABOVE_160MHZ
  588. */
  589. __STATIC_INLINE uint32_t LL_DAC_GetHighFrequencyMode(const DAC_TypeDef *DACx)
  590. {
  591. return (uint32_t)(READ_BIT(DACx->MCR, DAC_MCR_HFSEL));
  592. }
  593. /**
  594. * @}
  595. */
  596. /** @defgroup DAC_LL_EF_Configuration Configuration of DAC channels
  597. * @{
  598. */
  599. /**
  600. * @brief Set the operating mode for the selected DAC channel:
  601. * calibration or normal operating mode.
  602. * @rmtoll CR CEN1 LL_DAC_SetMode\n
  603. * CR CEN2 LL_DAC_SetMode
  604. * @param DACx DAC instance
  605. * @param DAC_Channel This parameter can be one of the following values:
  606. * @arg @ref LL_DAC_CHANNEL_1
  607. * @arg @ref LL_DAC_CHANNEL_2 (1)
  608. *
  609. * (1) On this STM32 series, parameter not available on all instances.
  610. * Refer to device datasheet for channels availability.
  611. * @param ChannelMode This parameter can be one of the following values:
  612. * @arg @ref LL_DAC_MODE_NORMAL_OPERATION
  613. * @arg @ref LL_DAC_MODE_CALIBRATION
  614. * @retval None
  615. */
  616. __STATIC_INLINE void LL_DAC_SetMode(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t ChannelMode)
  617. {
  618. MODIFY_REG(DACx->CR,
  619. DAC_CR_CEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  620. ChannelMode << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  621. }
  622. /**
  623. * @brief Get the operating mode for the selected DAC channel:
  624. * calibration or normal operating mode.
  625. * @rmtoll CR CEN1 LL_DAC_GetMode\n
  626. * CR CEN2 LL_DAC_GetMode
  627. * @param DACx DAC instance
  628. * @param DAC_Channel This parameter can be one of the following values:
  629. * @arg @ref LL_DAC_CHANNEL_1
  630. * @arg @ref LL_DAC_CHANNEL_2 (1)
  631. *
  632. * (1) On this STM32 series, parameter not available on all instances.
  633. * Refer to device datasheet for channels availability.
  634. * @retval Returned value can be one of the following values:
  635. * @arg @ref LL_DAC_MODE_NORMAL_OPERATION
  636. * @arg @ref LL_DAC_MODE_CALIBRATION
  637. */
  638. __STATIC_INLINE uint32_t LL_DAC_GetMode(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  639. {
  640. return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_CEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  641. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  642. );
  643. }
  644. /**
  645. * @brief Set the offset trimming value for the selected DAC channel.
  646. * Trimming has an impact when output buffer is enabled
  647. * and is intended to replace factory calibration default values.
  648. * @rmtoll CCR OTRIM1 LL_DAC_SetTrimmingValue\n
  649. * CCR OTRIM2 LL_DAC_SetTrimmingValue
  650. * @param DACx DAC instance
  651. * @param DAC_Channel This parameter can be one of the following values:
  652. * @arg @ref LL_DAC_CHANNEL_1
  653. * @arg @ref LL_DAC_CHANNEL_2 (1)
  654. *
  655. * (1) On this STM32 series, parameter not available on all instances.
  656. * Refer to device datasheet for channels availability.
  657. * @param TrimmingValue Value between Min_Data=0x00 and Max_Data=0x1F
  658. * @retval None
  659. */
  660. __STATIC_INLINE void LL_DAC_SetTrimmingValue(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TrimmingValue)
  661. {
  662. MODIFY_REG(DACx->CCR,
  663. DAC_CCR_OTRIM1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  664. TrimmingValue << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  665. }
  666. /**
  667. * @brief Get the offset trimming value for the selected DAC channel.
  668. * Trimming has an impact when output buffer is enabled
  669. * and is intended to replace factory calibration default values.
  670. * @rmtoll CCR OTRIM1 LL_DAC_GetTrimmingValue\n
  671. * CCR OTRIM2 LL_DAC_GetTrimmingValue
  672. * @param DACx DAC instance
  673. * @param DAC_Channel This parameter can be one of the following values:
  674. * @arg @ref LL_DAC_CHANNEL_1
  675. * @arg @ref LL_DAC_CHANNEL_2 (1)
  676. *
  677. * (1) On this STM32 series, parameter not available on all instances.
  678. * Refer to device datasheet for channels availability.
  679. * @retval TrimmingValue Value between Min_Data=0x00 and Max_Data=0x1F
  680. */
  681. __STATIC_INLINE uint32_t LL_DAC_GetTrimmingValue(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  682. {
  683. return (uint32_t)(READ_BIT(DACx->CCR, DAC_CCR_OTRIM1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  684. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  685. );
  686. }
  687. /**
  688. * @brief Set the conversion trigger source for the selected DAC channel.
  689. * @note For conversion trigger source to be effective, DAC trigger
  690. * must be enabled using function @ref LL_DAC_EnableTrigger().
  691. * @note To set conversion trigger source, DAC channel must be disabled.
  692. * Otherwise, the setting is discarded.
  693. * @note Availability of parameters of trigger sources from timer
  694. * depends on timers availability on the selected device.
  695. * @rmtoll CR TSEL1 LL_DAC_SetTriggerSource\n
  696. * CR TSEL2 LL_DAC_SetTriggerSource
  697. * @param DACx DAC instance
  698. * @param DAC_Channel This parameter can be one of the following values:
  699. * @arg @ref LL_DAC_CHANNEL_1
  700. * @arg @ref LL_DAC_CHANNEL_2 (1)
  701. *
  702. * (1) On this STM32 series, parameter not available on all instances.
  703. * Refer to device datasheet for channels availability.
  704. * @param TriggerSource This parameter can be one of the following values:
  705. * @arg @ref LL_DAC_TRIG_SOFTWARE
  706. * @arg @ref LL_DAC_TRIG_EXT_TIM1_TRGO (1)
  707. * @arg @ref LL_DAC_TRIG_EXT_TIM8_TRGO (2)
  708. * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
  709. * @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO
  710. * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
  711. * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
  712. * @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9
  713. * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
  714. * @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO
  715. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG1 (5)
  716. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG2 (5)
  717. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG3 (5)
  718. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG4 (5)
  719. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG5 (5)
  720. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG6 (5)
  721. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO1 (3) (5)
  722. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO2 (4) (5)
  723. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO3 (1) (5)
  724. *
  725. * (1) On this STM32 series, parameter only available on DAC3.
  726. * (2) On this STM32 series, parameter only available on DAC1/2/4.
  727. * (3) On this STM32 series, parameter only available on DAC1&4.
  728. * (4) On this STM32 series, parameter only available on DAC2.
  729. * Refer to device datasheet for DACx instances availability.
  730. * (5) On this STM32 series, parameter not available on all devices.
  731. * Only available if HRTIM feature is supported (refer to device datasheet for supported features list)
  732. * @retval None
  733. */
  734. __STATIC_INLINE void LL_DAC_SetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TriggerSource)
  735. {
  736. MODIFY_REG(DACx->CR,
  737. DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  738. TriggerSource << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  739. }
  740. /**
  741. * @brief Get the conversion trigger source for the selected DAC channel.
  742. * @note For conversion trigger source to be effective, DAC trigger
  743. * must be enabled using function @ref LL_DAC_EnableTrigger().
  744. * @note Availability of parameters of trigger sources from timer
  745. * depends on timers availability on the selected device.
  746. * @rmtoll CR TSEL1 LL_DAC_GetTriggerSource\n
  747. * CR TSEL2 LL_DAC_GetTriggerSource
  748. * @param DACx DAC instance
  749. * @param DAC_Channel This parameter can be one of the following values:
  750. * @arg @ref LL_DAC_CHANNEL_1
  751. * @arg @ref LL_DAC_CHANNEL_2 (1)
  752. *
  753. * (1) On this STM32 series, parameter not available on all instances.
  754. * Refer to device datasheet for channels availability.
  755. * @retval Returned value can be one of the following values:
  756. * @arg @ref LL_DAC_TRIG_SOFTWARE
  757. * @arg @ref LL_DAC_TRIG_EXT_TIM1_TRGO (1)
  758. * @arg @ref LL_DAC_TRIG_EXT_TIM8_TRGO (2)
  759. * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
  760. * @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO
  761. * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
  762. * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
  763. * @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9
  764. * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
  765. * @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO
  766. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG1 (5)
  767. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG2 (5)
  768. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG3 (5)
  769. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG4 (5)
  770. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG5 (5)
  771. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG6 (5)
  772. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO1 (3) (5)
  773. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO2 (4) (5)
  774. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO3 (1) (5)
  775. *
  776. * (1) On this STM32 series, parameter only available on DAC3.
  777. * (2) On this STM32 series, parameter only available on DAC1/2/4.
  778. * (3) On this STM32 series, parameter only available on DAC1&4.
  779. * (4) On this STM32 series, parameter only available on DAC2.
  780. * Refer to device datasheet for DACx instances availability.
  781. * (5) On this STM32 series, parameter not available on all devices.
  782. * Only available if HRTIM feature is supported (refer to device datasheet for supported features list)
  783. */
  784. __STATIC_INLINE uint32_t LL_DAC_GetTriggerSource(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  785. {
  786. return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  787. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  788. );
  789. }
  790. /**
  791. * @brief Set the waveform automatic generation mode
  792. * for the selected DAC channel.
  793. * @rmtoll CR WAVE1 LL_DAC_SetWaveAutoGeneration\n
  794. * CR WAVE2 LL_DAC_SetWaveAutoGeneration
  795. * @param DACx DAC instance
  796. * @param DAC_Channel This parameter can be one of the following values:
  797. * @arg @ref LL_DAC_CHANNEL_1
  798. * @arg @ref LL_DAC_CHANNEL_2 (1)
  799. *
  800. * (1) On this STM32 series, parameter not available on all instances.
  801. * Refer to device datasheet for channels availability.
  802. * @param WaveAutoGeneration This parameter can be one of the following values:
  803. * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NONE
  804. * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NOISE
  805. * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE
  806. * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_SAWTOOTH
  807. * @retval None
  808. */
  809. __STATIC_INLINE void LL_DAC_SetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t WaveAutoGeneration)
  810. {
  811. MODIFY_REG(DACx->CR,
  812. DAC_CR_WAVE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  813. WaveAutoGeneration << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  814. }
  815. /**
  816. * @brief Get the waveform automatic generation mode
  817. * for the selected DAC channel.
  818. * @rmtoll CR WAVE1 LL_DAC_GetWaveAutoGeneration\n
  819. * CR WAVE2 LL_DAC_GetWaveAutoGeneration
  820. * @param DACx DAC instance
  821. * @param DAC_Channel This parameter can be one of the following values:
  822. * @arg @ref LL_DAC_CHANNEL_1
  823. * @arg @ref LL_DAC_CHANNEL_2 (1)
  824. *
  825. * (1) On this STM32 series, parameter not available on all instances.
  826. * Refer to device datasheet for channels availability.
  827. * @retval Returned value can be one of the following values:
  828. * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NONE
  829. * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NOISE
  830. * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE
  831. * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_SAWTOOTH
  832. */
  833. __STATIC_INLINE uint32_t LL_DAC_GetWaveAutoGeneration(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  834. {
  835. return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_WAVE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  836. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  837. );
  838. }
  839. /**
  840. * @brief Set the noise waveform generation for the selected DAC channel:
  841. * Noise mode and parameters LFSR (linear feedback shift register).
  842. * @note For wave generation to be effective, DAC channel
  843. * wave generation mode must be enabled using
  844. * function @ref LL_DAC_SetWaveAutoGeneration().
  845. * @note This setting can be set when the selected DAC channel is disabled
  846. * (otherwise, the setting operation is ignored).
  847. * @rmtoll CR MAMP1 LL_DAC_SetWaveNoiseLFSR\n
  848. * CR MAMP2 LL_DAC_SetWaveNoiseLFSR
  849. * @param DACx DAC instance
  850. * @param DAC_Channel This parameter can be one of the following values:
  851. * @arg @ref LL_DAC_CHANNEL_1
  852. * @arg @ref LL_DAC_CHANNEL_2 (1)
  853. *
  854. * (1) On this STM32 series, parameter not available on all instances.
  855. * Refer to device datasheet for channels availability.
  856. * @param NoiseLFSRMask This parameter can be one of the following values:
  857. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BIT0
  858. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS1_0
  859. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS2_0
  860. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS3_0
  861. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS4_0
  862. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS5_0
  863. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS6_0
  864. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS7_0
  865. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS8_0
  866. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS9_0
  867. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS10_0
  868. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS11_0
  869. * @retval None
  870. */
  871. __STATIC_INLINE void LL_DAC_SetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t NoiseLFSRMask)
  872. {
  873. MODIFY_REG(DACx->CR,
  874. DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  875. NoiseLFSRMask << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  876. }
  877. /**
  878. * @brief Get the noise waveform generation for the selected DAC channel:
  879. * Noise mode and parameters LFSR (linear feedback shift register).
  880. * @rmtoll CR MAMP1 LL_DAC_GetWaveNoiseLFSR\n
  881. * CR MAMP2 LL_DAC_GetWaveNoiseLFSR
  882. * @param DACx DAC instance
  883. * @param DAC_Channel This parameter can be one of the following values:
  884. * @arg @ref LL_DAC_CHANNEL_1
  885. * @arg @ref LL_DAC_CHANNEL_2 (1)
  886. *
  887. * (1) On this STM32 series, parameter not available on all instances.
  888. * Refer to device datasheet for channels availability.
  889. * @retval Returned value can be one of the following values:
  890. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BIT0
  891. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS1_0
  892. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS2_0
  893. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS3_0
  894. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS4_0
  895. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS5_0
  896. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS6_0
  897. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS7_0
  898. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS8_0
  899. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS9_0
  900. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS10_0
  901. * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS11_0
  902. */
  903. __STATIC_INLINE uint32_t LL_DAC_GetWaveNoiseLFSR(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  904. {
  905. return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  906. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  907. );
  908. }
  909. /**
  910. * @brief Set the triangle waveform generation for the selected DAC channel:
  911. * triangle mode and amplitude.
  912. * @note For wave generation to be effective, DAC channel
  913. * wave generation mode must be enabled using
  914. * function @ref LL_DAC_SetWaveAutoGeneration().
  915. * @note This setting can be set when the selected DAC channel is disabled
  916. * (otherwise, the setting operation is ignored).
  917. * @rmtoll CR MAMP1 LL_DAC_SetWaveTriangleAmplitude\n
  918. * CR MAMP2 LL_DAC_SetWaveTriangleAmplitude
  919. * @param DACx DAC instance
  920. * @param DAC_Channel This parameter can be one of the following values:
  921. * @arg @ref LL_DAC_CHANNEL_1
  922. * @arg @ref LL_DAC_CHANNEL_2 (1)
  923. *
  924. * (1) On this STM32 series, parameter not available on all instances.
  925. * Refer to device datasheet for channels availability.
  926. * @param TriangleAmplitude This parameter can be one of the following values:
  927. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1
  928. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_3
  929. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_7
  930. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_15
  931. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_31
  932. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_63
  933. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_127
  934. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_255
  935. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_511
  936. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1023
  937. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_2047
  938. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_4095
  939. * @retval None
  940. */
  941. __STATIC_INLINE void LL_DAC_SetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel,
  942. uint32_t TriangleAmplitude)
  943. {
  944. MODIFY_REG(DACx->CR,
  945. DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  946. TriangleAmplitude << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  947. }
  948. /**
  949. * @brief Get the triangle waveform generation for the selected DAC channel:
  950. * triangle mode and amplitude.
  951. * @rmtoll CR MAMP1 LL_DAC_GetWaveTriangleAmplitude\n
  952. * CR MAMP2 LL_DAC_GetWaveTriangleAmplitude
  953. * @param DACx DAC instance
  954. * @param DAC_Channel This parameter can be one of the following values:
  955. * @arg @ref LL_DAC_CHANNEL_1
  956. * @arg @ref LL_DAC_CHANNEL_2 (1)
  957. *
  958. * (1) On this STM32 series, parameter not available on all instances.
  959. * Refer to device datasheet for channels availability.
  960. * @retval Returned value can be one of the following values:
  961. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1
  962. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_3
  963. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_7
  964. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_15
  965. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_31
  966. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_63
  967. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_127
  968. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_255
  969. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_511
  970. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1023
  971. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_2047
  972. * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_4095
  973. */
  974. __STATIC_INLINE uint32_t LL_DAC_GetWaveTriangleAmplitude(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  975. {
  976. return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  977. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  978. );
  979. }
  980. /**
  981. * @brief Set the swatooth waveform generation polarity.
  982. * @note For wave generation to be effective, DAC channel
  983. * wave generation mode must be enabled using
  984. * function @ref LL_DAC_SetWaveAutoGeneration().
  985. * @note This setting can be set when the selected DAC channel is disabled
  986. * (otherwise, the setting operation is ignored).
  987. * @rmtoll STR1 STDIR1 LL_DAC_SetWaveSawtoothPolarity\n
  988. * STR2 STDIR2 LL_DAC_SetWaveSawtoothPolarity
  989. * @param DACx DAC instance
  990. * @param DAC_Channel This parameter can be one of the following values:
  991. * @arg @ref LL_DAC_CHANNEL_1
  992. * @arg @ref LL_DAC_CHANNEL_2 (1)
  993. *
  994. * (1) On this STM32 series, parameter not available on all instances.
  995. * Refer to device datasheet for channels availability.
  996. * @param Polarity This parameter can be one of the following values:
  997. * @arg @ref LL_DAC_SAWTOOTH_POLARITY_DECREMENT
  998. * @arg @ref LL_DAC_SAWTOOTH_POLARITY_INCREMENT
  999. * @retval None
  1000. */
  1001. __STATIC_INLINE void LL_DAC_SetWaveSawtoothPolarity(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Polarity)
  1002. {
  1003. __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->STR1,
  1004. (DAC_Channel >> DAC_REG_STRX_REGOFFSET_BITOFFSET_POS) &
  1005. DAC_REG_STRX_REGOFFSET_MASK_POSBIT0);
  1006. MODIFY_REG(*preg,
  1007. DAC_STR1_STDIR1,
  1008. Polarity);
  1009. }
  1010. /**
  1011. * @brief Get the sawtooth waveform generation polarity.
  1012. * @rmtoll STR1 STDIR1 LL_DAC_GetWaveSawtoothPolarity\n
  1013. * STR2 STDIR2 LL_DAC_GetWaveSawtoothPolarity
  1014. * @param DACx DAC instance
  1015. * @param DAC_Channel This parameter can be one of the following values:
  1016. * @arg @ref LL_DAC_CHANNEL_1
  1017. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1018. *
  1019. * (1) On this STM32 series, parameter not available on all instances.
  1020. * Refer to device datasheet for channels availability.
  1021. * @retval Returned value can be one of the following values:
  1022. * @arg @ref LL_DAC_SAWTOOTH_POLARITY_DECREMENT
  1023. * @arg @ref LL_DAC_SAWTOOTH_POLARITY_INCREMENT
  1024. */
  1025. __STATIC_INLINE uint32_t LL_DAC_GetWaveSawtoothPolarity(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1026. {
  1027. __IO uint32_t const *preg = __DAC_PTR_REG_OFFSET(DACx->STR1,
  1028. (DAC_Channel >> DAC_REG_STRX_REGOFFSET_BITOFFSET_POS)
  1029. & DAC_REG_STRX_REGOFFSET_MASK_POSBIT0);
  1030. return (uint32_t) READ_BIT(*preg, DAC_STR1_STDIR1);
  1031. }
  1032. /**
  1033. * @brief Set the swatooth waveform generation reset data.
  1034. * @note For wave generation to be effective, DAC channel
  1035. * wave generation mode must be enabled using
  1036. * function @ref LL_DAC_SetWaveAutoGeneration().
  1037. * @note This setting can be set when the selected DAC channel is disabled
  1038. * (otherwise, the setting operation is ignored).
  1039. * @rmtoll STR1 STRSTDATA1 LL_DAC_SetWaveSawtoothResetData\n
  1040. * STR2 STRSTDATA2 LL_DAC_SetWaveSawtoothResetData
  1041. * @param DACx DAC instance
  1042. * @param DAC_Channel This parameter can be one of the following values:
  1043. * @arg @ref LL_DAC_CHANNEL_1
  1044. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1045. *
  1046. * (1) On this STM32 series, parameter not available on all instances.
  1047. * Refer to device datasheet for channels availability.
  1048. * @param ResetData This parameter is the sawtooth reset value.
  1049. * Range is from 0 to DAC full range 4095 (0xFFF)
  1050. * @retval None
  1051. */
  1052. __STATIC_INLINE void LL_DAC_SetWaveSawtoothResetData(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t ResetData)
  1053. {
  1054. __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->STR1,
  1055. (DAC_Channel >> DAC_REG_STRX_REGOFFSET_BITOFFSET_POS) &
  1056. DAC_REG_STRX_REGOFFSET_MASK_POSBIT0);
  1057. MODIFY_REG(*preg,
  1058. DAC_STR1_STRSTDATA1,
  1059. ResetData << DAC_STR1_STRSTDATA1_Pos);
  1060. }
  1061. /**
  1062. * @brief Get the sawtooth waveform generation reset data.
  1063. * @rmtoll STR1 STRSTDATA1 LL_DAC_GetWaveSawtoothResetData\n
  1064. * STR2 STRSTDATA2 LL_DAC_GetWaveSawtoothResetData
  1065. * @param DACx DAC instance
  1066. * @param DAC_Channel This parameter can be one of the following values:
  1067. * @arg @ref LL_DAC_CHANNEL_1
  1068. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1069. *
  1070. * (1) On this STM32 series, parameter not available on all instances.
  1071. * Refer to device datasheet for channels availability.
  1072. * @retval Returned value is the sawtooth reset value.
  1073. * Range is from 0 to DAC full range 4095 (0xFFF)
  1074. */
  1075. __STATIC_INLINE uint32_t LL_DAC_GetWaveSawtoothResetData(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1076. {
  1077. __IO uint32_t const *preg = __DAC_PTR_REG_OFFSET(DACx->STR1,
  1078. (DAC_Channel >> DAC_REG_STRX_REGOFFSET_BITOFFSET_POS)
  1079. & DAC_REG_STRX_REGOFFSET_MASK_POSBIT0);
  1080. return (uint32_t)(READ_BIT(*preg, DAC_STR1_STRSTDATA1) >> DAC_STR1_STRSTDATA1_Pos);
  1081. }
  1082. /**
  1083. * @brief Set the sawtooth waveform generation step data.
  1084. * @note For wave generation to be effective, DAC channel
  1085. * wave generation mode must be enabled using
  1086. * function @ref LL_DAC_SetWaveAutoGeneration().
  1087. * @note This setting can be set when the selected DAC channel is disabled
  1088. * (otherwise, the setting operation is ignored).
  1089. * @rmtoll STR1 STINCDATA1 LL_DAC_SetWaveSawtoothStepData\n
  1090. * STR2 STINCDATA2 LL_DAC_SetWaveSawtoothStepData
  1091. * @param DACx DAC instance
  1092. * @param DAC_Channel This parameter can be one of the following values:
  1093. * @arg @ref LL_DAC_CHANNEL_1
  1094. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1095. *
  1096. * (1) On this STM32 series, parameter not available on all instances.
  1097. * Refer to device datasheet for channels availability.
  1098. * @param StepData This parameter is the sawtooth step value.
  1099. * 12.4 bit format, unsigned: 12 bits exponent / 4 bits mantissa
  1100. * Step value step is 1/16 = 0.0625
  1101. * Step value range is 0.0000 to 4095.9375 (0xFFF.F)
  1102. * @retval None
  1103. */
  1104. __STATIC_INLINE void LL_DAC_SetWaveSawtoothStepData(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t StepData)
  1105. {
  1106. __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->STR1,
  1107. (DAC_Channel >> DAC_REG_STRX_REGOFFSET_BITOFFSET_POS) &
  1108. DAC_REG_STRX_REGOFFSET_MASK_POSBIT0);
  1109. MODIFY_REG(*preg,
  1110. DAC_STR1_STINCDATA1,
  1111. StepData << DAC_STR1_STINCDATA1_Pos);
  1112. }
  1113. /**
  1114. * @brief Get the sawtooth waveform generation step data.
  1115. * @rmtoll STR1 STINCDATA1 LL_DAC_GetWaveSawtoothStepData\n
  1116. * STR2 STINCDATA2 LL_DAC_GetWaveSawtoothStepData
  1117. * @param DACx DAC instance
  1118. * @param DAC_Channel This parameter can be one of the following values:
  1119. * @arg @ref LL_DAC_CHANNEL_1
  1120. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1121. *
  1122. * (1) On this STM32 series, parameter not available on all instances.
  1123. * Refer to device datasheet for channels availability.
  1124. * @retval Returned value is the sawtooth step value.
  1125. * 12.4 bit format, unsigned: 12 bits exponent / 4 bits mantissa
  1126. * Step value step is 1/16 = 0.0625
  1127. * Step value range is 0.0000 to 4095.9375 (0xFFF.F)
  1128. */
  1129. __STATIC_INLINE uint32_t LL_DAC_GetWaveSawtoothStepData(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1130. {
  1131. __IO uint32_t const *preg = __DAC_PTR_REG_OFFSET(DACx->STR1,
  1132. (DAC_Channel >> DAC_REG_STRX_REGOFFSET_BITOFFSET_POS)
  1133. & DAC_REG_STRX_REGOFFSET_MASK_POSBIT0);
  1134. return (uint32_t)(READ_BIT(*preg, DAC_STR1_STINCDATA1) >> DAC_STR1_STINCDATA1_Pos);
  1135. }
  1136. /**
  1137. * @brief Set the sawtooth waveform generation reset trigger source.
  1138. * @note For wave generation to be effective, DAC channel
  1139. * wave generation mode must be enabled using
  1140. * function @ref LL_DAC_SetWaveAutoGeneration().
  1141. * @note This setting can be set when the selected DAC channel is disabled
  1142. * (otherwise, the setting operation is ignored).
  1143. * @rmtoll STMODR STRSTTRIGSEL1 LL_DAC_SetWaveSawtoothResetTriggerSource\n
  1144. * STMODR STRSTTRIGSEL2 LL_DAC_SetWaveSawtoothResetTriggerSource
  1145. * @param DACx DAC instance
  1146. * @param DAC_Channel This parameter can be one of the following values:
  1147. * @arg @ref LL_DAC_CHANNEL_1
  1148. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1149. *
  1150. * (1) On this STM32 series, parameter not available on all instances.
  1151. * Refer to device datasheet for channels availability.
  1152. * @param TriggerSource This parameter can be one of the following values:
  1153. * @arg @ref LL_DAC_TRIG_SOFTWARE
  1154. * @arg @ref LL_DAC_TRIG_EXT_TIM1_TRGO (1)
  1155. * @arg @ref LL_DAC_TRIG_EXT_TIM8_TRGO (2)
  1156. * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
  1157. * @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO
  1158. * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
  1159. * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
  1160. * @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9
  1161. * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
  1162. * @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO
  1163. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG1 (5)
  1164. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG2 (5)
  1165. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG3 (5)
  1166. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG4 (5)
  1167. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG5 (5)
  1168. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG6 (5)
  1169. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO1 (3) (5)
  1170. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO2 (4) (5)
  1171. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO3 (1) (5)
  1172. *
  1173. * (1) On this STM32 series, parameter only available on DAC3.
  1174. * (2) On this STM32 series, parameter only available on DAC1/2/4.
  1175. * (3) On this STM32 series, parameter only available on DAC1&4.
  1176. * (4) On this STM32 series, parameter only available on DAC2.
  1177. * Refer to device datasheet for DACx instances availability.
  1178. * (5) On this STM32 series, parameter not available on all devices.
  1179. * Only available if HRTIM feature is supported (refer to device datasheet for supported features list)
  1180. * @retval None
  1181. */
  1182. __STATIC_INLINE void LL_DAC_SetWaveSawtoothResetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel,
  1183. uint32_t TriggerSource)
  1184. {
  1185. MODIFY_REG(DACx->STMODR,
  1186. DAC_STMODR_STRSTTRIGSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  1187. ( ((TriggerSource >> DAC_CR_TSEL1_Pos) << DAC_STMODR_STRSTTRIGSEL1_Pos)
  1188. << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) ));
  1189. }
  1190. /**
  1191. * @brief Get the sawtooth waveform generation reset trigger source.
  1192. * @rmtoll STMODR STRSTTRIGSEL1 LL_DAC_GetWaveSawtoothResetTriggerSource\n
  1193. * STMODR STRSTTRIGSEL2 LL_DAC_GetWaveSawtoothResetTriggerSource
  1194. * @param DACx DAC instance
  1195. * @param DAC_Channel This parameter can be one of the following values:
  1196. * @arg @ref LL_DAC_CHANNEL_1
  1197. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1198. *
  1199. * (1) On this STM32 series, parameter not available on all instances.
  1200. * Refer to device datasheet for channels availability.
  1201. * @retval Returned value can be one of the following values:
  1202. * @arg @ref LL_DAC_TRIG_SOFTWARE
  1203. * @arg @ref LL_DAC_TRIG_EXT_TIM1_TRGO (1)
  1204. * @arg @ref LL_DAC_TRIG_EXT_TIM8_TRGO (2)
  1205. * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
  1206. * @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO
  1207. * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
  1208. * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
  1209. * @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9
  1210. * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
  1211. * @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO
  1212. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG1 (5)
  1213. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG2 (5)
  1214. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG3 (5)
  1215. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG4 (5)
  1216. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG5 (5)
  1217. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_RST_TRG6 (5)
  1218. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO1 (3) (5)
  1219. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO2 (4) (5)
  1220. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_TRGO3 (1) (5)
  1221. *
  1222. * (1) On this STM32 series, parameter only available on DAC3.
  1223. * (2) On this STM32 series, parameter only available on DAC1/2/4.
  1224. * (3) On this STM32 series, parameter only available on DAC1&4.
  1225. * (4) On this STM32 series, parameter only available on DAC2.
  1226. * Refer to device datasheet for DACx instances availability.
  1227. * (5) On this STM32 series, parameter not available on all devices.
  1228. * Only available if HRTIM feature is supported (refer to device datasheet for supported features list)
  1229. */
  1230. __STATIC_INLINE uint32_t LL_DAC_GetWaveSawtoothResetTriggerSource(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1231. {
  1232. return (uint32_t)((READ_BIT(DACx->STMODR,
  1233. DAC_STMODR_STRSTTRIGSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  1234. )
  1235. >> (DAC_STMODR_STRSTTRIGSEL1_Pos + (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1236. ) << DAC_CR_TSEL1_Pos);
  1237. }
  1238. /**
  1239. * @brief Set the swatooth waveform generation step trigger source.
  1240. * @note For wave generation to be effective, DAC channel
  1241. * wave generation mode must be enabled using
  1242. * function @ref LL_DAC_SetWaveAutoGeneration().
  1243. * @note This setting can be set when the selected DAC channel is disabled
  1244. * (otherwise, the setting operation is ignored).
  1245. * @rmtoll STMODR STINCTRIGSEL1 LL_DAC_SetWaveSawtoothStepTriggerSource\n
  1246. * STMODR STINCTRIGSEL2 LL_DAC_SetWaveSawtoothStepTriggerSource
  1247. * @param DACx DAC instance
  1248. * @param DAC_Channel This parameter can be one of the following values:
  1249. * @arg @ref LL_DAC_CHANNEL_1
  1250. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1251. *
  1252. * (1) On this STM32 series, parameter not available on all instances.
  1253. * Refer to device datasheet for channels availability.
  1254. * @param TriggerSource This parameter can be one of the following values:
  1255. * @arg @ref LL_DAC_TRIG_SOFTWARE
  1256. * @arg @ref LL_DAC_TRIG_EXT_TIM1_TRGO (1)
  1257. * @arg @ref LL_DAC_TRIG_EXT_TIM8_TRGO (2)
  1258. * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
  1259. * @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO
  1260. * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
  1261. * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
  1262. * @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE10
  1263. * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
  1264. * @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO
  1265. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG1 (3)
  1266. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG2 (3)
  1267. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG3 (3)
  1268. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG4 (3)
  1269. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG5 (3)
  1270. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG6 (3)
  1271. *
  1272. * (1) On this STM32 series, parameter only available on DAC3.
  1273. * (2) On this STM32 series, parameter only available on DAC1/2/4.
  1274. * Refer to device datasheet for DACx instances availability.
  1275. * (3) On this STM32 series, parameter not available on all devices.
  1276. * Only available if HRTIM feature is supported (refer to device datasheet for supported features list)
  1277. * @retval None
  1278. */
  1279. __STATIC_INLINE void LL_DAC_SetWaveSawtoothStepTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel,
  1280. uint32_t TriggerSource)
  1281. {
  1282. MODIFY_REG(DACx->STMODR,
  1283. DAC_STMODR_STINCTRIGSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  1284. ( ((TriggerSource >> DAC_CR_TSEL1_Pos) << DAC_STMODR_STINCTRIGSEL1_Pos)
  1285. << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  1286. ));
  1287. }
  1288. /**
  1289. * @brief Get the sawtooth waveform generation step trigger source.
  1290. * @rmtoll STMODR STINCTRIGSEL1 LL_DAC_GetWaveSawtoothStepTriggerSource\n
  1291. * STMODR STINCTRIGSEL2 LL_DAC_GetWaveSawtoothStepTriggerSource
  1292. * @param DACx DAC instance
  1293. * @param DAC_Channel This parameter can be one of the following values:
  1294. * @arg @ref LL_DAC_CHANNEL_1
  1295. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1296. *
  1297. * (1) On this STM32 series, parameter not available on all instances.
  1298. * Refer to device datasheet for channels availability.
  1299. * @retval Returned value can be one of the following values:
  1300. * @arg @ref LL_DAC_TRIG_SOFTWARE
  1301. * @arg @ref LL_DAC_TRIG_EXT_TIM1_TRGO (1)
  1302. * @arg @ref LL_DAC_TRIG_EXT_TIM8_TRGO (2)
  1303. * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
  1304. * @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO
  1305. * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
  1306. * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
  1307. * @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE10
  1308. * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
  1309. * @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO
  1310. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG1 (3)
  1311. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG2 (3)
  1312. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG3 (3)
  1313. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG4 (3)
  1314. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG5 (3)
  1315. * @arg @ref LL_DAC_TRIG_EXT_HRTIM_STEP_TRG6 (3)
  1316. *
  1317. * (1) On this STM32 series, parameter only available on DAC3.
  1318. * (2) On this STM32 series, parameter only available on DAC1/2/4.
  1319. * Refer to device datasheet for DACx instances availability.
  1320. * (3) On this STM32 series, parameter not available on all devices.
  1321. * Only available if HRTIM feature is supported (refer to device datasheet for supported features list)
  1322. */
  1323. __STATIC_INLINE uint32_t LL_DAC_GetWaveSawtoothStepTriggerSource(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1324. {
  1325. return (uint32_t)((READ_BIT(DACx->STMODR,
  1326. DAC_STMODR_STINCTRIGSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  1327. )
  1328. >> (DAC_STMODR_STINCTRIGSEL1_Pos + (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1329. ) << DAC_CR_TSEL1_Pos);
  1330. }
  1331. /**
  1332. * @brief Set the output for the selected DAC channel.
  1333. * @note This function set several features:
  1334. * - mode normal or sample-and-hold
  1335. * - buffer
  1336. * - connection to GPIO or internal path.
  1337. * These features can also be set individually using
  1338. * dedicated functions:
  1339. * - @ref LL_DAC_SetOutputBuffer()
  1340. * - @ref LL_DAC_SetOutputMode()
  1341. * - @ref LL_DAC_SetOutputConnection()
  1342. * @note On this STM32 series, output connection depends on output mode
  1343. * (normal or sample and hold) and output buffer state.
  1344. * - if output connection is set to internal path and output buffer
  1345. * is enabled (whatever output mode):
  1346. * output connection is also connected to GPIO pin
  1347. * (both connections to GPIO pin and internal path).
  1348. * - if output connection is set to GPIO pin, output buffer
  1349. * is disabled, output mode set to sample and hold:
  1350. * output connection is also connected to internal path
  1351. * (both connections to GPIO pin and internal path).
  1352. * @note Mode sample-and-hold requires an external capacitor
  1353. * to be connected between DAC channel output and ground.
  1354. * Capacitor value depends on load on DAC channel output and
  1355. * sample-and-hold timings configured.
  1356. * As indication, capacitor typical value is 100nF
  1357. * (refer to device datasheet, parameter "CSH").
  1358. * @rmtoll CR MODE1 LL_DAC_ConfigOutput\n
  1359. * CR MODE2 LL_DAC_ConfigOutput
  1360. * @param DACx DAC instance
  1361. * @param DAC_Channel This parameter can be one of the following values:
  1362. * @arg @ref LL_DAC_CHANNEL_1
  1363. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1364. *
  1365. * (1) On this STM32 series, parameter not available on all instances.
  1366. * Refer to device datasheet for channels availability.
  1367. * @param OutputMode This parameter can be one of the following values:
  1368. * @arg @ref LL_DAC_OUTPUT_MODE_NORMAL
  1369. * @arg @ref LL_DAC_OUTPUT_MODE_SAMPLE_AND_HOLD
  1370. * @param OutputBuffer This parameter can be one of the following values:
  1371. * @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE
  1372. * @arg @ref LL_DAC_OUTPUT_BUFFER_DISABLE
  1373. * @param OutputConnection This parameter can be one of the following values:
  1374. * @arg @ref LL_DAC_OUTPUT_CONNECT_GPIO
  1375. * @arg @ref LL_DAC_OUTPUT_CONNECT_INTERNAL
  1376. * @retval None
  1377. */
  1378. __STATIC_INLINE void LL_DAC_ConfigOutput(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputMode,
  1379. uint32_t OutputBuffer, uint32_t OutputConnection)
  1380. {
  1381. MODIFY_REG(DACx->MCR,
  1382. (DAC_MCR_MODE1_2 | DAC_MCR_MODE1_1 | DAC_MCR_MODE1_0) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  1383. (OutputMode | OutputBuffer | OutputConnection) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1384. }
  1385. /**
  1386. * @brief Set the output mode normal or sample-and-hold
  1387. * for the selected DAC channel.
  1388. * @note Mode sample-and-hold requires an external capacitor
  1389. * to be connected between DAC channel output and ground.
  1390. * Capacitor value depends on load on DAC channel output and
  1391. * sample-and-hold timings configured.
  1392. * As indication, capacitor typical value is 100nF
  1393. * (refer to device datasheet, parameter "CSH").
  1394. * @rmtoll CR MODE1 LL_DAC_SetOutputMode\n
  1395. * CR MODE2 LL_DAC_SetOutputMode
  1396. * @param DACx DAC instance
  1397. * @param DAC_Channel This parameter can be one of the following values:
  1398. * @arg @ref LL_DAC_CHANNEL_1
  1399. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1400. *
  1401. * (1) On this STM32 series, parameter not available on all instances.
  1402. * Refer to device datasheet for channels availability.
  1403. * @param OutputMode This parameter can be one of the following values:
  1404. * @arg @ref LL_DAC_OUTPUT_MODE_NORMAL
  1405. * @arg @ref LL_DAC_OUTPUT_MODE_SAMPLE_AND_HOLD
  1406. * @retval None
  1407. */
  1408. __STATIC_INLINE void LL_DAC_SetOutputMode(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputMode)
  1409. {
  1410. MODIFY_REG(DACx->MCR,
  1411. (uint32_t)DAC_MCR_MODE1_2 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  1412. OutputMode << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1413. }
  1414. /**
  1415. * @brief Get the output mode normal or sample-and-hold for the selected DAC channel.
  1416. * @rmtoll CR MODE1 LL_DAC_GetOutputMode\n
  1417. * CR MODE2 LL_DAC_GetOutputMode
  1418. * @param DACx DAC instance
  1419. * @param DAC_Channel This parameter can be one of the following values:
  1420. * @arg @ref LL_DAC_CHANNEL_1
  1421. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1422. *
  1423. * (1) On this STM32 series, parameter not available on all instances.
  1424. * Refer to device datasheet for channels availability.
  1425. * @retval Returned value can be one of the following values:
  1426. * @arg @ref LL_DAC_OUTPUT_MODE_NORMAL
  1427. * @arg @ref LL_DAC_OUTPUT_MODE_SAMPLE_AND_HOLD
  1428. */
  1429. __STATIC_INLINE uint32_t LL_DAC_GetOutputMode(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1430. {
  1431. return (uint32_t)(READ_BIT(DACx->MCR, (uint32_t)DAC_MCR_MODE1_2 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1432. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  1433. );
  1434. }
  1435. /**
  1436. * @brief Set the output buffer for the selected DAC channel.
  1437. * @note On this STM32 series, when buffer is enabled, its offset can be
  1438. * trimmed: factory calibration default values can be
  1439. * replaced by user trimming values, using function
  1440. * @ref LL_DAC_SetTrimmingValue().
  1441. * @rmtoll CR MODE1 LL_DAC_SetOutputBuffer\n
  1442. * CR MODE2 LL_DAC_SetOutputBuffer
  1443. * @param DACx DAC instance
  1444. * @param DAC_Channel This parameter can be one of the following values:
  1445. * @arg @ref LL_DAC_CHANNEL_1
  1446. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1447. *
  1448. * (1) On this STM32 series, parameter not available on all instances.
  1449. * Refer to device datasheet for channels availability.
  1450. * @param OutputBuffer This parameter can be one of the following values:
  1451. * @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE
  1452. * @arg @ref LL_DAC_OUTPUT_BUFFER_DISABLE
  1453. * @retval None
  1454. */
  1455. __STATIC_INLINE void LL_DAC_SetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputBuffer)
  1456. {
  1457. MODIFY_REG(DACx->MCR,
  1458. (uint32_t)DAC_MCR_MODE1_1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  1459. OutputBuffer << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1460. }
  1461. /**
  1462. * @brief Get the output buffer state for the selected DAC channel.
  1463. * @rmtoll CR MODE1 LL_DAC_GetOutputBuffer\n
  1464. * CR MODE2 LL_DAC_GetOutputBuffer
  1465. * @param DACx DAC instance
  1466. * @param DAC_Channel This parameter can be one of the following values:
  1467. * @arg @ref LL_DAC_CHANNEL_1
  1468. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1469. *
  1470. * (1) On this STM32 series, parameter not available on all instances.
  1471. * Refer to device datasheet for channels availability.
  1472. * @retval Returned value can be one of the following values:
  1473. * @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE
  1474. * @arg @ref LL_DAC_OUTPUT_BUFFER_DISABLE
  1475. */
  1476. __STATIC_INLINE uint32_t LL_DAC_GetOutputBuffer(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1477. {
  1478. return (uint32_t)(READ_BIT(DACx->MCR, (uint32_t)DAC_MCR_MODE1_1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1479. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  1480. );
  1481. }
  1482. /**
  1483. * @brief Set the output connection for the selected DAC channel.
  1484. * @note On this STM32 series, output connection depends on output mode (normal or
  1485. * sample and hold) and output buffer state.
  1486. * - if output connection is set to internal path and output buffer
  1487. * is enabled (whatever output mode):
  1488. * output connection is also connected to GPIO pin
  1489. * (both connections to GPIO pin and internal path).
  1490. * - if output connection is set to GPIO pin, output buffer
  1491. * is disabled, output mode set to sample and hold:
  1492. * output connection is also connected to internal path
  1493. * (both connections to GPIO pin and internal path).
  1494. * @rmtoll CR MODE1 LL_DAC_SetOutputConnection\n
  1495. * CR MODE2 LL_DAC_SetOutputConnection
  1496. * @param DACx DAC instance
  1497. * @param DAC_Channel This parameter can be one of the following values:
  1498. * @arg @ref LL_DAC_CHANNEL_1
  1499. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1500. *
  1501. * (1) On this STM32 series, parameter not available on all instances.
  1502. * Refer to device datasheet for channels availability.
  1503. * @param OutputConnection This parameter can be one of the following values:
  1504. * @arg @ref LL_DAC_OUTPUT_CONNECT_GPIO
  1505. * @arg @ref LL_DAC_OUTPUT_CONNECT_INTERNAL
  1506. * @retval None
  1507. */
  1508. __STATIC_INLINE void LL_DAC_SetOutputConnection(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputConnection)
  1509. {
  1510. MODIFY_REG(DACx->MCR,
  1511. (uint32_t)DAC_MCR_MODE1_0 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  1512. OutputConnection << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1513. }
  1514. /**
  1515. * @brief Get the output connection for the selected DAC channel.
  1516. * @note On this STM32 series, output connection depends on output mode (normal or
  1517. * sample and hold) and output buffer state.
  1518. * - if output connection is set to internal path and output buffer
  1519. * is enabled (whatever output mode):
  1520. * output connection is also connected to GPIO pin
  1521. * (both connections to GPIO pin and internal path).
  1522. * - if output connection is set to GPIO pin, output buffer
  1523. * is disabled, output mode set to sample and hold:
  1524. * output connection is also connected to internal path
  1525. * (both connections to GPIO pin and internal path).
  1526. * @rmtoll CR MODE1 LL_DAC_GetOutputConnection\n
  1527. * CR MODE2 LL_DAC_GetOutputConnection
  1528. * @param DACx DAC instance
  1529. * @param DAC_Channel This parameter can be one of the following values:
  1530. * @arg @ref LL_DAC_CHANNEL_1
  1531. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1532. *
  1533. * (1) On this STM32 series, parameter not available on all instances.
  1534. * Refer to device datasheet for channels availability.
  1535. * @retval Returned value can be one of the following values:
  1536. * @arg @ref LL_DAC_OUTPUT_CONNECT_GPIO
  1537. * @arg @ref LL_DAC_OUTPUT_CONNECT_INTERNAL
  1538. */
  1539. __STATIC_INLINE uint32_t LL_DAC_GetOutputConnection(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1540. {
  1541. return (uint32_t)(READ_BIT(DACx->MCR, (uint32_t)DAC_MCR_MODE1_0 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1542. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  1543. );
  1544. }
  1545. /**
  1546. * @brief Set the sample-and-hold timing for the selected DAC channel:
  1547. * sample time
  1548. * @note Sample time must be set when DAC channel is disabled
  1549. * or during DAC operation when DAC channel flag BWSTx is reset,
  1550. * otherwise the setting is ignored.
  1551. * Check BWSTx flag state using function "LL_DAC_IsActiveFlag_BWSTx()".
  1552. * @rmtoll SHSR1 TSAMPLE1 LL_DAC_SetSampleAndHoldSampleTime\n
  1553. * SHSR2 TSAMPLE2 LL_DAC_SetSampleAndHoldSampleTime
  1554. * @param DACx DAC instance
  1555. * @param DAC_Channel This parameter can be one of the following values:
  1556. * @arg @ref LL_DAC_CHANNEL_1
  1557. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1558. *
  1559. * (1) On this STM32 series, parameter not available on all instances.
  1560. * Refer to device datasheet for channels availability.
  1561. * @param SampleTime Value between Min_Data=0x000 and Max_Data=0x3FF
  1562. * @retval None
  1563. */
  1564. __STATIC_INLINE void LL_DAC_SetSampleAndHoldSampleTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t SampleTime)
  1565. {
  1566. __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->SHSR1, (DAC_Channel >> DAC_REG_SHSRX_REGOFFSET_BITOFFSET_POS)
  1567. & DAC_REG_SHSRX_REGOFFSET_MASK_POSBIT0);
  1568. MODIFY_REG(*preg, DAC_SHSR1_TSAMPLE1, SampleTime);
  1569. }
  1570. /**
  1571. * @brief Get the sample-and-hold timing for the selected DAC channel:
  1572. * sample time
  1573. * @rmtoll SHSR1 TSAMPLE1 LL_DAC_GetSampleAndHoldSampleTime\n
  1574. * SHSR2 TSAMPLE2 LL_DAC_GetSampleAndHoldSampleTime
  1575. * @param DACx DAC instance
  1576. * @param DAC_Channel This parameter can be one of the following values:
  1577. * @arg @ref LL_DAC_CHANNEL_1
  1578. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1579. *
  1580. * (1) On this STM32 series, parameter not available on all instances.
  1581. * Refer to device datasheet for channels availability.
  1582. * @retval Value between Min_Data=0x000 and Max_Data=0x3FF
  1583. */
  1584. __STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldSampleTime(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1585. {
  1586. __IO uint32_t const *preg = __DAC_PTR_REG_OFFSET(DACx->SHSR1, (DAC_Channel >> DAC_REG_SHSRX_REGOFFSET_BITOFFSET_POS)
  1587. & DAC_REG_SHSRX_REGOFFSET_MASK_POSBIT0);
  1588. return (uint32_t) READ_BIT(*preg, DAC_SHSR1_TSAMPLE1);
  1589. }
  1590. /**
  1591. * @brief Set the sample-and-hold timing for the selected DAC channel:
  1592. * hold time
  1593. * @rmtoll SHHR THOLD1 LL_DAC_SetSampleAndHoldHoldTime\n
  1594. * SHHR THOLD2 LL_DAC_SetSampleAndHoldHoldTime
  1595. * @param DACx DAC instance
  1596. * @param DAC_Channel This parameter can be one of the following values:
  1597. * @arg @ref LL_DAC_CHANNEL_1
  1598. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1599. *
  1600. * (1) On this STM32 series, parameter not available on all instances.
  1601. * Refer to device datasheet for channels availability.
  1602. * @param HoldTime Value between Min_Data=0x000 and Max_Data=0x3FF
  1603. * @retval None
  1604. */
  1605. __STATIC_INLINE void LL_DAC_SetSampleAndHoldHoldTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t HoldTime)
  1606. {
  1607. MODIFY_REG(DACx->SHHR,
  1608. DAC_SHHR_THOLD1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  1609. HoldTime << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1610. }
  1611. /**
  1612. * @brief Get the sample-and-hold timing for the selected DAC channel:
  1613. * hold time
  1614. * @rmtoll SHHR THOLD1 LL_DAC_GetSampleAndHoldHoldTime\n
  1615. * SHHR THOLD2 LL_DAC_GetSampleAndHoldHoldTime
  1616. * @param DACx DAC instance
  1617. * @param DAC_Channel This parameter can be one of the following values:
  1618. * @arg @ref LL_DAC_CHANNEL_1
  1619. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1620. *
  1621. * (1) On this STM32 series, parameter not available on all instances.
  1622. * Refer to device datasheet for channels availability.
  1623. * @retval Value between Min_Data=0x000 and Max_Data=0x3FF
  1624. */
  1625. __STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldHoldTime(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1626. {
  1627. return (uint32_t)(READ_BIT(DACx->SHHR, DAC_SHHR_THOLD1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1628. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  1629. );
  1630. }
  1631. /**
  1632. * @brief Set the sample-and-hold timing for the selected DAC channel:
  1633. * refresh time
  1634. * @rmtoll SHRR TREFRESH1 LL_DAC_SetSampleAndHoldRefreshTime\n
  1635. * SHRR TREFRESH2 LL_DAC_SetSampleAndHoldRefreshTime
  1636. * @param DACx DAC instance
  1637. * @param DAC_Channel This parameter can be one of the following values:
  1638. * @arg @ref LL_DAC_CHANNEL_1
  1639. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1640. *
  1641. * (1) On this STM32 series, parameter not available on all instances.
  1642. * Refer to device datasheet for channels availability.
  1643. * @param RefreshTime Value between Min_Data=0x00 and Max_Data=0xFF
  1644. * @retval None
  1645. */
  1646. __STATIC_INLINE void LL_DAC_SetSampleAndHoldRefreshTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t RefreshTime)
  1647. {
  1648. MODIFY_REG(DACx->SHRR,
  1649. DAC_SHRR_TREFRESH1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  1650. RefreshTime << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1651. }
  1652. /**
  1653. * @brief Get the sample-and-hold timing for the selected DAC channel:
  1654. * refresh time
  1655. * @rmtoll SHRR TREFRESH1 LL_DAC_GetSampleAndHoldRefreshTime\n
  1656. * SHRR TREFRESH2 LL_DAC_GetSampleAndHoldRefreshTime
  1657. * @param DACx DAC instance
  1658. * @param DAC_Channel This parameter can be one of the following values:
  1659. * @arg @ref LL_DAC_CHANNEL_1
  1660. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1661. *
  1662. * (1) On this STM32 series, parameter not available on all instances.
  1663. * Refer to device datasheet for channels availability.
  1664. * @retval Value between Min_Data=0x00 and Max_Data=0xFF
  1665. */
  1666. __STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldRefreshTime(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1667. {
  1668. return (uint32_t)(READ_BIT(DACx->SHRR, DAC_SHRR_TREFRESH1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1669. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  1670. );
  1671. }
  1672. /**
  1673. * @brief Set the signed format for the selected DAC channel.
  1674. * @note On this STM32 series, signed format can be used to inject
  1675. * Q1.15, Q1.11, Q1.7 signed format data to DAC.
  1676. * Ex when using 12bits data format (Q1.11 is used):
  1677. * 0x800 will output 0v level
  1678. * 0xFFF will output mid-scale level
  1679. * 0x000 will output mid-scale level
  1680. * 0x7FF will output full-scale level
  1681. * @rmtoll MCR SINFORMAT1 LL_DAC_SetSignedFormat\n
  1682. * MCR SINFORMAT2 LL_DAC_SetSignedFormat
  1683. * @param DACx DAC instance
  1684. * @param DAC_Channel This parameter can be one of the following values:
  1685. * @arg @ref LL_DAC_CHANNEL_1
  1686. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1687. *
  1688. * (1) On this STM32 series, parameter not available on all instances.
  1689. * Refer to device datasheet for channels availability.
  1690. * @param SignedFormat This parameter can be one of the following values:
  1691. * @arg @ref LL_DAC_SIGNED_FORMAT_ENABLE
  1692. * @arg @ref LL_DAC_SIGNED_FORMAT_DISABLE
  1693. * @retval None
  1694. */
  1695. __STATIC_INLINE void LL_DAC_SetSignedFormat(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t SignedFormat)
  1696. {
  1697. MODIFY_REG(DACx->MCR,
  1698. DAC_MCR_SINFORMAT1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
  1699. SignedFormat << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1700. }
  1701. /**
  1702. * @brief Get the signed format state for the selected DAC channel.
  1703. * @rmtoll MCR SINFORMAT1 LL_DAC_GetSignedFormat\n
  1704. * MCR SINFORMAT2 LL_DAC_GetSignedFormat
  1705. * @param DACx DAC instance
  1706. * @param DAC_Channel This parameter can be one of the following values:
  1707. * @arg @ref LL_DAC_CHANNEL_1
  1708. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1709. *
  1710. * (1) On this STM32 series, parameter not available on all instances.
  1711. * Refer to device datasheet for channels availability.
  1712. * @retval Returned value can be one of the following values:
  1713. * @arg @ref LL_DAC_SIGNED_FORMAT_ENABLE
  1714. * @arg @ref LL_DAC_SIGNED_FORMAT_DISABLE
  1715. */
  1716. __STATIC_INLINE uint32_t LL_DAC_GetSignedFormat(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1717. {
  1718. return (uint32_t)(READ_BIT(DACx->MCR, DAC_MCR_SINFORMAT1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1719. >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
  1720. );
  1721. }
  1722. /**
  1723. * @}
  1724. */
  1725. /** @defgroup DAC_LL_EF_DMA_Management DMA Management
  1726. * @{
  1727. */
  1728. /**
  1729. * @brief Enable DAC DMA transfer request of the selected channel.
  1730. * @note To configure DMA source address (peripheral address),
  1731. * use function @ref LL_DAC_DMA_GetRegAddr().
  1732. * @rmtoll CR DMAEN1 LL_DAC_EnableDMAReq\n
  1733. * CR DMAEN2 LL_DAC_EnableDMAReq
  1734. * @param DACx DAC instance
  1735. * @param DAC_Channel This parameter can be one of the following values:
  1736. * @arg @ref LL_DAC_CHANNEL_1
  1737. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1738. *
  1739. * (1) On this STM32 series, parameter not available on all instances.
  1740. * Refer to device datasheet for channels availability.
  1741. * @retval None
  1742. */
  1743. __STATIC_INLINE void LL_DAC_EnableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1744. {
  1745. SET_BIT(DACx->CR,
  1746. DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1747. }
  1748. /**
  1749. * @brief Disable DAC DMA transfer request of the selected channel.
  1750. * @note To configure DMA source address (peripheral address),
  1751. * use function @ref LL_DAC_DMA_GetRegAddr().
  1752. * @rmtoll CR DMAEN1 LL_DAC_DisableDMAReq\n
  1753. * CR DMAEN2 LL_DAC_DisableDMAReq
  1754. * @param DACx DAC instance
  1755. * @param DAC_Channel This parameter can be one of the following values:
  1756. * @arg @ref LL_DAC_CHANNEL_1
  1757. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1758. *
  1759. * (1) On this STM32 series, parameter not available on all instances.
  1760. * Refer to device datasheet for channels availability.
  1761. * @retval None
  1762. */
  1763. __STATIC_INLINE void LL_DAC_DisableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1764. {
  1765. CLEAR_BIT(DACx->CR,
  1766. DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1767. }
  1768. /**
  1769. * @brief Get DAC DMA transfer request state of the selected channel.
  1770. * (0: DAC DMA transfer request is disabled, 1: DAC DMA transfer request is enabled)
  1771. * @rmtoll CR DMAEN1 LL_DAC_IsDMAReqEnabled\n
  1772. * CR DMAEN2 LL_DAC_IsDMAReqEnabled
  1773. * @param DACx DAC instance
  1774. * @param DAC_Channel This parameter can be one of the following values:
  1775. * @arg @ref LL_DAC_CHANNEL_1
  1776. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1777. *
  1778. * (1) On this STM32 series, parameter not available on all instances.
  1779. * Refer to device datasheet for channels availability.
  1780. * @retval State of bit (1 or 0).
  1781. */
  1782. __STATIC_INLINE uint32_t LL_DAC_IsDMAReqEnabled(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1783. {
  1784. return ((READ_BIT(DACx->CR,
  1785. DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1786. == (DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL);
  1787. }
  1788. /**
  1789. * @brief Enable DAC DMA Double data mode of the selected channel.
  1790. * @rmtoll MCR DMADOUBLE1 LL_DAC_EnableDMADoubleDataMode\n
  1791. * MCR DMADOUBLE2 LL_DAC_EnableDMADoubleDataMode
  1792. * @param DACx DAC instance
  1793. * @param DAC_Channel This parameter can be one of the following values:
  1794. * @arg @ref LL_DAC_CHANNEL_1
  1795. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1796. *
  1797. * (1) On this STM32 series, parameter not available on all instances.
  1798. * Refer to device datasheet for channels availability.
  1799. * @retval None
  1800. */
  1801. __STATIC_INLINE void LL_DAC_EnableDMADoubleDataMode(DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1802. {
  1803. SET_BIT(DACx->MCR,
  1804. DAC_MCR_DMADOUBLE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1805. }
  1806. /**
  1807. * @brief Disable DAC DMA Double data mode of the selected channel.
  1808. * @rmtoll MCR DMADOUBLE1 LL_DAC_DisableDMADoubleDataMode\n
  1809. * MCR DMADOUBLE2 LL_DAC_DisableDMADoubleDataMode
  1810. * @param DACx DAC instance
  1811. * @param DAC_Channel This parameter can be one of the following values:
  1812. * @arg @ref LL_DAC_CHANNEL_1
  1813. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1814. *
  1815. * (1) On this STM32 series, parameter not available on all instances.
  1816. * Refer to device datasheet for channels availability.
  1817. * @retval None
  1818. */
  1819. __STATIC_INLINE void LL_DAC_DisableDMADoubleDataMode(DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1820. {
  1821. CLEAR_BIT(DACx->MCR,
  1822. DAC_MCR_DMADOUBLE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1823. }
  1824. /**
  1825. * @brief Get DAC DMA double data mode state of the selected channel.
  1826. * (0: DAC DMA double data mode is disabled, 1: DAC DMA double data mode is enabled)
  1827. * @rmtoll MCR DMADOUBLE1 LL_DAC_IsDMADoubleDataModeEnabled\n
  1828. * MCR DMADOUBLE2 LL_DAC_IsDMADoubleDataModeEnabled
  1829. * @param DACx DAC instance
  1830. * @param DAC_Channel This parameter can be one of the following values:
  1831. * @arg @ref LL_DAC_CHANNEL_1
  1832. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1833. *
  1834. * (1) On this STM32 series, parameter not available on all instances.
  1835. * Refer to device datasheet for channels availability.
  1836. * @retval State of bit (1 or 0).
  1837. */
  1838. __STATIC_INLINE uint32_t LL_DAC_IsDMADoubleDataModeEnabled(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1839. {
  1840. return ((READ_BIT(DACx->MCR,
  1841. DAC_MCR_DMADOUBLE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1842. == (DAC_MCR_DMADOUBLE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL);
  1843. }
  1844. /**
  1845. * @brief Function to help to configure DMA transfer to DAC: retrieve the
  1846. * DAC register address from DAC instance and a list of DAC registers
  1847. * intended to be used (most commonly) with DMA transfer.
  1848. * @note These DAC registers are data holding registers:
  1849. * when DAC conversion is requested, DAC generates a DMA transfer
  1850. * request to have data available in DAC data holding registers.
  1851. * @note This macro is intended to be used with LL DMA driver, refer to
  1852. * function "LL_DMA_ConfigAddresses()".
  1853. * Example:
  1854. * LL_DMA_ConfigAddresses(DMA1,
  1855. * LL_DMA_CHANNEL_1,
  1856. * (uint32_t)&< array or variable >,
  1857. * LL_DAC_DMA_GetRegAddr(DAC1, LL_DAC_CHANNEL_1,
  1858. * LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED),
  1859. * LL_DMA_DIRECTION_MEMORY_TO_PERIPH);
  1860. * @rmtoll DHR12R1 DACC1DHR LL_DAC_DMA_GetRegAddr\n
  1861. * DHR12L1 DACC1DHR LL_DAC_DMA_GetRegAddr\n
  1862. * DHR8R1 DACC1DHR LL_DAC_DMA_GetRegAddr\n
  1863. * DHR12R2 DACC2DHR LL_DAC_DMA_GetRegAddr\n
  1864. * DHR12L2 DACC2DHR LL_DAC_DMA_GetRegAddr\n
  1865. * DHR8R2 DACC2DHR LL_DAC_DMA_GetRegAddr
  1866. * @param DACx DAC instance
  1867. * @param DAC_Channel This parameter can be one of the following values:
  1868. * @arg @ref LL_DAC_CHANNEL_1
  1869. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1870. *
  1871. * (1) On this STM32 series, parameter not available on all instances.
  1872. * Refer to device datasheet for channels availability.
  1873. * @param Register This parameter can be one of the following values:
  1874. * @arg @ref LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED
  1875. * @arg @ref LL_DAC_DMA_REG_DATA_12BITS_LEFT_ALIGNED
  1876. * @arg @ref LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED
  1877. * @retval DAC register address
  1878. */
  1879. __STATIC_INLINE uint32_t LL_DAC_DMA_GetRegAddr(const DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Register)
  1880. {
  1881. /* Retrieve address of register DHR12Rx, DHR12Lx or DHR8Rx depending on */
  1882. /* DAC channel selected. */
  1883. return ((uint32_t)(__DAC_PTR_REG_OFFSET((DACx)->DHR12R1, ((DAC_Channel >> (Register & 0x1FUL))
  1884. & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0))));
  1885. }
  1886. /**
  1887. * @}
  1888. */
  1889. /** @defgroup DAC_LL_EF_Operation Operation on DAC channels
  1890. * @{
  1891. */
  1892. /**
  1893. * @brief Enable DAC selected channel.
  1894. * @rmtoll CR EN1 LL_DAC_Enable\n
  1895. * CR EN2 LL_DAC_Enable
  1896. * @note After enable from off state, DAC channel requires a delay
  1897. * for output voltage to reach accuracy +/- 1 LSB.
  1898. * Refer to device datasheet, parameter "tWAKEUP".
  1899. * @param DACx DAC instance
  1900. * @param DAC_Channel This parameter can be one of the following values:
  1901. * @arg @ref LL_DAC_CHANNEL_1
  1902. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1903. *
  1904. * (1) On this STM32 series, parameter not available on all instances.
  1905. * Refer to device datasheet for channels availability.
  1906. * @retval None
  1907. */
  1908. __STATIC_INLINE void LL_DAC_Enable(DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1909. {
  1910. SET_BIT(DACx->CR,
  1911. DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1912. }
  1913. /**
  1914. * @brief Disable DAC selected channel.
  1915. * @rmtoll CR EN1 LL_DAC_Disable\n
  1916. * CR EN2 LL_DAC_Disable
  1917. * @param DACx DAC instance
  1918. * @param DAC_Channel This parameter can be one of the following values:
  1919. * @arg @ref LL_DAC_CHANNEL_1
  1920. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1921. *
  1922. * (1) On this STM32 series, parameter not available on all instances.
  1923. * Refer to device datasheet for channels availability.
  1924. * @retval None
  1925. */
  1926. __STATIC_INLINE void LL_DAC_Disable(DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1927. {
  1928. CLEAR_BIT(DACx->CR,
  1929. DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1930. }
  1931. /**
  1932. * @brief Get DAC enable state of the selected channel.
  1933. * (0: DAC channel is disabled, 1: DAC channel is enabled)
  1934. * @rmtoll CR EN1 LL_DAC_IsEnabled\n
  1935. * CR EN2 LL_DAC_IsEnabled
  1936. * @param DACx DAC instance
  1937. * @param DAC_Channel This parameter can be one of the following values:
  1938. * @arg @ref LL_DAC_CHANNEL_1
  1939. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1940. *
  1941. * (1) On this STM32 series, parameter not available on all instances.
  1942. * Refer to device datasheet for channels availability.
  1943. * @retval State of bit (1 or 0).
  1944. */
  1945. __STATIC_INLINE uint32_t LL_DAC_IsEnabled(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1946. {
  1947. return ((READ_BIT(DACx->CR,
  1948. DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1949. == (DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL);
  1950. }
  1951. /**
  1952. * @brief Get DAC ready for conversion state of the selected channel.
  1953. * (0: DAC channel is not ready, 1: DAC channel is ready)
  1954. * @rmtoll SR DAC1RDY LL_DAC_IsReady\n
  1955. * SR DAC2RDY LL_DAC_IsReady
  1956. * @param DACx DAC instance
  1957. * @param DAC_Channel This parameter can be one of the following values:
  1958. * @arg @ref LL_DAC_CHANNEL_1
  1959. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1960. *
  1961. * (1) On this STM32 series, parameter not available on all instances.
  1962. * Refer to device datasheet for channels availability.
  1963. * @retval State of bit (1 or 0).
  1964. */
  1965. __STATIC_INLINE uint32_t LL_DAC_IsReady(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1966. {
  1967. return ((READ_BIT(DACx->SR,
  1968. DAC_SR_DAC1RDY << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  1969. == (DAC_SR_DAC1RDY << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL);
  1970. }
  1971. /**
  1972. * @brief Enable DAC trigger of the selected channel.
  1973. * @note - If DAC trigger is disabled, DAC conversion is performed
  1974. * automatically once the data holding register is updated,
  1975. * using functions "LL_DAC_ConvertData{8; 12}{Right; Left} Aligned()":
  1976. * @ref LL_DAC_ConvertData12RightAligned(), ...
  1977. * - If DAC trigger is enabled, DAC conversion is performed
  1978. * only when a hardware of software trigger event is occurring.
  1979. * Select trigger source using
  1980. * function @ref LL_DAC_SetTriggerSource().
  1981. * @rmtoll CR TEN1 LL_DAC_EnableTrigger\n
  1982. * CR TEN2 LL_DAC_EnableTrigger
  1983. * @param DACx DAC instance
  1984. * @param DAC_Channel This parameter can be one of the following values:
  1985. * @arg @ref LL_DAC_CHANNEL_1
  1986. * @arg @ref LL_DAC_CHANNEL_2 (1)
  1987. *
  1988. * (1) On this STM32 series, parameter not available on all instances.
  1989. * Refer to device datasheet for channels availability.
  1990. * @retval None
  1991. */
  1992. __STATIC_INLINE void LL_DAC_EnableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel)
  1993. {
  1994. SET_BIT(DACx->CR,
  1995. DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  1996. }
  1997. /**
  1998. * @brief Disable DAC trigger of the selected channel.
  1999. * @rmtoll CR TEN1 LL_DAC_DisableTrigger\n
  2000. * CR TEN2 LL_DAC_DisableTrigger
  2001. * @param DACx DAC instance
  2002. * @param DAC_Channel This parameter can be one of the following values:
  2003. * @arg @ref LL_DAC_CHANNEL_1
  2004. * @arg @ref LL_DAC_CHANNEL_2 (1)
  2005. *
  2006. * (1) On this STM32 series, parameter not available on all instances.
  2007. * Refer to device datasheet for channels availability.
  2008. * @retval None
  2009. */
  2010. __STATIC_INLINE void LL_DAC_DisableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel)
  2011. {
  2012. CLEAR_BIT(DACx->CR,
  2013. DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
  2014. }
  2015. /**
  2016. * @brief Get DAC trigger state of the selected channel.
  2017. * (0: DAC trigger is disabled, 1: DAC trigger is enabled)
  2018. * @rmtoll CR TEN1 LL_DAC_IsTriggerEnabled\n
  2019. * CR TEN2 LL_DAC_IsTriggerEnabled
  2020. * @param DACx DAC instance
  2021. * @param DAC_Channel This parameter can be one of the following values:
  2022. * @arg @ref LL_DAC_CHANNEL_1
  2023. * @arg @ref LL_DAC_CHANNEL_2 (1)
  2024. *
  2025. * (1) On this STM32 series, parameter not available on all instances.
  2026. * Refer to device datasheet for channels availability.
  2027. * @retval State of bit (1 or 0).
  2028. */
  2029. __STATIC_INLINE uint32_t LL_DAC_IsTriggerEnabled(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  2030. {
  2031. return ((READ_BIT(DACx->CR,
  2032. DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
  2033. == (DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL);
  2034. }
  2035. /**
  2036. * @brief Trig DAC conversion by software for the selected DAC channel.
  2037. * @note Preliminarily, DAC trigger must be set to software trigger
  2038. * using function
  2039. * @ref LL_DAC_Init()
  2040. * @ref LL_DAC_SetTriggerSource()
  2041. * @ref LL_DAC_SetWaveSawtoothResetTriggerSource() (1)
  2042. * with parameter "LL_DAC_TRIGGER_SOFTWARE".
  2043. * and DAC trigger must be enabled using
  2044. * function @ref LL_DAC_EnableTrigger().
  2045. *
  2046. * (1) In case, Sawtooth wave generation has been configured.
  2047. * @note For devices featuring DAC with 2 channels: this function
  2048. * can perform a SW start of both DAC channels simultaneously.
  2049. * Two channels can be selected as parameter.
  2050. * Example: (LL_DAC_CHANNEL_1 | LL_DAC_CHANNEL_2)
  2051. * @rmtoll SWTRIGR SWTRIG1 LL_DAC_TrigSWConversion\n
  2052. * SWTRIGR SWTRIG2 LL_DAC_TrigSWConversion
  2053. * @param DACx DAC instance
  2054. * @param DAC_Channel This parameter can a combination of the following values:
  2055. * @arg @ref LL_DAC_CHANNEL_1
  2056. * @arg @ref LL_DAC_CHANNEL_2 (1)
  2057. *
  2058. * (1) On this STM32 series, parameter not available on all instances.
  2059. * Refer to device datasheet for channels availability.
  2060. * @retval None
  2061. */
  2062. __STATIC_INLINE void LL_DAC_TrigSWConversion(DAC_TypeDef *DACx, uint32_t DAC_Channel)
  2063. {
  2064. SET_BIT(DACx->SWTRIGR,
  2065. (DAC_Channel & DAC_SWTR_CHX_MASK));
  2066. }
  2067. /**
  2068. * @brief Trig DAC conversion by secondary software trigger for the selected DAC channel.
  2069. * @note Preliminarily, DAC secondary trigger must be set to software trigger
  2070. * using function
  2071. * @ref LL_DAC_Init()
  2072. * @ref LL_DAC_SetWaveSawtoothStepTriggerSource() (1)
  2073. * with parameter "LL_DAC_TRIGGER_SOFTWARE".
  2074. * and DAC trigger must be enabled using
  2075. * function @ref LL_DAC_EnableTrigger().
  2076. *
  2077. * (1) In case, Sawtooth wave generation has been configured.
  2078. * @note For devices featuring DAC with 2 channels: this function
  2079. * can perform a SW start of both DAC channels simultaneously.
  2080. * Two channels can be selected as parameter.
  2081. * Example: (LL_DAC_CHANNEL_1 | LL_DAC_CHANNEL_2)
  2082. * @rmtoll SWTRIGR SWTRIGB1 LL_DAC_TrigSWConversion2\n
  2083. * SWTRIGR SWTRIGB2 LL_DAC_TrigSWConversion2
  2084. * @param DACx DAC instance
  2085. * @param DAC_Channel This parameter can a combination of the following values:
  2086. * @arg @ref LL_DAC_CHANNEL_1
  2087. * @arg @ref LL_DAC_CHANNEL_2 (1)
  2088. *
  2089. * (1) On this STM32 series, parameter not available on all instances.
  2090. * Refer to device datasheet for channels availability.
  2091. * @retval None
  2092. */
  2093. __STATIC_INLINE void LL_DAC_TrigSWConversion2(DAC_TypeDef *DACx, uint32_t DAC_Channel)
  2094. {
  2095. SET_BIT(DACx->SWTRIGR,
  2096. (DAC_Channel & DAC_SWTRB_CHX_MASK));
  2097. }
  2098. /**
  2099. * @brief Set the data to be loaded in the data holding register
  2100. * in format 12 bits left alignment (LSB aligned on bit 0),
  2101. * for the selected DAC channel.
  2102. * @rmtoll DHR12R1 DACC1DHR LL_DAC_ConvertData12RightAligned\n
  2103. * DHR12R2 DACC2DHR LL_DAC_ConvertData12RightAligned
  2104. * @param DACx DAC instance
  2105. * @param DAC_Channel This parameter can be one of the following values:
  2106. * @arg @ref LL_DAC_CHANNEL_1
  2107. * @arg @ref LL_DAC_CHANNEL_2 (1)
  2108. *
  2109. * (1) On this STM32 series, parameter not available on all instances.
  2110. * Refer to device datasheet for channels availability.
  2111. * @param Data Value between Min_Data=0x000 and Max_Data=0xFFF
  2112. * @retval None
  2113. */
  2114. __STATIC_INLINE void LL_DAC_ConvertData12RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
  2115. {
  2116. __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS)
  2117. & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0);
  2118. MODIFY_REG(*preg, DAC_DHR12R1_DACC1DHR, Data);
  2119. }
  2120. /**
  2121. * @brief Set the data to be loaded in the data holding register
  2122. * in format 12 bits left alignment (MSB aligned on bit 15),
  2123. * for the selected DAC channel.
  2124. * @rmtoll DHR12L1 DACC1DHR LL_DAC_ConvertData12LeftAligned\n
  2125. * DHR12L2 DACC2DHR LL_DAC_ConvertData12LeftAligned
  2126. * @param DACx DAC instance
  2127. * @param DAC_Channel This parameter can be one of the following values:
  2128. * @arg @ref LL_DAC_CHANNEL_1
  2129. * @arg @ref LL_DAC_CHANNEL_2 (1)
  2130. *
  2131. * (1) On this STM32 series, parameter not available on all instances.
  2132. * Refer to device datasheet for channels availability.
  2133. * @param Data Value between Min_Data=0x000 and Max_Data=0xFFF
  2134. * @retval None
  2135. */
  2136. __STATIC_INLINE void LL_DAC_ConvertData12LeftAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
  2137. {
  2138. __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS)
  2139. & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0);
  2140. MODIFY_REG(*preg, DAC_DHR12L1_DACC1DHR, Data);
  2141. }
  2142. /**
  2143. * @brief Set the data to be loaded in the data holding register
  2144. * in format 8 bits left alignment (LSB aligned on bit 0),
  2145. * for the selected DAC channel.
  2146. * @rmtoll DHR8R1 DACC1DHR LL_DAC_ConvertData8RightAligned\n
  2147. * DHR8R2 DACC2DHR LL_DAC_ConvertData8RightAligned
  2148. * @param DACx DAC instance
  2149. * @param DAC_Channel This parameter can be one of the following values:
  2150. * @arg @ref LL_DAC_CHANNEL_1
  2151. * @arg @ref LL_DAC_CHANNEL_2 (1)
  2152. *
  2153. * (1) On this STM32 series, parameter not available on all instances.
  2154. * Refer to device datasheet for channels availability.
  2155. * @param Data Value between Min_Data=0x00 and Max_Data=0xFF
  2156. * @retval None
  2157. */
  2158. __STATIC_INLINE void LL_DAC_ConvertData8RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
  2159. {
  2160. __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS)
  2161. & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0);
  2162. MODIFY_REG(*preg, DAC_DHR8R1_DACC1DHR, Data);
  2163. }
  2164. /**
  2165. * @brief Set the data to be loaded in the data holding register
  2166. * in format 12 bits left alignment (LSB aligned on bit 0),
  2167. * for both DAC channels.
  2168. * @rmtoll DHR12RD DACC1DHR LL_DAC_ConvertDualData12RightAligned\n
  2169. * DHR12RD DACC2DHR LL_DAC_ConvertDualData12RightAligned
  2170. * @param DACx DAC instance
  2171. * @param DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF
  2172. * @param DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF
  2173. * @retval None
  2174. */
  2175. __STATIC_INLINE void LL_DAC_ConvertDualData12RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1,
  2176. uint32_t DataChannel2)
  2177. {
  2178. MODIFY_REG(DACx->DHR12RD,
  2179. (DAC_DHR12RD_DACC2DHR | DAC_DHR12RD_DACC1DHR),
  2180. ((DataChannel2 << DAC_DHR12RD_DACC2DHR_BITOFFSET_POS) | DataChannel1));
  2181. }
  2182. /**
  2183. * @brief Set the data to be loaded in the data holding register
  2184. * in format 12 bits left alignment (MSB aligned on bit 15),
  2185. * for both DAC channels.
  2186. * @rmtoll DHR12LD DACC1DHR LL_DAC_ConvertDualData12LeftAligned\n
  2187. * DHR12LD DACC2DHR LL_DAC_ConvertDualData12LeftAligned
  2188. * @param DACx DAC instance
  2189. * @param DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF
  2190. * @param DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF
  2191. * @retval None
  2192. */
  2193. __STATIC_INLINE void LL_DAC_ConvertDualData12LeftAligned(DAC_TypeDef *DACx, uint32_t DataChannel1,
  2194. uint32_t DataChannel2)
  2195. {
  2196. /* Note: Data of DAC channel 2 shift value subtracted of 4 because */
  2197. /* data on 16 bits and DAC channel 2 bits field is on the 12 MSB, */
  2198. /* the 4 LSB must be taken into account for the shift value. */
  2199. MODIFY_REG(DACx->DHR12LD,
  2200. (DAC_DHR12LD_DACC2DHR | DAC_DHR12LD_DACC1DHR),
  2201. ((DataChannel2 << (DAC_DHR12LD_DACC2DHR_BITOFFSET_POS - 4U)) | DataChannel1));
  2202. }
  2203. /**
  2204. * @brief Set the data to be loaded in the data holding register
  2205. * in format 8 bits left alignment (LSB aligned on bit 0),
  2206. * for both DAC channels.
  2207. * @rmtoll DHR8RD DACC1DHR LL_DAC_ConvertDualData8RightAligned\n
  2208. * DHR8RD DACC2DHR LL_DAC_ConvertDualData8RightAligned
  2209. * @param DACx DAC instance
  2210. * @param DataChannel1 Value between Min_Data=0x00 and Max_Data=0xFF
  2211. * @param DataChannel2 Value between Min_Data=0x00 and Max_Data=0xFF
  2212. * @retval None
  2213. */
  2214. __STATIC_INLINE void LL_DAC_ConvertDualData8RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1,
  2215. uint32_t DataChannel2)
  2216. {
  2217. MODIFY_REG(DACx->DHR8RD,
  2218. (DAC_DHR8RD_DACC2DHR | DAC_DHR8RD_DACC1DHR),
  2219. ((DataChannel2 << DAC_DHR8RD_DACC2DHR_BITOFFSET_POS) | DataChannel1));
  2220. }
  2221. /**
  2222. * @brief Retrieve output data currently generated for the selected DAC channel.
  2223. * @note Whatever alignment and resolution settings
  2224. * (using functions "LL_DAC_ConvertData{8; 12}{Right; Left} Aligned()":
  2225. * @ref LL_DAC_ConvertData12RightAligned(), ...),
  2226. * output data format is 12 bits right aligned (LSB aligned on bit 0).
  2227. * @rmtoll DOR1 DACC1DOR LL_DAC_RetrieveOutputData\n
  2228. * DOR2 DACC2DOR LL_DAC_RetrieveOutputData
  2229. * @param DACx DAC instance
  2230. * @param DAC_Channel This parameter can be one of the following values:
  2231. * @arg @ref LL_DAC_CHANNEL_1
  2232. * @arg @ref LL_DAC_CHANNEL_2 (1)
  2233. *
  2234. * (1) On this STM32 series, parameter not available on all instances.
  2235. * Refer to device datasheet for channels availability.
  2236. * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
  2237. */
  2238. __STATIC_INLINE uint32_t LL_DAC_RetrieveOutputData(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
  2239. {
  2240. __IO uint32_t const *preg = __DAC_PTR_REG_OFFSET(DACx->DOR1, (DAC_Channel >> DAC_REG_DORX_REGOFFSET_BITOFFSET_POS)
  2241. & DAC_REG_DORX_REGOFFSET_MASK_POSBIT0);
  2242. return (uint16_t) READ_BIT(*preg, DAC_DOR1_DACC1DOR);
  2243. }
  2244. /**
  2245. * @}
  2246. */
  2247. /** @defgroup DAC_LL_EF_FLAG_Management FLAG Management
  2248. * @{
  2249. */
  2250. /**
  2251. * @brief Get DAC calibration offset flag for DAC channel 1
  2252. * @rmtoll SR CAL_FLAG1 LL_DAC_IsActiveFlag_CAL1
  2253. * @param DACx DAC instance
  2254. * @retval State of bit (1 or 0).
  2255. */
  2256. __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_CAL1(const DAC_TypeDef *DACx)
  2257. {
  2258. return ((READ_BIT(DACx->SR, LL_DAC_FLAG_CAL1) == (LL_DAC_FLAG_CAL1)) ? 1UL : 0UL);
  2259. }
  2260. /**
  2261. * @brief Get DAC calibration offset flag for DAC channel 2
  2262. * @rmtoll SR CAL_FLAG2 LL_DAC_IsActiveFlag_CAL2
  2263. * @param DACx DAC instance
  2264. * @retval State of bit (1 or 0).
  2265. */
  2266. __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_CAL2(const DAC_TypeDef *DACx)
  2267. {
  2268. return ((READ_BIT(DACx->SR, LL_DAC_FLAG_CAL2) == (LL_DAC_FLAG_CAL2)) ? 1UL : 0UL);
  2269. }
  2270. /**
  2271. * @brief Get DAC busy writing sample time flag for DAC channel 1
  2272. * @rmtoll SR BWST1 LL_DAC_IsActiveFlag_BWST1
  2273. * @param DACx DAC instance
  2274. * @retval State of bit (1 or 0).
  2275. */
  2276. __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_BWST1(const DAC_TypeDef *DACx)
  2277. {
  2278. return ((READ_BIT(DACx->SR, LL_DAC_FLAG_BWST1) == (LL_DAC_FLAG_BWST1)) ? 1UL : 0UL);
  2279. }
  2280. /**
  2281. * @brief Get DAC busy writing sample time flag for DAC channel 2
  2282. * @rmtoll SR BWST2 LL_DAC_IsActiveFlag_BWST2
  2283. * @param DACx DAC instance
  2284. * @retval State of bit (1 or 0).
  2285. */
  2286. __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_BWST2(const DAC_TypeDef *DACx)
  2287. {
  2288. return ((READ_BIT(DACx->SR, LL_DAC_FLAG_BWST2) == (LL_DAC_FLAG_BWST2)) ? 1UL : 0UL);
  2289. }
  2290. /**
  2291. * @brief Get DAC ready status flag for DAC channel 1
  2292. * @rmtoll SR DAC1RDY LL_DAC_IsActiveFlag_DAC1RDY
  2293. * @param DACx DAC instance
  2294. * @retval State of bit (1 or 0).
  2295. */
  2296. __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DAC1RDY(const DAC_TypeDef *DACx)
  2297. {
  2298. return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DAC1RDY) == (LL_DAC_FLAG_DAC1RDY)) ? 1UL : 0UL);
  2299. }
  2300. /**
  2301. * @brief Get DAC ready status flag for DAC channel 2
  2302. * @rmtoll SR DAC2RDY LL_DAC_IsActiveFlag_DAC2RDY
  2303. * @param DACx DAC instance
  2304. * @retval State of bit (1 or 0).
  2305. */
  2306. __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DAC2RDY(const DAC_TypeDef *DACx)
  2307. {
  2308. return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DAC2RDY) == (LL_DAC_FLAG_DAC2RDY)) ? 1UL : 0UL);
  2309. }
  2310. /**
  2311. * @brief Get DAC output register status flag for DAC channel 1
  2312. * @rmtoll SR DORSTAT1 LL_DAC_IsActiveFlag_DORSTAT1
  2313. * @param DACx DAC instance
  2314. * @retval State of bit (1 or 0).
  2315. */
  2316. __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DORSTAT1(const DAC_TypeDef *DACx)
  2317. {
  2318. return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DORSTAT1) == (LL_DAC_FLAG_DORSTAT1)) ? 1UL : 0UL);
  2319. }
  2320. /**
  2321. * @brief Get DAC output register status flag for DAC channel 2
  2322. * @rmtoll SR DORSTAT2 LL_DAC_IsActiveFlag_DORSTAT2
  2323. * @param DACx DAC instance
  2324. * @retval State of bit (1 or 0).
  2325. */
  2326. __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DORSTAT2(const DAC_TypeDef *DACx)
  2327. {
  2328. return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DORSTAT2) == (LL_DAC_FLAG_DORSTAT2)) ? 1UL : 0UL);
  2329. }
  2330. /**
  2331. * @brief Get DAC underrun flag for DAC channel 1
  2332. * @rmtoll SR DMAUDR1 LL_DAC_IsActiveFlag_DMAUDR1
  2333. * @param DACx DAC instance
  2334. * @retval State of bit (1 or 0).
  2335. */
  2336. __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR1(const DAC_TypeDef *DACx)
  2337. {
  2338. return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR1) == (LL_DAC_FLAG_DMAUDR1)) ? 1UL : 0UL);
  2339. }
  2340. /**
  2341. * @brief Get DAC underrun flag for DAC channel 2
  2342. * @rmtoll SR DMAUDR2 LL_DAC_IsActiveFlag_DMAUDR2
  2343. * @param DACx DAC instance
  2344. * @retval State of bit (1 or 0).
  2345. */
  2346. __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR2(const DAC_TypeDef *DACx)
  2347. {
  2348. return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR2) == (LL_DAC_FLAG_DMAUDR2)) ? 1UL : 0UL);
  2349. }
  2350. /**
  2351. * @brief Clear DAC underrun flag for DAC channel 1
  2352. * @rmtoll SR DMAUDR1 LL_DAC_ClearFlag_DMAUDR1
  2353. * @param DACx DAC instance
  2354. * @retval None
  2355. */
  2356. __STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR1(DAC_TypeDef *DACx)
  2357. {
  2358. WRITE_REG(DACx->SR, LL_DAC_FLAG_DMAUDR1);
  2359. }
  2360. /**
  2361. * @brief Clear DAC underrun flag for DAC channel 2
  2362. * @rmtoll SR DMAUDR2 LL_DAC_ClearFlag_DMAUDR2
  2363. * @param DACx DAC instance
  2364. * @retval None
  2365. */
  2366. __STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR2(DAC_TypeDef *DACx)
  2367. {
  2368. WRITE_REG(DACx->SR, LL_DAC_FLAG_DMAUDR2);
  2369. }
  2370. /**
  2371. * @}
  2372. */
  2373. /** @defgroup DAC_LL_EF_IT_Management IT management
  2374. * @{
  2375. */
  2376. /**
  2377. * @brief Enable DMA underrun interrupt for DAC channel 1
  2378. * @rmtoll CR DMAUDRIE1 LL_DAC_EnableIT_DMAUDR1
  2379. * @param DACx DAC instance
  2380. * @retval None
  2381. */
  2382. __STATIC_INLINE void LL_DAC_EnableIT_DMAUDR1(DAC_TypeDef *DACx)
  2383. {
  2384. SET_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1);
  2385. }
  2386. /**
  2387. * @brief Enable DMA underrun interrupt for DAC channel 2
  2388. * @rmtoll CR DMAUDRIE2 LL_DAC_EnableIT_DMAUDR2
  2389. * @param DACx DAC instance
  2390. * @retval None
  2391. */
  2392. __STATIC_INLINE void LL_DAC_EnableIT_DMAUDR2(DAC_TypeDef *DACx)
  2393. {
  2394. SET_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2);
  2395. }
  2396. /**
  2397. * @brief Disable DMA underrun interrupt for DAC channel 1
  2398. * @rmtoll CR DMAUDRIE1 LL_DAC_DisableIT_DMAUDR1
  2399. * @param DACx DAC instance
  2400. * @retval None
  2401. */
  2402. __STATIC_INLINE void LL_DAC_DisableIT_DMAUDR1(DAC_TypeDef *DACx)
  2403. {
  2404. CLEAR_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1);
  2405. }
  2406. /**
  2407. * @brief Disable DMA underrun interrupt for DAC channel 2
  2408. * @rmtoll CR DMAUDRIE2 LL_DAC_DisableIT_DMAUDR2
  2409. * @param DACx DAC instance
  2410. * @retval None
  2411. */
  2412. __STATIC_INLINE void LL_DAC_DisableIT_DMAUDR2(DAC_TypeDef *DACx)
  2413. {
  2414. CLEAR_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2);
  2415. }
  2416. /**
  2417. * @brief Get DMA underrun interrupt for DAC channel 1
  2418. * @rmtoll CR DMAUDRIE1 LL_DAC_IsEnabledIT_DMAUDR1
  2419. * @param DACx DAC instance
  2420. * @retval State of bit (1 or 0).
  2421. */
  2422. __STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR1(const DAC_TypeDef *DACx)
  2423. {
  2424. return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1) == (LL_DAC_IT_DMAUDRIE1)) ? 1UL : 0UL);
  2425. }
  2426. /**
  2427. * @brief Get DMA underrun interrupt for DAC channel 2
  2428. * @rmtoll CR DMAUDRIE2 LL_DAC_IsEnabledIT_DMAUDR2
  2429. * @param DACx DAC instance
  2430. * @retval State of bit (1 or 0).
  2431. */
  2432. __STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR2(const DAC_TypeDef *DACx)
  2433. {
  2434. return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2) == (LL_DAC_IT_DMAUDRIE2)) ? 1UL : 0UL);
  2435. }
  2436. /**
  2437. * @}
  2438. */
  2439. #if defined(USE_FULL_LL_DRIVER)
  2440. /** @defgroup DAC_LL_EF_Init Initialization and de-initialization functions
  2441. * @{
  2442. */
  2443. ErrorStatus LL_DAC_DeInit(const DAC_TypeDef *DACx);
  2444. ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, const LL_DAC_InitTypeDef *DAC_InitStruct);
  2445. void LL_DAC_StructInit(LL_DAC_InitTypeDef *DAC_InitStruct);
  2446. /**
  2447. * @}
  2448. */
  2449. #endif /* USE_FULL_LL_DRIVER */
  2450. /**
  2451. * @}
  2452. */
  2453. /**
  2454. * @}
  2455. */
  2456. #endif /* DAC1 || DAC2 || DAC3 || DAC4 */
  2457. /**
  2458. * @}
  2459. */
  2460. #ifdef __cplusplus
  2461. }
  2462. #endif
  2463. #endif /* STM32G4xx_LL_DAC_H */