52 void begin(
bool enADC,
bool enDAC);
67 void getADC(uint32_t samples = MAX_BUFFER_SIZE);
75 void feedDAC(uint8_t dacChannel = 0, uint32_t samples = MAX_BUFFER_SIZE,
bool startInterrupts =
false);
103 #if !defined (ARDUINO_ARCH_NRF52840) && !defined (ARDUINO_ARCH_NRF52) && !defined ARDUINO_NRF52840_FEATHER
105 #elif defined __MBED__
106 inline static uint16_t
adcBuffer16[MAX_BUFFER_SIZE];
183 #if defined (ESP32) || defined (DOXYGEN_FORCED)
194#if defined (ARDUINO_ARCH_NRF52840) || defined (ARDUINO_ARCH_NRF52) && !defined ARDUINO_NRF52840_FEATHER && defined __MBED__
195 inline static uint8_t aCtr;
196 inline static uint32_t aSize;
197 inline static uint16_t *buf0 = NULL;
198 inline static uint16_t *buf1 = NULL;
199 inline static void (*_onReceive)(uint16_t *buf, uint32_t buf_len) = NULL;
200 inline static void adcCallback(uint16_t *buf, uint32_t buf_len);
201 inline static void set_callback(
void(*function)(uint16_t *buf, uint32_t buf_len));
202 inline static bool adcReady;
203 inline static uint16_t dacBuf0[MAX_BUFFER_SIZE];
204 inline static uint16_t dacBuf1[MAX_BUFFER_SIZE];
210 inline static uint32_t sampleCounter;
212#elif defined (ARDUINO_ARCH_NRF52840) || defined (ARDUINO_ARCH_NRF52) || defined (ARDUINO_NRF52840_FEATHER) && !defined __MBED__
213 uint16_t dacBuf0[MAX_BUFFER_SIZE];
214 uint16_t dacBuf1[MAX_BUFFER_SIZE];
216 static uint32_t aSize;
217 static uint16_t *buf0;
218 static uint16_t *buf1;
219 static void (*_onReceive)(uint16_t *buf, uint32_t buf_len);
220 static void adcCallback(uint16_t *buf, uint32_t buf_len);
221 void set_callback(
void(*function)(uint16_t *buf, uint32_t buf_len));
222 static bool adcReady;
228 uint32_t sampleCounter;
242#if defined (ARDUINO_ARCH_SAM)
248 uint16_t realBuf[MAX_BUFFER_SIZE];
249 uint16_t adcDma[MAX_BUFFER_SIZE];
253 uint32_t sampleCount;
256 uint32_t adjustDivider;
258 uint32_t dacNumSamples;
259 uint32_t adcNumSamples;
262 uint32_t adcLastAdjust;
267 void dacBufferStereo(uint8_t dacChannel);
269 void tcSetup(uint32_t sampRate = 0);
270 void tc2Setup(uint32_t sampRate = 0);
272 uint32_t frequencyToTimerCount(uint32_t Frequency);
277 i2s_config_t i2s_cfg;
280 adc1_channel_t adcChannel;
285 uint8_t lastDacSample;
286 i2s_event_t myI2SQueue[5];
292 #define DELAY_250MS (250 / portTICK_PERIOD_MS)