I2S ws2812 color profiles
This commit is contained in:
parent
503e66a500
commit
0e50ec19ce
2 changed files with 73 additions and 12 deletions
|
@ -177,23 +177,33 @@ void ws2812_i2s_update(ws2812_pixel_t *pixels, pixeltype_t type)
|
||||||
uint16_t *p_dma_buf = dma_buffer;
|
uint16_t *p_dma_buf = dma_buffer;
|
||||||
|
|
||||||
for (uint32_t i = 0; i < (dma_buffer_size / type); i++) {
|
for (uint32_t i = 0; i < (dma_buffer_size / type); i++) {
|
||||||
// green
|
#ifdef I2S_COLOR_WHITE_FIRST
|
||||||
*p_dma_buf++ = bitpatterns[pixels[i].green & 0x0F];
|
|
||||||
*p_dma_buf++ = bitpatterns[pixels[i].green >> 4];
|
|
||||||
|
|
||||||
// red
|
|
||||||
*p_dma_buf++ = bitpatterns[pixels[i].red & 0x0F];
|
|
||||||
*p_dma_buf++ = bitpatterns[pixels[i].red >> 4];
|
|
||||||
|
|
||||||
// blue
|
|
||||||
*p_dma_buf++ = bitpatterns[pixels[i].blue & 0x0F];
|
|
||||||
*p_dma_buf++ = bitpatterns[pixels[i].blue >> 4];
|
|
||||||
|
|
||||||
if(type == PIXEL_RGBW) {
|
if(type == PIXEL_RGBW) {
|
||||||
// white
|
// white
|
||||||
*p_dma_buf++ = bitpatterns[pixels[i].white & 0x0F];
|
*p_dma_buf++ = bitpatterns[pixels[i].white & 0x0F];
|
||||||
*p_dma_buf++ = bitpatterns[pixels[i].white >> 4];
|
*p_dma_buf++ = bitpatterns[pixels[i].white >> 4];
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// I2S_COLOR_FIRST, normally green
|
||||||
|
*p_dma_buf++ = bitpatterns[pixels[i].I2S_COLOR_FIRST & 0x0F];
|
||||||
|
*p_dma_buf++ = bitpatterns[pixels[i].I2S_COLOR_FIRST >> 4];
|
||||||
|
|
||||||
|
// I2S_COLOR_SECOND, normally red
|
||||||
|
*p_dma_buf++ = bitpatterns[pixels[i].I2S_COLOR_SECOND & 0x0F];
|
||||||
|
*p_dma_buf++ = bitpatterns[pixels[i].I2S_COLOR_SECOND >> 4];
|
||||||
|
|
||||||
|
// I2S_COLOR_THIRD, normally blue
|
||||||
|
*p_dma_buf++ = bitpatterns[pixels[i].I2S_COLOR_THIRD & 0x0F];
|
||||||
|
*p_dma_buf++ = bitpatterns[pixels[i].I2S_COLOR_THIRD >> 4];
|
||||||
|
|
||||||
|
#ifndef I2S_COLOR_WHITE_FIRST
|
||||||
|
if(type == PIXEL_RGBW) {
|
||||||
|
// white
|
||||||
|
*p_dma_buf++ = bitpatterns[pixels[i].white & 0x0F];
|
||||||
|
*p_dma_buf++ = bitpatterns[pixels[i].white >> 4];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
i2s_dma_processing = true;
|
i2s_dma_processing = true;
|
||||||
|
|
|
@ -46,6 +46,57 @@ typedef enum {
|
||||||
PIXEL_RGBW = 16
|
PIXEL_RGBW = 16
|
||||||
} pixeltype_t;
|
} pixeltype_t;
|
||||||
|
|
||||||
|
#define I2S_COLOR_PROFILE_N_RGB 1
|
||||||
|
#define I2S_COLOR_PROFILE_N_RBG 2
|
||||||
|
#define I2S_COLOR_PROFILE_N_GBR 3
|
||||||
|
#define I2S_COLOR_PROFILE_N_GRB 4
|
||||||
|
#define I2S_COLOR_PROFILE_N_BGR 5
|
||||||
|
#define I2S_COLOR_PROFILE_N_BRG 6
|
||||||
|
|
||||||
|
#ifndef I2S_COLOR_PROFILE
|
||||||
|
|
||||||
|
#if defined(I2S_COLOR_PROFILE_BRG)
|
||||||
|
#define I2S_COLOR_PROFILE I2S_COLOR_PROFILE_N_BRG
|
||||||
|
#elif defined(I2S_COLOR_PROFILE_RBG)
|
||||||
|
#define I2S_COLOR_PROFILE I2S_COLOR_PROFILE_N_RBG
|
||||||
|
#elif defined(I2S_COLOR_PROFILE_GBR)
|
||||||
|
#define I2S_COLOR_PROFILE I2S_COLOR_PROFILE_N_GBR
|
||||||
|
#elif defined(I2S_COLOR_PROFILE_RGB)
|
||||||
|
#define I2S_COLOR_PROFILE I2S_COLOR_PROFILE_N_RGB
|
||||||
|
#elif defined(I2S_COLOR_PROFILE_BGR)
|
||||||
|
#define I2S_COLOR_PROFILE I2S_COLOR_PROFILE_N_BGR
|
||||||
|
#else
|
||||||
|
#define I2S_COLOR_PROFILE I2S_COLOR_PROFILE_N_GRB
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if I2S_COLOR_PROFILE == I2S_COLOR_PROFILE_N_RGB
|
||||||
|
#define I2S_COLOR_FIRST red
|
||||||
|
#define I2S_COLOR_SECOND green
|
||||||
|
#define I2S_COLOR_THIRD blue
|
||||||
|
#elif I2S_COLOR_PROFILE == I2S_COLOR_PROFILE_N_RBG
|
||||||
|
#define I2S_COLOR_FIRST red
|
||||||
|
#define I2S_COLOR_SECOND blue
|
||||||
|
#define I2S_COLOR_THIRD green
|
||||||
|
#elif I2S_COLOR_PROFILE == I2S_COLOR_PROFILE_N_GBR
|
||||||
|
#define I2S_COLOR_FIRST green
|
||||||
|
#define I2S_COLOR_SECOND blue
|
||||||
|
#define I2S_COLOR_THIRD red
|
||||||
|
#elif I2S_COLOR_PROFILE == I2S_COLOR_PROFILE_N_GRB
|
||||||
|
#define I2S_COLOR_FIRST green
|
||||||
|
#define I2S_COLOR_SECOND red
|
||||||
|
#define I2S_COLOR_THIRD blue
|
||||||
|
#elif I2S_COLOR_PROFILE == I2S_COLOR_PROFILE_N_BGR
|
||||||
|
#define I2S_COLOR_FIRST blue
|
||||||
|
#define I2S_COLOR_SECOND green
|
||||||
|
#define I2S_COLOR_THIRD red
|
||||||
|
#else
|
||||||
|
#define I2S_COLOR_FIRST blue
|
||||||
|
#define I2S_COLOR_SECOND red
|
||||||
|
#define I2S_COLOR_THIRD green
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize i2s and dma subsystems to work with ws2812 led strip.
|
* Initialize i2s and dma subsystems to work with ws2812 led strip.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue