RTEMS  5.1
usart_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 
37 #ifndef _USART_DMA_H_
38 #define _USART_DMA_H_
39 
40 /*----------------------------------------------------------------------------
41  * Headers
42  *----------------------------------------------------------------------------*/
43 
44 #include "chip.h"
45 
46 /*----------------------------------------------------------------------------
47  * Definitions
48  *----------------------------------------------------------------------------*/
49 
51 #define USARTD_ERROR 1
52 
54 #define USARTD_ERROR_LOCK 2
55 
56 
57 #ifdef __cplusplus
58 extern "C" {
59 #endif
60 
61 /*----------------------------------------------------------------------------
62  * Types
63  *----------------------------------------------------------------------------*/
64 
66 typedef void (*UsartdCallback)(uint8_t, void *);
67 
73 typedef struct {
75  uint8_t *pBuff;
77  uint32_t BuffSize;
79  uint8_t ChNum;
83  void *pArgument;
85  volatile uint8_t dmaProgress;
86  /* DMA LLI structure */
87  LinkedListDescriporView1 *pLLIview;
88  /* DMA transfer type */
89  eXdmadProgState dmaProgrammingMode;
90  /* DMA LLI size or num of micro block*/
91  uint16_t dmaBlockSize;
92  /* Flag using ring buffer or FiFo*/
93  uint8_t dmaRingBuffer;
94 } UsartChannel;
95 
98 typedef struct {
100  uint8_t usartId;
109 } UsartDma;
110 
111 /*----------------------------------------------------------------------------
112  * Exported functions
113  *----------------------------------------------------------------------------*/
114 
115 uint32_t USARTD_Configure(UsartDma *pUsartd ,
116  uint8_t USARTId,
117  uint32_t UsartMode,
118  uint32_t BaudRate,
119  uint32_t UsartClk);
120 
121 uint32_t USARTD_EnableTxChannels(UsartDma *pUsartd, UsartChannel *pTxCh);
122 
123 uint32_t USARTD_EnableRxChannels(UsartDma *pUsartd, UsartChannel *pRxCh);
124 
125 uint32_t USARTD_DisableTxChannels(UsartDma *pUsartd, UsartChannel *pTxCh);
126 
127 uint32_t USARTD_DisableRxChannels(UsartDma *pUsartd, UsartChannel *pTxCh);
128 
129 uint32_t USARTD_SendData(UsartDma *pUsartd);
130 
131 uint32_t USARTD_RcvData(UsartDma *pUsartd);
132 
133 #ifdef __cplusplus
134 }
135 #endif
136 
137 #endif /* #ifndef _USART_DMA_ */
uint32_t USARTD_DisableRxChannels(UsartDma *pUsartd, UsartChannel *pTxCh)
This function disables the appropriate DMA channel for Rx channel of USART.
Definition: usart_dma.c:501
usart Transfer Request prepared by the application upper layer.
Definition: usart_dma.h:73
uint32_t USARTD_DisableTxChannels(UsartDma *pUsartd, UsartChannel *pTxCh)
This function disables the appropriate DMA channel for Tx channel of USART.
Definition: usart_dma.c:535
Usart hardware registers.
Definition: component_usart.h:41
Structure for storing parameters for DMA view1 that can be performed by the DMA Master transfer.
Definition: xdmad.h:167
UsartChannel * pRxChannel
Definition: usart_dma.h:104
uint32_t USARTD_EnableRxChannels(UsartDma *pUsartd, UsartChannel *pRxCh)
This function initialize the appropriate DMA channel for Rx channel of USART.
Definition: usart_dma.c:392
uint8_t * pBuff
Definition: usart_dma.h:75
uint8_t ChNum
Definition: usart_dma.h:79
uint32_t USARTD_EnableTxChannels(UsartDma *pUsartd, UsartChannel *pTxCh)
This function initialize the appropriate DMA channel for Tx channel of USART.
Definition: usart_dma.c:447
Definition: usart_dma.h:98
enum _XdmadProgState eXdmadProgState
UsartChannel * pTxChannel
Definition: usart_dma.h:106
void(* UsartdCallback)(uint8_t, void *)
Definition: usart_dma.h:66
uint32_t USARTD_Configure(UsartDma *pUsartd, uint8_t USARTId, uint32_t UsartMode, uint32_t BaudRate, uint32_t UsartClk)
Initializes the USARTDma structure and the corresponding USART & DMA . hardware select value....
Definition: usart_dma.c:350
UsartdCallback callback
Definition: usart_dma.h:81
volatile uint8_t dmaProgress
Definition: usart_dma.h:85
uint32_t USARTD_SendData(UsartDma *pUsartd)
Starts a USART master transfer. This is a non blocking function. It will return as soon as the transf...
Definition: usart_dma.c:568
sXdmad * pXdmad
Definition: usart_dma.h:108
uint32_t USARTD_RcvData(UsartDma *pUsartd)
Starts a USART master transfer. This is a non blocking function. It will return as soon as the transf...
Definition: usart_dma.c:590
Usart * pUsartHw
Definition: usart_dma.h:102
uint8_t usartId
Definition: usart_dma.h:100
void * pArgument
Definition: usart_dma.h:83
Definition: xdmad.h:127
uint32_t BuffSize
Definition: usart_dma.h:77