libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
dac_common.c
Go to the documentation of this file.
1/** @addtogroup dac_file DAC peripheral API
2 * @ingroup peripheral_apis
3 */
4/*
5 * This file is part of the libopencm3 project.
6 *
7 * Copyright (C) 2015 Kuldeep Singh Dhaka <kuldeepdhaka9@gmail.com>
8 *
9 * This library is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU Lesser General Public License as published by
11 * the Free Software Foundation, either version 3 of the License, or
12 * (at your option) any later version.
13 *
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY
16{
17
18} without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU Lesser General Public License for more details.
21 *
22 * You should have received a copy of the GNU Lesser General Public License
23 * along with this library. If not, see <http://www.gnu.org/licenses/>.
24 */
25
27
28/**@{*/
29
30/**
31 * Set DAC refresh cycle
32 * @param[in] dac DAC (use DACx)
33 * @param[in] refrsel (use DAC_CTRL_REFRSEL_*CYCLES)
34 * @see dac_disable_auto_refresh()
35 * @see dac_enable_auto_refresh()
36 */
37void dac_set_refresh_cycle(uint32_t dac, uint32_t refrsel)
38{
39 DAC_CTRL(dac) = (DAC_CTRL(dac) & ~DAC_CTRL_REFRSEL_MASK) | refrsel;
40}
41
42/**
43 * Set DAC clock prescaler
44 * @param[in] dac DAC (use DACx)
45 * @param[in] presc Prescaler (use DAC_CTRL_PRESC_*)
46 */
47void dac_set_clock_prescaler(uint32_t dac, uint32_t presc)
48{
49 DAC_CTRL(dac) = (DAC_CTRL(dac) & ~DAC_CTRL_PRESC_MASK) | presc;
50}
51
52/**
53 * Set DAC reference
54 * @param[in] dac DAC (use DACx)
55 * @param[in] refsel Reference (DAC_CTRL_REFSEL_*)
56 */
57void dac_set_reference(uint32_t dac, uint32_t refsel)
58{
59 DAC_CTRL(dac) = (DAC_CTRL(dac) & ~DAC_CTRL_REFSEL_MASK) | refsel;
60}
61
62/**
63 * Set DAC output mode
64 * @param[in] dac DAC (use DACx)
65 * @param[in] outmode Output mode (DAC_CTRL_OUTMODE_*)
66 */
67void dac_set_out_mode(uint32_t dac, uint32_t outmode)
68{
69 DAC_CTRL(dac) = (DAC_CTRL(dac) & ~DAC_CTRL_OUTMODE_MASK) | outmode;
70}
71
72/**
73 * Set conversion mode
74 * @param[in] dac DAC (use DACx)
75 * @param[in] convmode Conversion mode (use DAC_CTRL_CONVMODE_*)
76 */
77void dac_set_conversion_mode(uint32_t dac, uint32_t convmode)
78{
79 DAC_CTRL(dac) = (DAC_CTRL(dac) & ~DAC_CTRL_CONVMODE_MASK) | convmode;
80}
81
82/**
83 * Enable Sine wave on output
84 * @param[in] dac DAC (use DACx)
85 */
86void dac_enable_sine(uint32_t dac)
87{
89}
90
91/**
92 * Disable Sine wave on output
93 * @param[in] dac DAC (use DACx)
94 */
95void dac_disable_sine(uint32_t dac)
96{
97 DAC_CTRL(dac) &= ~DAC_CTRL_SINMODE;
98}
99
100/**
101 * Set PRS trigger source on DAC channel
102 * @param[in] dac DAC (use DACx)
103 * @param[in] dac_chan DAC Channel (use DAC_CHx)
104 * @param[in] prs_chan PRS Channel (use PRS_CHx)
105 */
106void dac_set_prs_trigger(uint32_t dac, enum dac_ch dac_chan,
107 enum prs_ch prs_chan)
108{
109 uint32_t ch_ctrl = DAC_CHx_CTRL(dac, dac_chan);
110 ch_ctrl &= DAC_CH_CTRL_PRSSEL_MASK;
111 ch_ctrl |= DAC_CH_CTRL_PRSSEL(prs_chan);
112 DAC_CHx_CTRL(dac, dac_chan) = ch_ctrl;
113}
114
115/**
116 * Enable PRS triggerring
117 * @param[in] dac DAC (use DACx)
118 * @param[in] ch DAC Channel (use DAC_CHx)
119 */
120void dac_enable_prs_trigger(uint32_t dac, enum dac_ch ch)
121{
123}
124
125/**
126 * Disable PRS triggerring
127 * @param[in] dac DAC (use DACx)
128 * @param[in] ch DAC Channel (use DAC_CHx)
129 */
130void dac_disable_prs_trigger(uint32_t dac, enum dac_ch ch)
131{
132 DAC_CHx_CTRL(dac, ch) &= ~DAC_CH_CTRL_PRSEN;
133}
134
135/**
136 * Enable auto refresh
137 * @param[in] dac DAC (use DACx)
138 * @param[in] ch DAC Channel (use DAC_CHx)
139 */
140void dac_enable_auto_refresh(uint32_t dac, enum dac_ch ch)
141{
143}
144
145/**
146 * Disable auto refresh
147 * @param[in] dac DAC (use DACx)
148 * @param[in] ch DAC Channel (use DAC_CHx)
149 */
150void dac_disable_auto_refresh(uint32_t dac, enum dac_ch ch)
151{
152 DAC_CHx_CTRL(dac, ch) &= ~DAC_CH_CTRL_REFREN;
153}
154
155/**
156 * Enable channel
157 * @param[in] dac DAC (use DACx)
158 * @param[in] ch DAC Channel (use DAC_CHx)
159 */
160void dac_enable_channel(uint32_t dac, enum dac_ch ch)
161{
162 DAC_CHx_CTRL(dac, ch) |= DAC_CH_CTRL_EN;
163}
164
165/**
166 * Disable channel
167 * @param[in] dac DAC (use DACx)
168 * @param[in] ch DAC Channel (use DAC_CHx)
169 */
170void dac_disable_channel(uint32_t dac, enum dac_ch ch)
171{
172 DAC_CHx_CTRL(dac, ch) &= ~DAC_CH_CTRL_REFREN;
173}
174
175/**@}*/
dac_ch
Definition: dac_common.h:486
#define DAC_CH_CTRL_PRSSEL_MASK
Definition: dac_common.h:111
#define DAC_CTRL_SINMODE
Definition: dac_common.h:102
#define DAC_CH_CTRL_PRSSEL(v)
Definition: dac_common.h:112
#define DAC_CH_CTRL_REFREN
Definition: dac_common.h:129
#define DAC_CH_CTRL_EN
Definition: dac_common.h:130
#define DAC_CHx_CTRL(base, x)
Definition: dac_common.h:32
#define DAC_CTRL(base)
Definition: dac_common.h:30
#define DAC_CH_CTRL_PRSEN
Definition: dac_common.h:128
void dac_set_refresh_cycle(uint32_t dac, uint32_t refrsel)
Set DAC refresh cycle.
Definition: dac_common.c:37
void dac_set_clock_prescaler(uint32_t dac, uint32_t presc)
Set DAC clock prescaler.
Definition: dac_common.c:47
void dac_disable_auto_refresh(uint32_t dac, enum dac_ch ch)
Disable auto refresh.
Definition: dac_common.c:150
void dac_set_reference(uint32_t dac, uint32_t refsel)
Set DAC reference.
Definition: dac_common.c:57
void dac_disable_sine(uint32_t dac)
Disable Sine wave on output.
Definition: dac_common.c:95
void dac_enable_sine(uint32_t dac)
Enable Sine wave on output.
Definition: dac_common.c:86
void dac_set_conversion_mode(uint32_t dac, uint32_t convmode)
Set conversion mode.
Definition: dac_common.c:77
void dac_set_out_mode(uint32_t dac, uint32_t outmode)
Set DAC output mode.
Definition: dac_common.c:67
void dac_enable_auto_refresh(uint32_t dac, enum dac_ch ch)
Enable auto refresh.
Definition: dac_common.c:140
void dac_disable_channel(uint32_t dac, enum dac_ch ch)
Disable channel.
Definition: dac_common.c:170
void dac_enable_channel(uint32_t dac, enum dac_ch ch)
Enable channel.
Definition: dac_common.c:160
void dac_disable_prs_trigger(uint32_t dac, enum dac_ch ch)
Disable PRS triggerring.
Definition: dac_common.c:130
void dac_set_prs_trigger(uint32_t dac, enum dac_ch dac_chan, enum prs_ch prs_chan)
Set PRS trigger source on DAC channel.
Definition: dac_common.c:106
void dac_enable_prs_trigger(uint32_t dac, enum dac_ch ch)
Enable PRS triggerring.
Definition: dac_common.c:120
prs_ch
Definition: prs_common.h:331