RTEMS: bsps/arm/atsam/include/libchip/include/uart_dma.h Source File

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
uart_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 _UART_DMA_
38#define _UART_DMA_
39
40/*----------------------------------------------------------------------------
41 * Headers
42 *----------------------------------------------------------------------------*/
43
44#include "chip.h"
45
46/*----------------------------------------------------------------------------
47 * Definitions
48 *----------------------------------------------------------------------------*/
49
51#define UARTD_ERROR 1
52
54#define UARTD_ERROR_LOCK 2
55
56
57#ifdef __cplusplus
58extern "C" {
59#endif
60
61/*----------------------------------------------------------------------------
62 * Types
63 *----------------------------------------------------------------------------*/
64
66 typedef void (*UartdCallback)(uint8_t, void *);
67
73 typedef struct {
75 uint8_t *pBuff;
77 uint32_t BuffSize;
79 uint32_t ChNum;
81 UartdCallback callback;
83 void *pArgument;
85 volatile uint8_t sempaphore;
86 /* DMA LLI structure */
87 LinkedListDescriporView1 *pLLIview;
88 /* DMA transfer type */
89 eXdmadProgState dmaProgrammingMode;
90 /* DMA LLI size */
91 uint16_t dmaBlockSize;
92 /* Flag using ring buffer or FiFo*/
93 uint8_t dmaRingBuffer;
94} UartChannel;
95
98 typedef struct {
100 uint8_t uartId;
102 sXdmad *pXdmad;
104 Uart *pUartHw;
106 UartChannel *pRxChannel;
108 UartChannel *pTxChannel;
109} UartDma;
110
111/*----------------------------------------------------------------------------
112 * Exported functions
113 *----------------------------------------------------------------------------*/
114
115uint32_t UARTD_Configure(UartDma *pUartd ,
116 uint8_t uartId,
117 uint32_t uartMode,
118 uint32_t baud,
119 uint32_t clk);
120
121uint32_t UARTD_EnableTxChannels(UartDma *pUartd, UartChannel *pTxCh);
122
123uint32_t UARTD_EnableRxChannels(UartDma *pUartd, UartChannel *pRxCh);
124
125uint32_t UARTD_DisableTxChannels(UartDma *pUartd, UartChannel *pTxCh);
126
127uint32_t UARTD_DisableRxChannels(UartDma *pUartd, UartChannel *pRxCh);
128
129uint32_t UARTD_SendData(UartDma *pUartd);
130
131uint32_t UARTD_RcvData(UartDma *pUartd);
132
133#ifdef __cplusplus
134}
135#endif
136
137#endif /* #ifndef _UART_DMA_ */
eXdmadProgState
enum _XdmadProgState eXdmadProgState
UartChannel
usart Transfer Request prepared by the application upper layer.
Definition: uart_dma.h:73
UartChannel::pArgument
void * pArgument
Definition: uart_dma.h:83
UartChannel::callback
UartdCallback callback
Definition: uart_dma.h:81
UartChannel::BuffSize
uint32_t BuffSize
Definition: uart_dma.h:77
UartChannel::sempaphore
volatile uint8_t sempaphore
Definition: uart_dma.h:85
UartChannel::pBuff
uint8_t * pBuff
Definition: uart_dma.h:75
UartChannel::ChNum
uint32_t ChNum
Definition: uart_dma.h:79
UartDma
Definition: uart_dma.h:98
UartDma::pUartHw
Uart * pUartHw
Definition: uart_dma.h:104
UartDma::pTxChannel
UartChannel * pTxChannel
Definition: uart_dma.h:108
UartDma::pRxChannel
UartChannel * pRxChannel
Definition: uart_dma.h:106
UartDma::pXdmad
sXdmad * pXdmad
Definition: uart_dma.h:102
UartDma::uartId
uint8_t uartId
Definition: uart_dma.h:100
Uart
Uart hardware registers.
Definition: component_uart.h:41
_LinkedListDescriporView1
Structure for storing parameters for DMA view1 that can be performed by the DMA Master transfer.
Definition: xdmad.h:167
_Xdmad
Definition: xdmad.h:127
UARTD_DisableRxChannels
uint32_t UARTD_DisableRxChannels(UartDma *pUartd, UartChannel *pRxCh)
This function disables the appropriate DMA channel for Rx channel of USART.
Definition: uart_dma.c:517
UartdCallback
void(* UartdCallback)(uint8_t, void *)
Definition: uart_dma.h:66
UARTD_SendData
uint32_t UARTD_SendData(UartDma *pUartd)
Starts a UART master transfer. This is a non blocking function. It will return as soon as the transfe...
Definition: uart_dma.c:585
UARTD_EnableRxChannels
uint32_t UARTD_EnableRxChannels(UartDma *pUartd, UartChannel *pRxCh)
This function initialize the appropriate DMA channel for Rx channel of UART.
Definition: uart_dma.c:409
UARTD_EnableTxChannels
uint32_t UARTD_EnableTxChannels(UartDma *pUartd, UartChannel *pTxCh)
This function initialize the appropriate DMA channel for Tx channel of UART.
Definition: uart_dma.c:464
UARTD_Configure
uint32_t UARTD_Configure(UartDma *pUartd, uint8_t uartId, uint32_t uartMode, uint32_t baud, uint32_t clk)
Initializes the UartDma structure and the corresponding UART & DMA . hardware select value....
Definition: uart_dma.c:360
UARTD_DisableTxChannels
uint32_t UARTD_DisableTxChannels(UartDma *pUartd, UartChannel *pTxCh)
This function disables the appropriate DMA channel for Tx channel of USART.
Definition: uart_dma.c:552
UARTD_RcvData
uint32_t UARTD_RcvData(UartDma *pUartd)
Starts a UART master transfer. This is a non blocking function. It will return as soon as the transfe...
Definition: uart_dma.c:607