RTEMS  5.0.0
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
60 extern "C" {
61 #endif
62 
63 
64 /*----------------------------------------------------------------------------
65  * Types
66  *----------------------------------------------------------------------------*/
67 
69 typedef void (*DacCallback)(uint8_t, void *);
70 
76 typedef struct {
78  uint8_t *pTxBuff;
80  uint16_t TxSize;
82  uint16_t loopback;
84  uint8_t dacChannel;
88  void *pArgument;
89 } DacCmd;
90 
91 
94 typedef 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  *------------------------------------------------------------------------------*/
121 extern uint32_t Dac_ConfigureDma(DacDma *pDacd ,
122  Dacc *pDacHw ,
123  uint8_t DacId,
124  sXdmad *pXdmad);
125 extern 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_ */
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
void * pArgument
Definition: dac_dma.h:88
sXdmad * pXdmad
Definition: dac_dma.h:100
void(* DacCallback)(uint8_t, void *)
Definition: dac_dma.h:69
uint16_t TxSize
Definition: dac_dma.h:80
uint8_t * pTxBuff
Definition: dac_dma.h:78
volatile int8_t semaphore
Definition: dac_dma.h:104
Dac Transfer Request prepared by the application upper layer.
Definition: dac_dma.h:76
Dacc * pDacHw
Definition: dac_dma.h:96
Dacc hardware registers.
Definition: component_dacc.h:41
uint16_t loopback
Definition: dac_dma.h:82
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
DacCallback callback
Definition: dac_dma.h:86
Definition: dac_dma.h:94
Definition: xdmad.h:127
uint8_t dacChannel
Definition: dac_dma.h:84
DacCmd * pCurrentCommand
Definition: dac_dma.h:98
uint8_t dacId
Definition: dac_dma.h:102