Skip to content

need runtime_options.gpio_slowdown to go up to 8 with ABC panels and dietpi 64bit #1773

@marcmerlin

Description

@marcmerlin
--- a/lib/led-matrix.cc
+++ b/lib/led-matrix.cc
@@ -660,7 +660,7 @@ RGBMatrix *RGBMatrix::CreateFromOptions(const RGBMatrix::Options &options,
   // For the Pi4, we might need 2, maybe up to 4. Let's open up to 5.
   // on supproted architectures, -1 will emit memory barier (DSB ST) after GPIO write
   if (runtime_options.gpio_slowdown < (LED_MATRIX_ALLOW_BARRIER_DELAY ? -1 : 0)
-      || runtime_options.gpio_slowdown > 5) {
+      || runtime_options.gpio_slowdown > 10) {
     fprintf(stderr, "--led-slowdown-gpio=%d is outside usable range\n",
             runtime_options.gpio_slowdown);
     return NULL;

@hzeller this is both an FYI and also kind of asking for help.
I got some ABC flexible panels, if I connect just 3 of them on a Pi02wl, one per chain, they work with a slowdown of 5, for 5 is already terrible for a pi02w (probably wouldn't work at all with a Pi4).
Now the super weird thing is if I plug in 2 panels per channel, then I start getting all kinds of noise, and I have to increase the slowdown to 8 :(
My ribbon cables are not that long, the noise is on all 3 channels, I have triple redundant grounds and double redundant power.

Image

The exact same thing worked with ABCDE panels and a slowdown of 2, but obviously those different chips do not like the (I assume) bad waveform that comes out of a Pi.

Questions

  1. am I correct that basically I have no way around this? if I have noise with short enough ribbon cables, I'm forced to increase slowdown, even past 5?

  2. are ABC /32 panels (128x64) inherently worse than ABCDE, or did I just get unlucky with the chips on these specific panels?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions