forked from Makuna/NeoPixelBus
ESP32 x8 and X16 parallel support --------- Co-authored-by: Awawa <69086569+awawa-dev@users.noreply.github.com>
45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
#pragma once
|
|
|
|
// ESP32C3/S3 I2S is not supported yet due to significant changes to interface
|
|
#if defined(ARDUINO_ARCH_ESP32) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S3)
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "esp_err.h"
|
|
|
|
#define I2S_DMA_MAX_DATA_LEN 4092// maximum bytes in one dma item
|
|
|
|
typedef enum {
|
|
I2S_CHAN_STEREO, I2S_CHAN_RIGHT_TO_LEFT, I2S_CHAN_LEFT_TO_RIGHT, I2S_CHAN_RIGHT_ONLY, I2S_CHAN_LEFT_ONLY
|
|
} i2s_tx_chan_mod_t;
|
|
|
|
typedef enum {
|
|
I2S_FIFO_16BIT_DUAL, I2S_FIFO_16BIT_SINGLE, I2S_FIFO_32BIT_DUAL, I2S_FIFO_32BIT_SINGLE
|
|
} i2s_tx_fifo_mod_t;
|
|
|
|
void i2sInit(uint8_t bus_num,
|
|
bool parallel_mode,
|
|
size_t bytes_per_sample,
|
|
uint32_t sample_rate,
|
|
i2s_tx_chan_mod_t chan_mod,
|
|
i2s_tx_fifo_mod_t fifo_mod,
|
|
size_t dma_count,
|
|
uint8_t* data,
|
|
size_t dataSize);
|
|
void i2sDeinit(uint8_t bus_num);
|
|
void i2sSetPins(uint8_t bus_num,
|
|
int8_t out,
|
|
int8_t parallel,
|
|
int8_t busSampleSize,
|
|
bool invert);
|
|
bool i2sWrite(uint8_t bus_num);
|
|
bool i2sWriteDone(uint8_t bus_num);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|