// ws2812_init.c // C-based helper function for initilalizing // the I2S system #include #include "slc_register.h" #include "user_interface.h" #include "ws2812_defs.h" #include "ws2812_dma.h" #if WS2812_USE_INTERRUPT == 1 // for debugging purposes static volatile uint32_t interrupt_count = 0; static void ws2812_isr(void) { //clear all intr flags WRITE_PERI_REG(SLC_INT_CLR, 0xffffffff);//slc_intr_status); interrupt_count++; } #endif void ws2812_dma(sdio_queue_t *i2s_pixels_queue) { // Reset DMA SET_PERI_REG_MASK(SLC_CONF0, SLC_RXLINK_RST); //|SLC_TXLINK_RST); CLEAR_PERI_REG_MASK(SLC_CONF0, SLC_RXLINK_RST); //|SLC_TXLINK_RST); // Clear DMA int flags SET_PERI_REG_MASK(SLC_INT_CLR, 0xffffffff); CLEAR_PERI_REG_MASK(SLC_INT_CLR, 0xffffffff); // Enable and configure DMA CLEAR_PERI_REG_MASK(SLC_CONF0,(SLC_MODE<