| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*
- * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #pragma once
- #include "esp_err.h"
- #include "esp_intr_alloc.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define DAC_DMA_EOF_INTR 0x01
- #define DAC_DMA_TEOF_INTR 0x02
- /**
- * @brief Initialize DAC DMA peripheral
- *
- * @param[in] freq_hz DAC data frequency per channel
- * @param[in] is_alternate Transmit data alternate between two channels or simultaneously
- * @param[in] is_apll Whether use APLL as DAC digital controller clock source
- * @return
- * - ESP_ERR_NOT_FOUND The DMA peripheral has been occupied
- * - ESP_ERR_NO_MEM No memory for the DMA peripheral struct
- * - ESP_ERR_INVALID_ARG The frequency is out of range
- * - ESP_OK Initialize DAC DMA peripheral success
- */
- esp_err_t dac_dma_periph_init(uint32_t freq_hz, bool is_alternate, bool is_apll);
- /**
- * @brief Deinitialize DAC DMA peripheral
- *
- * @return
- * - ESP_ERR_INVALID_STATE The DAC DMA has been de-initialized already
- * or the interrupt has not been de-registered
- * - ESP_OK Deinitialize DAC DMA peripheral success
- */
- esp_err_t dac_dma_periph_deinit(void);
- /**
- * @brief Get the DMA interrupt signal id
- *
- * @return
- * - int DMA interrupt signal id
- */
- int dac_dma_periph_get_intr_signal(void);
- /**
- * @brief Enable the DMA and interrupt of the DAC DMA peripheral
- *
- */
- void dac_dma_periph_enable(void);
- /**
- * @brief Disable the DMA and interrupt of the DAC DMA peripheral
- *
- */
- void dac_dma_periph_disable(void);
- /**
- * @brief Whether the TX_EOF interrupt is triggered
- *
- * @return
- * - uint32_t Mask of the triggered interrupt: DAC_DMA_EOF_INTR, DAC_DMA_EOF_INTR
- */
- uint32_t dac_dma_periph_intr_is_triggered(void);
- /**
- * @brief Get the descriptor that just finished sending data
- *
- * @return
- * - uint32_t The address of the EOF descriptor
- */
- uint32_t dac_dma_periph_intr_get_eof_desc(void);
- /**
- * @brief Start a DMA transaction
- * @note DMA transaction will stop when reaches the tail of the descriptor link
- *
- * @param[in] desc_addr Descriptor address
- */
- void dac_dma_periph_dma_trans_start(uint32_t desc_addr);
- #ifdef __cplusplus
- }
- #endif
|