NetBurner 3.5.6
PDF Version
fsl_lpspi_edma.h
1/*
2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
3 * Copyright 2016-2022 NXP
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8#ifndef _FSL_LPSPI_EDMA_H_
9#define _FSL_LPSPI_EDMA_H_
10
11#include "fsl_lpspi.h"
12#include "fsl_edma.h"
13
16/*
17 * @addtogroup lpspi_edma_driver
18 * @{
19 */
20
21/***********************************************************************************************************************
22 * Definitions
23 **********************************************************************************************************************/
27#define FSL_LPSPI_EDMA_DRIVER_VERSION (MAKE_VERSION(2, 4, 0))
34
39
48typedef void (*lpspi_master_edma_transfer_callback_t)(LPSPI_Type *base,
50 status_t status,
51 void *userData);
60typedef void (*lpspi_slave_edma_transfer_callback_t)(LPSPI_Type *base,
62 status_t status,
63 void *userData);
64
67{
68 volatile bool isPcsContinuous;
70 volatile bool isByteSwap;
72 volatile uint8_t fifoSize;
74 volatile uint8_t rxWatermark;
76 volatile uint8_t bytesEachWrite;
77 volatile uint8_t bytesEachRead;
79 volatile uint8_t bytesLastRead;
80 volatile bool isThereExtraRxBytes;
82 uint8_t *volatile txData;
83 uint8_t *volatile rxData;
84 volatile size_t txRemainingByteCount;
85 volatile size_t rxRemainingByteCount;
87 volatile uint32_t writeRegRemainingTimes;
88 volatile uint32_t readRegRemainingTimes;
90 uint32_t totalByteCount;
92 uint32_t txBuffIfNull;
93 uint32_t rxBuffIfNull;
95 uint32_t transmitCommand;
97 volatile uint8_t state;
99 uint8_t nbytes;
101 lpspi_master_edma_transfer_callback_t callback;
102 void *userData;
108};
109
112{
113 volatile bool isByteSwap;
115 volatile uint8_t fifoSize;
117 volatile uint8_t rxWatermark;
119 volatile uint8_t bytesEachWrite;
120 volatile uint8_t bytesEachRead;
122 volatile uint8_t bytesLastRead;
123 volatile bool isThereExtraRxBytes;
125 uint8_t nbytes;
127 uint8_t *volatile txData;
128 uint8_t *volatile rxData;
129 volatile size_t txRemainingByteCount;
130 volatile size_t rxRemainingByteCount;
132 volatile uint32_t writeRegRemainingTimes;
133 volatile uint32_t readRegRemainingTimes;
135 uint32_t totalByteCount;
137 uint32_t txBuffIfNull;
138 uint32_t rxBuffIfNull;
140 volatile uint8_t state;
142 uint32_t errorCount;
144 lpspi_slave_edma_transfer_callback_t callback;
145 void *userData;
151};
152
153/***********************************************************************************************************************
154 * API
155 **********************************************************************************************************************/
156#if defined(__cplusplus)
157extern "C" {
158#endif /*_cplusplus*/
159
160/*Transactional APIs*/
161
181void LPSPI_MasterTransferCreateHandleEDMA(LPSPI_Type *base,
183 lpspi_master_edma_transfer_callback_t callback,
184 void *userData,
185 edma_handle_t *edmaRxRegToRxDataHandle,
186 edma_handle_t *edmaTxDataToTxRegHandle);
187
205status_t LPSPI_MasterTransferEDMA(LPSPI_Type *base, lpspi_master_edma_handle_t *handle, lpspi_transfer_t *transfer);
206
219status_t LPSPI_MasterTransferPrepareEDMALite(LPSPI_Type *base, lpspi_master_edma_handle_t *handle, uint32_t configFlags);
220
243status_t LPSPI_MasterTransferEDMALite(LPSPI_Type *base, lpspi_master_edma_handle_t *handle, lpspi_transfer_t *transfer);
244
253void LPSPI_MasterTransferAbortEDMA(LPSPI_Type *base, lpspi_master_edma_handle_t *handle);
254
265status_t LPSPI_MasterTransferGetCountEDMA(LPSPI_Type *base, lpspi_master_edma_handle_t *handle, size_t *count);
266
287void LPSPI_SlaveTransferCreateHandleEDMA(LPSPI_Type *base,
289 lpspi_slave_edma_transfer_callback_t callback,
290 void *userData,
291 edma_handle_t *edmaRxRegToRxDataHandle,
292 edma_handle_t *edmaTxDataToTxRegHandle);
293
311status_t LPSPI_SlaveTransferEDMA(LPSPI_Type *base, lpspi_slave_edma_handle_t *handle, lpspi_transfer_t *transfer);
312
321void LPSPI_SlaveTransferAbortEDMA(LPSPI_Type *base, lpspi_slave_edma_handle_t *handle);
322
333status_t LPSPI_SlaveTransferGetCountEDMA(LPSPI_Type *base, lpspi_slave_edma_handle_t *handle, size_t *count);
334
335#if defined(__cplusplus)
336}
337#endif
338
339/* @}*/
340
341#endif /*_FSL_LPSPI_EDMA_H_*/
eDMA transfer handle structure
Definition fsl_edma.h:246
eDMA TCD.
Definition fsl_edma.h:207
LPSPI master eDMA transfer handle structure used for transactional API.
Definition fsl_lpspi_edma.h:67
edma_tcd_t lpspiSoftwareTCD[3]
Definition fsl_lpspi_edma.h:107
lpspi_master_edma_transfer_callback_t callback
Definition fsl_lpspi_edma.h:101
volatile uint8_t fifoSize
Definition fsl_lpspi_edma.h:72
volatile uint8_t state
Definition fsl_lpspi_edma.h:97
uint32_t txBuffIfNull
Definition fsl_lpspi_edma.h:92
volatile uint8_t bytesEachWrite
Definition fsl_lpspi_edma.h:76
volatile bool isByteSwap
Definition fsl_lpspi_edma.h:70
volatile uint32_t readRegRemainingTimes
Definition fsl_lpspi_edma.h:88
volatile uint32_t writeRegRemainingTimes
Definition fsl_lpspi_edma.h:87
uint8_t *volatile txData
Definition fsl_lpspi_edma.h:82
uint32_t transmitCommand
Definition fsl_lpspi_edma.h:95
volatile uint8_t bytesLastRead
Definition fsl_lpspi_edma.h:79
volatile size_t rxRemainingByteCount
Definition fsl_lpspi_edma.h:85
volatile uint8_t rxWatermark
Definition fsl_lpspi_edma.h:74
volatile uint8_t bytesEachRead
Definition fsl_lpspi_edma.h:77
volatile bool isThereExtraRxBytes
Definition fsl_lpspi_edma.h:80
uint8_t *volatile rxData
Definition fsl_lpspi_edma.h:83
edma_handle_t * edmaTxDataToTxRegHandle
Definition fsl_lpspi_edma.h:105
volatile bool isPcsContinuous
Definition fsl_lpspi_edma.h:68
uint32_t rxBuffIfNull
Definition fsl_lpspi_edma.h:93
edma_handle_t * edmaRxRegToRxDataHandle
Definition fsl_lpspi_edma.h:104
uint8_t nbytes
Definition fsl_lpspi_edma.h:99
volatile size_t txRemainingByteCount
Definition fsl_lpspi_edma.h:84
void * userData
Definition fsl_lpspi_edma.h:102
uint32_t totalByteCount
Definition fsl_lpspi_edma.h:90
LPSPI slave eDMA transfer handle structure used for transactional API.
Definition fsl_lpspi_edma.h:112
volatile bool isByteSwap
Definition fsl_lpspi_edma.h:113
edma_handle_t * edmaTxDataToTxRegHandle
Definition fsl_lpspi_edma.h:148
uint8_t nbytes
Definition fsl_lpspi_edma.h:125
uint32_t txBuffIfNull
Definition fsl_lpspi_edma.h:137
volatile uint8_t bytesEachRead
Definition fsl_lpspi_edma.h:120
edma_tcd_t lpspiSoftwareTCD[2]
Definition fsl_lpspi_edma.h:150
edma_handle_t * edmaRxRegToRxDataHandle
Definition fsl_lpspi_edma.h:147
uint32_t rxBuffIfNull
Definition fsl_lpspi_edma.h:138
uint8_t *volatile rxData
Definition fsl_lpspi_edma.h:128
void * userData
Definition fsl_lpspi_edma.h:145
volatile uint8_t state
Definition fsl_lpspi_edma.h:140
volatile uint8_t rxWatermark
Definition fsl_lpspi_edma.h:117
uint8_t *volatile txData
Definition fsl_lpspi_edma.h:127
volatile uint8_t bytesEachWrite
Definition fsl_lpspi_edma.h:119
lpspi_slave_edma_transfer_callback_t callback
Definition fsl_lpspi_edma.h:144
uint32_t errorCount
Definition fsl_lpspi_edma.h:142
volatile uint8_t fifoSize
Definition fsl_lpspi_edma.h:115
volatile uint32_t writeRegRemainingTimes
Definition fsl_lpspi_edma.h:132
volatile size_t rxRemainingByteCount
Definition fsl_lpspi_edma.h:130
volatile uint32_t readRegRemainingTimes
Definition fsl_lpspi_edma.h:133
volatile size_t txRemainingByteCount
Definition fsl_lpspi_edma.h:129
volatile bool isThereExtraRxBytes
Definition fsl_lpspi_edma.h:123
uint32_t totalByteCount
Definition fsl_lpspi_edma.h:135
volatile uint8_t bytesLastRead
Definition fsl_lpspi_edma.h:122
LPSPI master/slave transfer structure.
Definition fsl_lpspi.h:346