206
206
// RGB
207
207
#define B_32_RN_NEO_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32RmtNWs2812xMethod, NeoGammaNullMethod>
208
208
#ifndef WLED_NO_I2S0_PIXELBUS
209
- #define B_32_I0_NEO_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s0800KbpsMethod, NeoGammaNullMethod>
209
+ #define B_32_I0_NEO_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s0Ws2812xMethod, NeoGammaNullMethod>
210
+ // #define B_32_I0_NEO_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s0X8Ws2812xMethod, NeoGammaNullMethod> // parallel I2S
210
211
#endif
211
212
#ifndef WLED_NO_I2S1_PIXELBUS
212
- #define B_32_I1_NEO_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s1800KbpsMethod, NeoGammaNullMethod>
213
+ #define B_32_I1_NEO_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s1Ws2812xMethod, NeoGammaNullMethod>
214
+ // #define B_32_I1_NEO_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s1X8Ws2812xMethod, NeoGammaNullMethod> // parallel I2S
213
215
#endif
214
216
// RGBW
215
- #define B_32_RN_NEO_4 NeoPixelBusLg<NeoGrbwFeature, NeoEsp32RmtNWs2812xMethod , NeoGammaNullMethod>
217
+ #define B_32_RN_NEO_4 NeoPixelBusLg<NeoGrbwFeature, NeoEsp32RmtNSk6812Method , NeoGammaNullMethod>
216
218
#ifndef WLED_NO_I2S0_PIXELBUS
217
- #define B_32_I0_NEO_4 NeoPixelBusLg<NeoGrbwFeature, NeoEsp32I2s0800KbpsMethod, NeoGammaNullMethod>
219
+ #define B_32_I0_NEO_4 NeoPixelBusLg<NeoGrbwFeature, NeoEsp32I2s0Sk6812Method, NeoGammaNullMethod>
220
+ // #define B_32_I0_NEO_4 NeoPixelBusLg<NeoGrbwFeature, NeoEsp32I2s0X8Sk6812Method, NeoGammaNullMethod> // parallel I2S
218
221
#endif
219
222
#ifndef WLED_NO_I2S1_PIXELBUS
220
- #define B_32_I1_NEO_4 NeoPixelBusLg<NeoGrbwFeature, NeoEsp32I2s1800KbpsMethod, NeoGammaNullMethod>
223
+ #define B_32_I1_NEO_4 NeoPixelBusLg<NeoGrbwFeature, NeoEsp32I2s1Sk6812Method, NeoGammaNullMethod>
224
+ // #define B_32_I1_NEO_4 NeoPixelBusLg<NeoGrbwFeature, NeoEsp32I2s1X8Sk6812Method, NeoGammaNullMethod> // parallel I2S
221
225
#endif
222
226
// 400Kbps
223
227
#define B_32_RN_400_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32RmtN400KbpsMethod, NeoGammaNullMethod>
224
228
#ifndef WLED_NO_I2S0_PIXELBUS
225
229
#define B_32_I0_400_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s0400KbpsMethod, NeoGammaNullMethod>
230
+ // #define B_32_I0_400_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s0X8400KbpsMethod, NeoGammaNullMethod> // parallel I2S
226
231
#endif
227
232
#ifndef WLED_NO_I2S1_PIXELBUS
228
233
#define B_32_I1_400_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s1400KbpsMethod, NeoGammaNullMethod>
234
+ // #define B_32_I1_400_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s1X8400KbpsMethod, NeoGammaNullMethod> // parallel I2S
229
235
#endif
230
236
// TM1814 (RGBW)
231
237
#define B_32_RN_TM1_4 NeoPixelBusLg<NeoWrgbTm1814Feature, NeoEsp32RmtNTm1814Method, NeoGammaNullMethod>
232
238
#ifndef WLED_NO_I2S0_PIXELBUS
233
239
#define B_32_I0_TM1_4 NeoPixelBusLg<NeoWrgbTm1814Feature, NeoEsp32I2s0Tm1814Method, NeoGammaNullMethod>
240
+ // #define B_32_I0_TM1_4 NeoPixelBusLg<NeoWrgbTm1814Feature, NeoEsp32I2s0X8Tm1814Method, NeoGammaNullMethod> // parallel I2S
234
241
#endif
235
242
#ifndef WLED_NO_I2S1_PIXELBUS
236
243
#define B_32_I1_TM1_4 NeoPixelBusLg<NeoWrgbTm1814Feature, NeoEsp32I2s1Tm1814Method, NeoGammaNullMethod>
244
+ // #define B_32_I1_TM1_4 NeoPixelBusLg<NeoWrgbTm1814Feature, NeoEsp32I2s1X8Tm1814Method, NeoGammaNullMethod> // parallel I2S
237
245
#endif
238
246
// TM1829 (RGB)
239
247
#define B_32_RN_TM2_3 NeoPixelBusLg<NeoBrgFeature, NeoEsp32RmtNTm1829Method, NeoGammaNullMethod>
240
248
#ifndef WLED_NO_I2S0_PIXELBUS
241
249
#define B_32_I0_TM2_3 NeoPixelBusLg<NeoBrgFeature, NeoEsp32I2s0Tm1829Method, NeoGammaNullMethod>
250
+ // #define B_32_I0_TM2_3 NeoPixelBusLg<NeoBrgFeature, NeoEsp32I2s0X8Tm1829Method, NeoGammaNullMethod> // parallel I2S
242
251
#endif
243
252
#ifndef WLED_NO_I2S1_PIXELBUS
244
253
#define B_32_I1_TM2_3 NeoPixelBusLg<NeoBrgFeature, NeoEsp32I2s1Tm1829Method, NeoGammaNullMethod>
254
+ // #define B_32_I1_TM2_3 NeoPixelBusLg<NeoBrgFeature, NeoEsp32I2s1X8Tm1829Method, NeoGammaNullMethod> // parallel I2S
245
255
#endif
246
256
// UCS8903
247
257
#define B_32_RN_UCS_3 NeoPixelBusLg<NeoRgbUcs8903Feature, NeoEsp32RmtNWs2812xMethod, NeoGammaNullMethod>
248
258
#ifndef WLED_NO_I2S0_PIXELBUS
249
259
#define B_32_I0_UCS_3 NeoPixelBusLg<NeoRgbUcs8903Feature, NeoEsp32I2s0800KbpsMethod, NeoGammaNullMethod>
260
+ // #define B_32_I0_UCS_3 NeoPixelBusLg<NeoRgbUcs8903Feature, NeoEsp32I2s0X8800KbpsMethod, NeoGammaNullMethod> // parallel I2S
250
261
#endif
251
262
#ifndef WLED_NO_I2S1_PIXELBUS
252
263
#define B_32_I1_UCS_3 NeoPixelBusLg<NeoRgbUcs8903Feature, NeoEsp32I2s1800KbpsMethod, NeoGammaNullMethod>
264
+ // #define B_32_I1_UCS_3 NeoPixelBusLg<NeoRgbUcs8903Feature, NeoEsp32I2s1X8800KbpsMethod, NeoGammaNullMethod> // parallel I2S
253
265
#endif
254
266
// UCS8904
255
267
#define B_32_RN_UCS_4 NeoPixelBusLg<NeoRgbwUcs8904Feature, NeoEsp32RmtNWs2812xMethod, NeoGammaNullMethod>
256
268
#ifndef WLED_NO_I2S0_PIXELBUS
257
269
#define B_32_I0_UCS_4 NeoPixelBusLg<NeoRgbwUcs8904Feature, NeoEsp32I2s0800KbpsMethod, NeoGammaNullMethod>
270
+ // #define B_32_I0_UCS_4 NeoPixelBusLg<NeoRgbwUcs8904Feature, NeoEsp32I2s0X8800KbpsMethod, NeoGammaNullMethod>// parallel I2S
258
271
#endif
259
272
#ifndef WLED_NO_I2S1_PIXELBUS
260
273
#define B_32_I1_UCS_4 NeoPixelBusLg<NeoRgbwUcs8904Feature, NeoEsp32I2s1800KbpsMethod, NeoGammaNullMethod>
274
+ // #define B_32_I1_UCS_4 NeoPixelBusLg<NeoRgbwUcs8904Feature, NeoEsp32I2s1X8800KbpsMethod, NeoGammaNullMethod>// parallel I2S
261
275
#endif
262
276
#define B_32_RN_APA106_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32RmtNApa106Method, NeoGammaNullMethod>
263
277
#ifndef WLED_NO_I2S0_PIXELBUS
264
278
#define B_32_I0_APA106_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s0Apa106Method, NeoGammaNullMethod>
279
+ // #define B_32_I0_APA106_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s0X8Apa106Method, NeoGammaNullMethod> // parallel I2S
265
280
#endif
266
281
#ifndef WLED_NO_I2S1_PIXELBUS
267
282
#define B_32_I1_APA106_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s1Apa106Method, NeoGammaNullMethod>
283
+ // #define B_32_I1_APA106_3 NeoPixelBusLg<NeoGrbFeature, NeoEsp32I2s1X8Apa106Method, NeoGammaNullMethod> // parallel I2S
268
284
#endif
269
285
// FW1906 GRBCW
270
286
#define B_32_RN_FW6_5 NeoPixelBusLg<NeoGrbcwxFeature, NeoEsp32RmtNWs2812xMethod, NeoGammaNullMethod>
271
287
#ifndef WLED_NO_I2S0_PIXELBUS
272
288
#define B_32_I0_FW6_5 NeoPixelBusLg<NeoGrbcwxFeature, NeoEsp32I2s0800KbpsMethod, NeoGammaNullMethod>
289
+ // #define B_32_I0_FW6_5 NeoPixelBusLg<NeoGrbcwxFeature, NeoEsp32I2s0X8800KbpsMethod, NeoGammaNullMethod> // parallel I2S
273
290
#endif
274
291
#ifndef WLED_NO_I2S1_PIXELBUS
275
292
#define B_32_I1_FW6_5 NeoPixelBusLg<NeoGrbcwxFeature, NeoEsp32I2s1800KbpsMethod, NeoGammaNullMethod>
293
+ // #define B_32_I1_FW6_5 NeoPixelBusLg<NeoGrbcwxFeature, NeoEsp32I2s1X8800KbpsMethod, NeoGammaNullMethod> // parallel I2S
276
294
#endif
277
295
// WS2805 RGBWC
278
296
#define B_32_RN_2805_5 NeoPixelBusLg<NeoGrbwwFeature, NeoEsp32RmtNWs2805Method, NeoGammaNullMethod>
279
297
#ifndef WLED_NO_I2S0_PIXELBUS
280
298
#define B_32_I0_2805_5 NeoPixelBusLg<NeoGrbwwFeature, NeoEsp32I2s0Ws2805Method, NeoGammaNullMethod>
299
+ // #define B_32_I0_2805_5 NeoPixelBusLg<NeoGrbwwFeature, NeoEsp32I2s0X8Ws2805Method, NeoGammaNullMethod> // parallel I2S
281
300
#endif
282
301
#ifndef WLED_NO_I2S1_PIXELBUS
283
302
#define B_32_I1_2805_5 NeoPixelBusLg<NeoGrbwwFeature, NeoEsp32I2s1Ws2805Method, NeoGammaNullMethod>
303
+ // #define B_32_I1_2805_5 NeoPixelBusLg<NeoGrbwwFeature, NeoEsp32I2s1X8Ws2805Method, NeoGammaNullMethod> // parallel I2S
284
304
#endif
285
305
#endif
286
306
@@ -1458,11 +1478,11 @@ class PolyBus {
1458
1478
return I_8266_U0_2805_5 + offset;
1459
1479
}
1460
1480
#else // ESP32
1461
- uint8_t offset = 0 ; // 0 = RMT (num 0-7) 8 = I2S0 9 = I2S1
1481
+ uint8_t offset = 0 ; // 0 = RMT (num 1-8), 1 = I2S0 (used by Audioreactive), 2 = I2S1
1462
1482
#if defined(CONFIG_IDF_TARGET_ESP32S2)
1463
1483
// ESP32-S2 only has 4 RMT channels
1464
1484
if (num > 4 ) return I_NONE;
1465
- if (num > 3 ) offset = 1 ; // only one I2S
1485
+ if (num > 3 ) offset = 1 ; // only one I2S (use last to allow Audioreactive)
1466
1486
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
1467
1487
// On ESP32-C3 only the first 2 RMT channels are usable for transmitting
1468
1488
if (num > 1 ) return I_NONE;
@@ -1474,7 +1494,8 @@ class PolyBus {
1474
1494
#else
1475
1495
// standard ESP32 has 8 RMT and 2 I2S channels
1476
1496
if (num > 9 ) return I_NONE;
1477
- if (num > 7 ) offset = num -7 ;
1497
+ if (num > 8 ) offset = 1 ;
1498
+ if (num == 0 ) offset = 2 ; // prefer I2S1 for 1st bus (less flickering but more RAM needed)
1478
1499
#endif
1479
1500
switch (busType) {
1480
1501
case TYPE_WS2812_1CH_X3:
0 commit comments