The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_SAMD21J18A/TARGET_Atmel/TARGET_SAM_CortexM0P/drivers/dac/dac.h@111:4336505e4b1c
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 111:4336505e4b1c 1 /**
Kojto 111:4336505e4b1c 2 * \file
Kojto 111:4336505e4b1c 3 *
Kojto 111:4336505e4b1c 4 * \brief SAM Peripheral Digital-to-Analog Converter Driver
Kojto 111:4336505e4b1c 5 *
Kojto 111:4336505e4b1c 6 * Copyright (C) 2012-2015 Atmel Corporation. All rights reserved.
Kojto 111:4336505e4b1c 7 *
Kojto 111:4336505e4b1c 8 * \asf_license_start
Kojto 111:4336505e4b1c 9 *
Kojto 111:4336505e4b1c 10 * \page License
Kojto 111:4336505e4b1c 11 *
Kojto 111:4336505e4b1c 12 * Redistribution and use in source and binary forms, with or without
Kojto 111:4336505e4b1c 13 * modification, are permitted provided that the following conditions are met:
Kojto 111:4336505e4b1c 14 *
Kojto 111:4336505e4b1c 15 * 1. Redistributions of source code must retain the above copyright notice,
Kojto 111:4336505e4b1c 16 * this list of conditions and the following disclaimer.
Kojto 111:4336505e4b1c 17 *
Kojto 111:4336505e4b1c 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
Kojto 111:4336505e4b1c 19 * this list of conditions and the following disclaimer in the documentation
Kojto 111:4336505e4b1c 20 * and/or other materials provided with the distribution.
Kojto 111:4336505e4b1c 21 *
Kojto 111:4336505e4b1c 22 * 3. The name of Atmel may not be used to endorse or promote products derived
Kojto 111:4336505e4b1c 23 * from this software without specific prior written permission.
Kojto 111:4336505e4b1c 24 *
Kojto 111:4336505e4b1c 25 * 4. This software may only be redistributed and used in connection with an
Kojto 111:4336505e4b1c 26 * Atmel microcontroller product.
Kojto 111:4336505e4b1c 27 *
Kojto 111:4336505e4b1c 28 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
Kojto 111:4336505e4b1c 29 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
Kojto 111:4336505e4b1c 30 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
Kojto 111:4336505e4b1c 31 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
Kojto 111:4336505e4b1c 32 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Kojto 111:4336505e4b1c 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
Kojto 111:4336505e4b1c 34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
Kojto 111:4336505e4b1c 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
Kojto 111:4336505e4b1c 36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
Kojto 111:4336505e4b1c 37 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
Kojto 111:4336505e4b1c 38 * POSSIBILITY OF SUCH DAMAGE.
Kojto 111:4336505e4b1c 39 *
Kojto 111:4336505e4b1c 40 * \asf_license_stop
Kojto 111:4336505e4b1c 41 *
Kojto 111:4336505e4b1c 42 */
Kojto 111:4336505e4b1c 43 /*
Kojto 111:4336505e4b1c 44 * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a>
Kojto 111:4336505e4b1c 45 */
Kojto 111:4336505e4b1c 46 #ifndef DAC_H_INCLUDED
Kojto 111:4336505e4b1c 47 #define DAC_H_INCLUDED
Kojto 111:4336505e4b1c 48
Kojto 111:4336505e4b1c 49
Kojto 111:4336505e4b1c 50 #ifdef __cplusplus
Kojto 111:4336505e4b1c 51 extern "C" {
Kojto 111:4336505e4b1c 52 #endif
Kojto 111:4336505e4b1c 53
Kojto 111:4336505e4b1c 54 #include <compiler.h>
Kojto 111:4336505e4b1c 55 #include <clock.h>
Kojto 111:4336505e4b1c 56 #include <gclk.h>
Kojto 111:4336505e4b1c 57
Kojto 111:4336505e4b1c 58 /**
Kojto 111:4336505e4b1c 59 * \addtogroup asfdoc_sam0_dac_group
Kojto 111:4336505e4b1c 60 *
Kojto 111:4336505e4b1c 61 * @{
Kojto 111:4336505e4b1c 62 */
Kojto 111:4336505e4b1c 63
Kojto 111:4336505e4b1c 64 /**
Kojto 111:4336505e4b1c 65 * Define DAC features set according to different device families.
Kojto 111:4336505e4b1c 66 * @{
Kojto 111:4336505e4b1c 67 */
Kojto 111:4336505e4b1c 68 #if (SAMD21 || SAMD10 || SAMD11 || SAMDA1)
Kojto 111:4336505e4b1c 69 # define FEATURE_DAC_DATABUF_WRITE_PROTECTION
Kojto 111:4336505e4b1c 70 #endif
Kojto 111:4336505e4b1c 71 /**@}*/
Kojto 111:4336505e4b1c 72
Kojto 111:4336505e4b1c 73 #ifndef DAC_TIMEOUT
Kojto 111:4336505e4b1c 74 # define DAC_TIMEOUT 0xFFFF
Kojto 111:4336505e4b1c 75 #endif
Kojto 111:4336505e4b1c 76
Kojto 111:4336505e4b1c 77 #if DAC_CALLBACK_MODE == true
Kojto 111:4336505e4b1c 78 # include <system_interrupt.h>
Kojto 111:4336505e4b1c 79
Kojto 111:4336505e4b1c 80 /** Forward definition of the device instance. */
Kojto 111:4336505e4b1c 81 struct dac_module;
Kojto 111:4336505e4b1c 82
Kojto 111:4336505e4b1c 83 #if !defined(__DOXYGEN__)
Kojto 111:4336505e4b1c 84 extern struct dac_module *_dac_instances[DAC_INST_NUM];
Kojto 111:4336505e4b1c 85 #endif
Kojto 111:4336505e4b1c 86
Kojto 111:4336505e4b1c 87 /** Type definition for a DAC module callback function. */
Kojto 111:4336505e4b1c 88 typedef void (*dac_callback_t)(uint8_t channel);
Kojto 111:4336505e4b1c 89
Kojto 111:4336505e4b1c 90 /** Enum for the possible callback types for the DAC module. */
Kojto 111:4336505e4b1c 91 enum dac_callback {
Kojto 111:4336505e4b1c 92 /** Callback type for when a DAC channel data empty condition occurs
Kojto 111:4336505e4b1c 93 * (requires event triggered mode) */
Kojto 111:4336505e4b1c 94 DAC_CALLBACK_DATA_EMPTY,
Kojto 111:4336505e4b1c 95
Kojto 111:4336505e4b1c 96 /** Callback type for when a DAC channel data underrun condition occurs
Kojto 111:4336505e4b1c 97 * (requires event triggered mode) */
Kojto 111:4336505e4b1c 98 DAC_CALLBACK_DATA_UNDERRUN,
Kojto 111:4336505e4b1c 99
Kojto 111:4336505e4b1c 100 /** Callback type for when a DAC channel write buffer job complete (requires
Kojto 111:4336505e4b1c 101 * event triggered mode) */
Kojto 111:4336505e4b1c 102 DAC_CALLBACK_TRANSFER_COMPLETE,
Kojto 111:4336505e4b1c 103 #if !defined(__DOXYGEN__)
Kojto 111:4336505e4b1c 104 DAC_CALLBACK_N,
Kojto 111:4336505e4b1c 105 #endif
Kojto 111:4336505e4b1c 106 };
Kojto 111:4336505e4b1c 107
Kojto 111:4336505e4b1c 108 #endif
Kojto 111:4336505e4b1c 109
Kojto 111:4336505e4b1c 110 #include <dac_feature.h>
Kojto 111:4336505e4b1c 111
Kojto 111:4336505e4b1c 112 /**
Kojto 111:4336505e4b1c 113 * \name Configuration and Initialization
Kojto 111:4336505e4b1c 114 * @{
Kojto 111:4336505e4b1c 115 */
Kojto 111:4336505e4b1c 116
Kojto 111:4336505e4b1c 117 bool dac_is_syncing(
Kojto 111:4336505e4b1c 118 struct dac_module *const dev_inst);
Kojto 111:4336505e4b1c 119
Kojto 111:4336505e4b1c 120 void dac_get_config_defaults(
Kojto 111:4336505e4b1c 121 struct dac_config *const config);
Kojto 111:4336505e4b1c 122
Kojto 111:4336505e4b1c 123 enum status_code dac_init(
Kojto 111:4336505e4b1c 124 struct dac_module *const dev_inst,
Kojto 111:4336505e4b1c 125 Dac *const module,
Kojto 111:4336505e4b1c 126 struct dac_config *const config);
Kojto 111:4336505e4b1c 127
Kojto 111:4336505e4b1c 128 void dac_reset(
Kojto 111:4336505e4b1c 129 struct dac_module *const dev_inst);
Kojto 111:4336505e4b1c 130
Kojto 111:4336505e4b1c 131 void dac_enable(
Kojto 111:4336505e4b1c 132 struct dac_module *const dev_inst);
Kojto 111:4336505e4b1c 133
Kojto 111:4336505e4b1c 134 void dac_disable(
Kojto 111:4336505e4b1c 135 struct dac_module *const dev_inst);
Kojto 111:4336505e4b1c 136
Kojto 111:4336505e4b1c 137 void dac_enable_events(
Kojto 111:4336505e4b1c 138 struct dac_module *const module_inst,
Kojto 111:4336505e4b1c 139 struct dac_events *const events);
Kojto 111:4336505e4b1c 140
Kojto 111:4336505e4b1c 141 void dac_disable_events(
Kojto 111:4336505e4b1c 142 struct dac_module *const module_inst,
Kojto 111:4336505e4b1c 143 struct dac_events *const events);
Kojto 111:4336505e4b1c 144
Kojto 111:4336505e4b1c 145 /** @} */
Kojto 111:4336505e4b1c 146
Kojto 111:4336505e4b1c 147 /**
Kojto 111:4336505e4b1c 148 * \name Configuration and Initialization (Channel)
Kojto 111:4336505e4b1c 149 * @{
Kojto 111:4336505e4b1c 150 */
Kojto 111:4336505e4b1c 151
Kojto 111:4336505e4b1c 152 void dac_chan_get_config_defaults(
Kojto 111:4336505e4b1c 153 struct dac_chan_config *const config);
Kojto 111:4336505e4b1c 154
Kojto 111:4336505e4b1c 155 void dac_chan_set_config(
Kojto 111:4336505e4b1c 156 struct dac_module *const dev_inst,
Kojto 111:4336505e4b1c 157 const enum dac_channel channel,
Kojto 111:4336505e4b1c 158 struct dac_chan_config *const config);
Kojto 111:4336505e4b1c 159
Kojto 111:4336505e4b1c 160 void dac_chan_enable(
Kojto 111:4336505e4b1c 161 struct dac_module *const dev_inst,
Kojto 111:4336505e4b1c 162 enum dac_channel channel);
Kojto 111:4336505e4b1c 163
Kojto 111:4336505e4b1c 164 void dac_chan_disable(
Kojto 111:4336505e4b1c 165 struct dac_module *const dev_inst,
Kojto 111:4336505e4b1c 166 enum dac_channel channel);
Kojto 111:4336505e4b1c 167
Kojto 111:4336505e4b1c 168 /** @} */
Kojto 111:4336505e4b1c 169
Kojto 111:4336505e4b1c 170 /**
Kojto 111:4336505e4b1c 171 * \name Channel Data Management
Kojto 111:4336505e4b1c 172 * @{
Kojto 111:4336505e4b1c 173 */
Kojto 111:4336505e4b1c 174
Kojto 111:4336505e4b1c 175 enum status_code dac_chan_write(
Kojto 111:4336505e4b1c 176 struct dac_module *const dev_inst,
Kojto 111:4336505e4b1c 177 enum dac_channel channel,
Kojto 111:4336505e4b1c 178 const uint16_t data);
Kojto 111:4336505e4b1c 179
Kojto 111:4336505e4b1c 180 enum status_code dac_chan_write_buffer_wait(
Kojto 111:4336505e4b1c 181 struct dac_module *const module_inst,
Kojto 111:4336505e4b1c 182 enum dac_channel channel,
Kojto 111:4336505e4b1c 183 uint16_t *buffer,
Kojto 111:4336505e4b1c 184 uint32_t length);
Kojto 111:4336505e4b1c 185
Kojto 111:4336505e4b1c 186 /** @} */
Kojto 111:4336505e4b1c 187
Kojto 111:4336505e4b1c 188 /**
Kojto 111:4336505e4b1c 189 * \name Status Management
Kojto 111:4336505e4b1c 190 * @{
Kojto 111:4336505e4b1c 191 */
Kojto 111:4336505e4b1c 192 uint32_t dac_get_status(
Kojto 111:4336505e4b1c 193 struct dac_module *const module_inst);
Kojto 111:4336505e4b1c 194 void dac_clear_status(
Kojto 111:4336505e4b1c 195 struct dac_module *const module_inst,
Kojto 111:4336505e4b1c 196 uint32_t status_flags);
Kojto 111:4336505e4b1c 197
Kojto 111:4336505e4b1c 198 /** @} */
Kojto 111:4336505e4b1c 199
Kojto 111:4336505e4b1c 200 #ifdef __cplusplus
Kojto 111:4336505e4b1c 201 }
Kojto 111:4336505e4b1c 202 #endif
Kojto 111:4336505e4b1c 203
Kojto 111:4336505e4b1c 204 /** @} */
Kojto 111:4336505e4b1c 205
Kojto 111:4336505e4b1c 206
Kojto 111:4336505e4b1c 207 #endif /* DAC_H_INCLUDED */