Select one of the symbols to view example projects that use it.
 
Outline
#include "esp_private/spi_dma.h"
#include "hal/spi_ll.h"
spi_dma_enable_burst(spi_dma_chan_handle_t, bool, bool)
spi_dma_reset(spi_dma_chan_handle_t)
spi_dma_start(spi_dma_chan_handle_t, void *)
Files
loading...
SourceVuESP-IDF Framework and ExamplesESP-IDFcomponents/esp_driver_spi/src/gpspi/spi_dma.c
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/* * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 *//* ... */ #include "esp_private/spi_dma.h" #include "hal/spi_ll.h" #if !SOC_GDMA_SUPPORTED void spi_dma_enable_burst(spi_dma_chan_handle_t chan_handle, bool data_burst, bool desc_burst) { spi_dma_dev_t *spi_dma = SPI_LL_GET_HW(chan_handle.host_id); if (chan_handle.dir == DMA_CHANNEL_DIRECTION_TX) { spi_dma_ll_tx_enable_burst_data(spi_dma, chan_handle.chan_id, data_burst); spi_dma_ll_tx_enable_burst_desc(spi_dma, chan_handle.chan_id, desc_burst); }{...} else { spi_dma_ll_rx_enable_burst_data(spi_dma, chan_handle.chan_id, data_burst); spi_dma_ll_rx_enable_burst_desc(spi_dma, chan_handle.chan_id, desc_burst); }{...} }{ ... } #if SOC_SPI_SUPPORT_SLAVE_HD_VER2 void spi_dma_append(spi_dma_chan_handle_t chan_handle) { spi_dma_dev_t *spi_dma = SPI_LL_GET_HW(chan_handle.host_id); if (chan_handle.dir == DMA_CHANNEL_DIRECTION_TX) { spi_dma_ll_tx_restart(spi_dma, chan_handle.chan_id); }{...} else { spi_dma_ll_rx_restart(spi_dma, chan_handle.chan_id); }{...} }{...} /************************************* IRAM CONTEXT **************************************/ uint32_t spi_dma_get_eof_desc(spi_dma_chan_handle_t chan_handle) { spi_dma_dev_t *spi_dma = SPI_LL_GET_HW(chan_handle.host_id); return (chan_handle.dir == DMA_CHANNEL_DIRECTION_TX) ? spi_dma_ll_get_out_eof_desc_addr(spi_dma, chan_handle.chan_id) : spi_dma_ll_get_in_suc_eof_desc_addr(spi_dma, chan_handle.chan_id); }{...} /* ... */#endif //SOC_SPI_SUPPORT_SLAVE_HD_VER2 void spi_dma_reset(spi_dma_chan_handle_t chan_handle) { spi_dma_dev_t *spi_dma = SPI_LL_GET_HW(chan_handle.host_id); if (chan_handle.dir == DMA_CHANNEL_DIRECTION_TX) { spi_dma_ll_tx_reset(spi_dma, chan_handle.chan_id); }{...} else { spi_dma_ll_rx_reset(spi_dma, chan_handle.chan_id); }{...} }{ ... } void spi_dma_start(spi_dma_chan_handle_t chan_handle, void *addr) { spi_dma_dev_t *spi_dma = SPI_LL_GET_HW(chan_handle.host_id); if (chan_handle.dir == DMA_CHANNEL_DIRECTION_TX) { spi_dma_ll_tx_start(spi_dma, chan_handle.chan_id, (lldesc_t *)addr); }{...} else { spi_dma_ll_rx_start(spi_dma, chan_handle.chan_id, (lldesc_t *)addr); }{...} }{ ... } #endif/* ... */
Details