RTEMS 6.1-rc1
dac_dma.h
Go to the documentation of this file.
1/* ---------------------------------------------------------------------------- */
2/* Atmel Microcontroller Software Support */
3/* SAM Software Package License */
4/* ---------------------------------------------------------------------------- */
5/* Copyright (c) 2015, Atmel Corporation */
6/* */
7/* All rights reserved. */
8/* */
9/* Redistribution and use in source and binary forms, with or without */
10/* modification, are permitted provided that the following condition is met: */
11/* */
12/* - Redistributions of source code must retain the above copyright notice, */
13/* this list of conditions and the disclaimer below. */
14/* */
15/* Atmel's name may not be used to endorse or promote products derived from */
16/* this software without specific prior written permission. */
17/* */
18/* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR */
19/* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
20/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */
21/* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, */
22/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
23/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
24/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
25/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
26/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
27/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
28/* ---------------------------------------------------------------------------- */
29
47#ifndef _DAC_DMA_
48#define _DAC_DMA_
49
50/*----------------------------------------------------------------------------
51 * Headers
52 *----------------------------------------------------------------------------*/
53#include "chip.h"
54
55#include <stdint.h>
56#include <assert.h>
57
58
59#ifdef __cplusplus
60extern "C" {
61#endif
62
63
64/*----------------------------------------------------------------------------
65 * Types
66 *----------------------------------------------------------------------------*/
67
69typedef void (*DacCallback)(uint8_t, void *);
70
76typedef struct {
78 uint8_t *pTxBuff;
80 uint16_t TxSize;
82 uint16_t loopback;
84 uint8_t dacChannel;
88 void *pArgument;
89} DacCmd;
90
91
94typedef struct {
102 uint8_t dacId;
104 volatile int8_t semaphore;
105} DacDma;
106
107
108/*------------------------------------------------------------------------------
109 * Definitions
110 *------------------------------------------------------------------------------*/
111#define DAC_OK 0
112#define DAC_ERROR 1
113#define DAC_ERROR_LOCK 2
114
115#define DACC_CHANNEL_0 0
116#define DACC_CHANNEL_1 1
117
118/*------------------------------------------------------------------------------
119 * Exported functions
120 *------------------------------------------------------------------------------*/
121extern uint32_t Dac_ConfigureDma(DacDma *pDacd ,
122 Dacc *pDacHw ,
123 uint8_t DacId,
124 sXdmad *pXdmad);
125extern uint32_t Dac_SendData(DacDma *pDacd, DacCmd *pCommand);
126
127
128/*------------------------------------------------------------------------------
129 * Macros function of register access
130 *------------------------------------------------------------------------------*/
131#define DACC_SoftReset(pDACC) ((pDACC)->DACC_CR = DACC_CR_SWRST)
132#define DACC_CfgModeReg(pDACC, mode) { (pDACC)->DACC_MR = (mode); }
133#define DACC_GetModeReg(pDACC) ((pDACC)->DACC_MR)
134#define DACC_CfgTrigger(pDACC, mode) { (pDACC)->DACC_TRIGR = (mode); }
135
136#define DACC_EnableChannel(pDACC, channel) {(pDACC)->DACC_CHER = (1 << (channel));}
137#define DACC_DisableChannel(pDACC, channel) {(pDACC)->DACC_CHDR = (1 << (channel));}
138
139#define DACC_EnableIt(pDACC, mode) {(pDACC)->DACC_IER = (mode);}
140#define DACC_DisableIt(pDACC, mode) {(pDACC)->DACC_IDR = (mode);}
141#define DACC_GetStatus(pDACC) ((pDACC)->DACC_ISR)
142#define DACC_GetChannelStatus(pDACC) ((pDACC)->DACC_CHSR)
143#define DACC_GetInterruptMaskStatus(pDACC) ((pDACC)->DACC_IMR)
144
145
146#ifdef __cplusplus
147}
148#endif
149
150#endif /* #ifndef _DAC_DMA_ */
This header file provides the interfaces of the Assert Handler.
uint32_t Dac_SendData(DacDma *pDacd, DacCmd *pCommand)
Starts a DAC transfer. This is a non blocking function. It will return as soon as the transfer is sta...
Definition: dac_dma.c:211
uint32_t Dac_ConfigureDma(DacDma *pDacd, Dacc *pDacHw, uint8_t DacId, sXdmad *pXdmad)
Initializes the DacDma structure and the corresponding DAC & DMA . hardware select value....
Definition: dac_dma.c:186
void(* DacCallback)(uint8_t, void *)
Definition: dac_dma.h:69
Dac Transfer Request prepared by the application upper layer.
Definition: dac_dma.h:76
uint8_t * pTxBuff
Definition: dac_dma.h:78
void * pArgument
Definition: dac_dma.h:88
DacCallback callback
Definition: dac_dma.h:86
uint16_t TxSize
Definition: dac_dma.h:80
uint8_t dacChannel
Definition: dac_dma.h:84
uint16_t loopback
Definition: dac_dma.h:82
Definition: dac_dma.h:94
uint8_t dacId
Definition: dac_dma.h:102
sXdmad * pXdmad
Definition: dac_dma.h:100
volatile int8_t semaphore
Definition: dac_dma.h:104
Dacc * pDacHw
Definition: dac_dma.h:96
DacCmd * pCurrentCommand
Definition: dac_dma.h:98
Dacc hardware registers.
Definition: component_dacc.h:41
Definition: xdmad.h:127