The RGB led panel has a two 16 pins male connector where to send data using a synchronous serial transmission.
The panel is logicaly splitted in two section:
R0, G0 and B0 are the data sent to the top block
R1, G1 and B1 are the data sent to the top block
Four address lines (A,B,C and D) select to which row of led are sending the data on Rx,Gx and Bx lines
This is the lock diagram of the internal parts of a RGB led panel
This is the pinout of input data connector:
|LED Pin #||Signal||Description||Arietta pin #||Line||gpio ID|
|1||R0||Red 1st bank||J4.10||PA21||21|
|2||G0||Green 1st bank||J4.8||PA22||22|
|3||B0||Blue 1st bank||J4.7||PA23||23|
|5||R1||Red 2nd bank||J4.11||PA24||24|
|6||G1||Green 2nd bank||J4.13||PA25||25|
|7||B1||Blue 2nd bank||J4.15||PA26||26|
On the output data connector just replicates the input lines for a wire another RGB led panel display.
The power supply connector needs 5 VDC @ max 3A. At this current all leds are on at maximum brightness.
All the rgb led panel are generate in bit banging mode using normal GPIO lines. To go as fast as possible a Linux driver written in C code is required. The driver I wrote can update the whole panel contents 679 times per second leaving enough time to Linux to do other jobs in the meanwhile. The main routine of this driver is a callback function called by a hrtimer 10800 times per second at interval of 92uS. In just 22uS this routine check the brightness of each color and send a simulated pwm signal to any led (32 x 3 color = 96) on a single row then exit. It will be called again by the Kernel after 66uS.
The fully source code of this driver is available under GPL licence on GitHub: ledpanel source on GitHub
2018 Ⓒ TanzoLab