mbed library sources. Supersedes mbed-src.

Fork of mbed-dev by mbed official

Committer:
mbed_official
Date:
Mon Nov 09 13:30:11 2015 +0000
Revision:
18:da299f395b9e
Parent:
targets/hal/TARGET_Atmel/TARGET_SAM_CortexM0P/drivers/TARGET_SAMD21/dac/dac.h@15:a81a8d6c1dfe
Synchronized with git revision f605825f66bb2e462ff7dbc5fb4ed2dbe979d1c3

Full URL: https://github.com/mbedmicro/mbed/commit/f605825f66bb2e462ff7dbc5fb4ed2dbe979d1c3/

Added support for SAML21

Who changed what in which revision?

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