Trying to get an overall understanding on LED matrix panels

Hello everyone!
I know this can be irrelevant to the RPI implementation, but not sure where else to ask since this forum is also very focused on LED matrix panels. I’m trying to learn how these panels work in general. It seems like most panel suppliers are rather secretive about details and datasheets. Based on my previous understanding of multiplexers and LED driver ICs, it looks like the panels are just bigger and fancier versions of the basic 8*8 matrix modules you can get for cheap? If that’s the case, the controller (RPI in this case) then has to handle the scanning, since the panel themselves are just LED driver and line selection ICs, and no “active” or “computing” parts exist? There’s also a brief mentioning of “PWM panels” in the readme page of the Github repo, but there are no further explanations. What does this type of panels do? It would be greatly appreciated if someone can make it a bit clearer to me.

true

Unlike conventional panels, PVM panels have built-in memory for all matrix lines and perform scanning themselves, switching lines and displaying data

2 Likes

Thanks, I did some more digging and it looks like everything is about right. Though the PWM type remains a mystery. Seems like the self-scanning is very rare. There are also LED driver ICs that have grayscale functionality and can do PWM with external scanning, but I haven’t found anything like that either. The most basic type is probably the best in terms of availability.

You are on the right track. The cheap 8x8 matrix panels using WS2812B or similar LEDs are really just a string of LEDs arranged in a grid. An 8x8 WS2812B LED matrix just has power, data, and ground, just like an LED strip. HUB75 LED matrix panels are a different animal. HUB75 LED matrix panels can be loosely grouped into three generations based on complexity.

Gen-1: Basic HUB75 panels using 4–5 address lines, simple driver chips (ICN2037BP, FM6124), and separate row decoder chips (like 74HC138 or FM6124A). These panels are compatible with the Adafruit MatrixPortal S3, RP2040, and Adafruit libraries.

Gen-2: Panels with smart driver chips (like ICND2038S or ICND2153) that handle internal row multiplexing and require initialization sequences. These may use fewer address lines and are not compatible with most simple microcontroller libraries without modifications. There are some great libraries on Github that provide control of these panels using an Raspberry Pi controller.

Gen-3: Advanced grayscale panels using chips like MBI5153 or ICND2153 that support PWM or stacked PWM (S-PWM) for high refresh rates and deep color. These require precise signal timing and are typically driven with FPGAs or heavily modified firmware. Some GitHub projects have figured out how to support these.

Here are some sites that provide more info:

1 Like

@Speedy-VI
Some adjustments… I hope you won’t be offended…

FM6124A is not a row decoder, it is a led driver chip.
If you want to give an example of a decoder other than 74HC138 type - then it could be for example a SM5158 chip - of a shift register type.

Is not a quite correct example again… The ICDN2038 is a regular chip, that doesn’t need a configuration, I would classify it as the basic type. The ICND2153 is a PWM chip of GEN-3 group.
Correct examples of GEN-2 chips could be a FM6126 or RU6024 drivers.

@board707 – Thank you for the corrections and clarifications. I am not offended at all. Your understanding of the various chips used in these panels is far above mine. I mistakenly confused the FM6124A with the FM6126, which does require initialization.

Regarding the ICND2038 - I noticed you mentioned the “ICDN2038” as a Gen-1 chip that doesn’t require initialization. I think this was a typo and just want to confirm — did you mean ICN2038, or ICND2038 with the “D”? My understanding is that the ICN2038 is a Gen-1 LED driver chip, but the ICND2038 (with the “D”) is a Gen-2 LED driver chip that may require initialization. I may be wrong about this and appreciate any clarification.

OP – My apologies for mixing up some of these chip part numbers. It can be confusing, and sometimes chips with subtle differences in their part numbers can behave very differently. The concept of Gen-1, Gen-2, and Gen-3 LED matrix panels is the main point I was trying to make.

As far as I know, the ICN* and ICND* drivers are all the same.
As about ICN(D)2038, you are right, it is a Gen-2 type driver that has a configurable registers. I have classified it as a basic driver because in its default configuration this driver can work immediately, without any configuration, like chips from Gen-1 group .

this reminds me, who in their right mind designed those FM6126/7 chips that do not work by default when they could simply have loaded some default init in them so they worked out of the box like the older chips…