64 void begin(uint8_t enADC, uint8_t enDAC, uint8_t _useI2S = 0);
79 void getADC(uint32_t samples = MAX_BUFFER_SIZE);
87 void feedDAC(uint8_t dacChannel = 0, uint32_t samples = MAX_BUFFER_SIZE,
bool startInterrupts =
false);
94 #if !defined ARDUINO_ARCH_RENESAS
97 static uint8_t
dacBuffer[MAX_BUFFER_SIZE];
104 #if !defined(ARDUINO_ARCH_NRF52840) && !defined(ARDUINO_ARCH_NRF52) && !defined ARDUINO_NRF52840_FEATHER && !defined ARDUINO_NRF54L15 && !defined ARDUINO_ARCH_RENESAS
106 #elif defined __MBED__
107 inline static uint8_t
adcBuffer[MAX_BUFFER_SIZE];
109 static uint8_t
adcBuffer[MAX_BUFFER_SIZE];
124 #if !defined(ARDUINO_ARCH_NRF52840) && !defined(ARDUINO_ARCH_NRF52) && !defined ARDUINO_NRF52840_FEATHER && !defined ARDUINO_NRF54L15 && !defined ARDUINO_ARCH_RENESAS
126 #elif defined __MBED__
127 inline static uint16_t
adcBuffer16[MAX_BUFFER_SIZE];
155 #if !defined(ARDUINO_ARCH_NRF52840) && !defined(ARDUINO_ARCH_NRF52) && !defined ARDUINO_NRF52840_FEATHER && !defined ARDUINO_NRF54L15 && !defined ARDUINO_ARCH_RENESAS
157 #elif defined __MBED__
209 #if defined(ESP32) || defined(DOXYGEN_FORCED)
218 #if defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_NRF52) && !defined ARDUINO_NRF52840_FEATHER && defined __MBED__
219 inline static uint8_t aCtr;
220 inline static uint32_t aSize;
221 inline static uint16_t* adcBuf0 = NULL;
222 inline static uint16_t* adcBuf1 = NULL;
223 inline static void (*_onReceive)(uint16_t* buf, uint32_t buf_len) = NULL;
224 inline static void adcCallback(uint16_t* buf, uint32_t buf_len);
225 inline static void set_callback(
void (*function)(uint16_t* buf, uint32_t buf_len));
226 inline static bool adcReady;
227 inline static uint16_t* dacBuf0;
228 inline static uint16_t* dacBuf1;
229 inline static uint32_t sampleCounter;
233 inline static bool adcWhichBuf;
235 #elif defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_NRF52) || defined ARDUINO_NRF54L15 || defined(ARDUINO_NRF52840_FEATHER) && !defined __MBED__
239 static uint32_t aSize;
240 static uint16_t* adcBuf0;
241 static uint16_t* adcBuf1;
242 static void (*_onReceive)(uint16_t* buf, uint32_t buf_len);
243 static void adcCallback(uint16_t* buf, uint32_t buf_len);
244 void set_callback(
void (*function)(uint16_t* buf, uint32_t buf_len));
245 static bool adcReady;
246 uint32_t sampleCounter;
250 static bool adcWhichBuf;
252 #elif defined ARDUINO_ARCH_RENESAS
253 static volatile uint16_t* dacBuf0;
254 static volatile uint16_t* dacBuf1;
255 volatile static uint8_t aCtr;
256 static volatile uint32_t aSize;
257 static uint16_t* adcBuf0;
258 static uint16_t* adcBuf1;
259 static void (*_onReceive)(uint16_t* buf, uint32_t buf_len);
260 static void adcCallback(uint16_t* buf, uint32_t buf_len);
261 void set_callback(
void (*function)(uint16_t* buf, uint32_t buf_len));
262 static volatile bool adcReady;
263 static volatile uint32_t sampleCounter;
267 static volatile bool adcWhichBuf;
268 static volatile uint32_t sCounter;
270 static volatile uint8_t analogChannel;
273 #if defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_NRF52) || defined ARDUINO_NRF54L15 || defined ARDUINO_ARCH_RENESAS || defined(DOXYGEN_FORCED)
359 bool adcBuffersAllocated;
360 bool dacBuffersAllocated;
361 void startPwmI2sTimers();
375 #if defined(ARDUINO_ARCH_SAM)
381 uint16_t realBuf[MAX_BUFFER_SIZE];
382 uint16_t adcDma[MAX_BUFFER_SIZE];
386 uint32_t sampleCount;
389 uint32_t adjustDivider;
391 uint32_t dacNumSamples;
392 uint32_t adcNumSamples;
395 uint32_t adcLastAdjust;
400 void dacBufferStereo(uint8_t dacChannel);
402 void tcSetup(uint32_t sampRate = 0);
403 void tc2Setup(uint32_t sampRate = 0);
405 uint32_t frequencyToTimerCount(uint32_t Frequency);
410 i2s_config_t i2s_cfg;
413 adc1_channel_t adcChannel;
418 uint8_t lastDacSample;
419 i2s_event_t myI2SQueue[5];
425 #define DELAY_250MS (250 / portTICK_PERIOD_MS)