Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Control matrix 64x32 with mbi5153 (icn2053) led driver ic #466

Open
kbateam opened this issue Jan 8, 2018 · 112 comments
Open

Control matrix 64x32 with mbi5153 (icn2053) led driver ic #466

kbateam opened this issue Jan 8, 2018 · 112 comments

Comments

@kbateam
Copy link

kbateam commented Jan 8, 2018

Does anybody sucessfull make control led matrix 64x32 with mbi5153 (icn2053) led driver ic
New matrix P5 64x32 comes with new IC led driver (Same as P2.5 matrix)
P5 Matrix with mbi5038 (icn2038) ic led driver works fine on this project (only transform passed)
Any idea ?
Thanks.

@hzeller
Copy link
Owner

hzeller commented Jan 8, 2018

I have not seen such panels yet. Do you have a link to a source ?

@kbateam
Copy link
Author

kbateam commented Jan 8, 2018

I can make photo pcb of this matrix.
So. i parsed some datatsheet of mbi IC
Signal OE is not use. It's replaced by GCLK,
this ic led driver has hardware 14bit (or 13bit) PWM GrayCycle on each other output (0..15)
As I understand chip need to be preload configuration every time as power up. (load some parameters such scan rate 1/4, 1/8 e.t.c)
also every time after load data on SDI cycle, need load PWM data for each output(0..15)
and after that need send vsync command to latch data to output pins.
P.S Can upload some datasheet which i found on internet.

@kbateam
Copy link
Author

kbateam commented Jan 9, 2018

Photo of new P5 64x32 module
Photo of old P5 64x32 module
Photo both old and new P5 64x32 module

Here is some datasheets
MBI5038.pdf
icn2038s.pdf
ICN2053.pdf
MBI5153.pdf
mbi5152.pdf
mbi5152_appnote.pdf

Comments
mbi5153 same as mbi5152 difference mbi5153 support 1/32 scan and has 16Kbits SRAM
mbi5152_appnote is common algorithm to initialize chip
mbi5038 and icn2038 led drivers used on old led matrix and they works fine with this project

Updated this post (upload datasheet ICN2053 led driver chip)

@raphaelfacredyn
Copy link

Hi @kbateam this is off topic but I would like to know if the old p5 display you bought was this one or an equivalent? This is because I want to buy this one. The drivers are the same so I think they are the same but I am not sure.

Also, what does only "transform passed" mean in your first post?

I am sorry this is off topic but I could not find your email or any other way of contacting you :|

Thank you for your help in advance

@kbateam
Copy link
Author

kbateam commented Jan 10, 2018

To @raphy1234
Follow by your link is different hardware P5 outdor matrix module that i have.
With china production is difficult to buy right matrix module.
(Be shure , and ask your seller to send real photos of pcb matrix module)
On offical site macroblock owner MBI tm is not present MBI5154 ic chip.
It seems to be MBI5153 ic chip.

Also, what does only "transform passed" mean in your first post?

It means for right working this led matrix module on project which wrote hzeller need wrtie
logical transofrmation procedure, cause matrix module splited on logical submodules (for expample 2x(32x32), 4x(16x32) e.t.c)

Here is my transform for modules that i have P5 64x32 1/8scan outdoor based on icn2038 ic led driver (MBI5038)
transformer.cc
led-matrix.cc

@kbateam
Copy link
Author

kbateam commented Jan 10, 2018

Countinue for my theme
If someone have any idea, will very grateful.

@hzeller
Copy link
Owner

hzeller commented Feb 27, 2018

Interestingly, on this document http://pmod86499.pic35.websiteonline.cn/upload/Q4F32V1.pdf there is a
CS mentioned on pin 16. It doesn't say if it is high or low logic. According to Google translate, the 消隐信号 label next to it mean "Blanking Signal".

Can someone who has such a panel try to pull 16 high, by connecting that pin with 5V ?

@hzeller
Copy link
Owner

hzeller commented Feb 27, 2018

@birdtechstep can you try if changing the logic level on Pin 16 changes anything ?

@birdtechstep
Copy link

@hzeller chip select (cs pin) active low

@birdtechstep
Copy link

@hzeller My friend dev. on stm32 said SetBits strobe hi on columns_-4 (led_width-4)

@hzeller
Copy link
Owner

hzeller commented Mar 2, 2018

can you elaborate? The only place where things are strobed is already high logic.

@birdtechstep
Copy link

add lib/framebuffer.cc (line 587 ) work.

582      for (int col = 0; col < columns_; ++col) {
583        const gpio_bits_t &out = *row_data++;
584        io->WriteMaskedBits(out, color_clk_mask);  // col + reset clock
585        io->SetBits(h.clock);               // Rising edge: clock color in.
586
587        if (col == columns_-4) io->SetBits(h.strobe); // ICN2038S : Bird Techstep
588      }
589      io->ClearBits(color_clk_mask);    // clock back to normal.

@hzeller
Copy link
Owner

hzeller commented Mar 6, 2018

Interesting. This looks like it requires further digging in the datasheet what they actually need there because it looks like if it works that it is by accident. If we have decoded the full thing we can recreate it by making a new RowAddressSetter for this kind of panel.

Can others confirm that this improves the situation ?

@hzeller hzeller mentioned this issue Mar 7, 2018
@hzeller
Copy link
Owner

hzeller commented Mar 7, 2018

Is there a place where I an buy a panel with that chip, so that I can look into supporting it with the library ?

@hoangphan
Copy link

Great! @hzeller and @birdtechstep : i did a quick check and above patch seems to work with mine (same 2038s led driver).

shall perform more test and let you know the result!

@hoangphan
Copy link

Is there a place where I an buy a panel with that chip, so that I can look into supporting it with the library ?

@hzeller : you can find the P3 that has ICN2038s led driver as following link,
https://www.alibaba.com/product-detail/GKGD-small-pitch-indoor-P3-RGB_60445963111.html

@hoangphan
Copy link

@hzeller : I have just quicked check all demo example from your library, and it seems working well with my board mentioned in #539. color display as expected, no flickering (i using gpio slow = 1)

what i'm curious is some body on the top comment of this topic, said with P5 64x32 the same code works with the same chip (2038s), however some others with 64x64 says its not.

apart from that, what is the meaning of the patch as @birdtechstep shared? (sorry i'm still on the way to study your library).

@kbateam
Copy link
Author

kbateam commented Mar 8, 2018

Yes it's works without any modification

what i'm curious is some body on the top comment of this topic, said with P5 64x32 the same code works with the same chip (2038s)

@kbateam kbateam closed this as completed Mar 8, 2018
@kbateam kbateam reopened this Mar 9, 2018
@hzeller
Copy link
Owner

hzeller commented Mar 10, 2018

Without further datasheets that explain the protocol to the displays it is hart to tell, maybe what is happening underneath is that the strobe pulse actually is negative logic, not positive logic, so pulling up the signal before the strobe will create that situation.

@hzeller
Copy link
Owner

hzeller commented Mar 10, 2018

In that case, swapping the lines in
https://github.com/hzeller/rpi-rgb-led-matrix/blob/master/lib/framebuffer.cc#L595

from

   io->SetBits(h.strobe);
   io->ClearBits(h.strobe);

to

   io->CleartBits(h.strobe);
   io->SetBits(h.strobe);

would help as well. Can someone who has such a display try if this works as well ?
(without the if (col == columns_-4) io->SetBits(h.strobe); patch)

I need to get to the bottom of this so that we can support this in the standard library; the columns-specific thing looks very specific and probably not necessary.

Also, I still would like to know where to buy such a panel to do experiments with.

@hoangphan the ali-express shop you mentioned: their minimum order is 40 items which I don't have the money for.

@hoangphan
Copy link

hoangphan commented Mar 11, 2018

@hzeller : i checked your mentioned patch but unfortunately the panel is not lighted up. stay dark without the line if (col == columns_-4) io->SetBits(h.strobe);

from the datasheet as link http://www.xlix.ru/datasheet/icn2038s.pdf I'm trying to map it with the way you programmed software.

@hoangphan
Copy link

@kbateam : how did you get the datasheet for these led drivers? i looked into the icn2038s datasheet, but it seems too many typo and confusion. is it possible to get the official datasheet from the Chinese company (i.e. Chipone)?

@hoangphan
Copy link

hoangphan commented Mar 11, 2018

@hzeller : i think i know the reason why if (col == columns_-4) io->SetBits(h.strobe); patch works.

with the attached snapshot of datasheet, the STROBE pin of panel (that has ICN2038s led driver) - is not simply a STROBE pin, it serves as a command parser, which also cover the LATCH data in.

as you can see, in order to latch a data out, we need to pulse the strobe pin high in the 3rd clk pulse OR the 12th pulse.

that's why the patch above works.

let me know if you agree with this. and if yes, kindly share your thought about how to make this patch generic into your standard library.

screen shot 2018-03-12 at 12 53 02 am

@kbateam
Copy link
Author

kbateam commented Mar 11, 2018

I got it form china reseller
Look MBI5038.pdf , ICN2038 hard copy from original driver

how did you get the datasheet for these led drivers

@hoangphan
Copy link

I see there is a key of similarity between the icn2038s (pay attention to the S) and icn2053: they have LE pin functions as a command parser, as below snapshot.

If LE is raised after 12 CLK pulse, it means enable all output channels.

The same for icn2038S, if LE is raised after 12 CLK pulses, data is copy to reg2 - which relevant to the dual latch feature of the ASIC

7f16fd03-2308-4925-9eb9-894c4c1ce9f2

@marcmerlin
Copy link
Contributor

@Jan1503: not speaking for him directly, but watching from the outside, Henner has been busy with other things in the last year+ and hasn't had much (any?) time to work on this project, so it may be for someone else to do if they are interested.

@Jan1503
Copy link

Jan1503 commented May 25, 2023

@marcmerlin Yeah, I know. No pressure here.
It seems all modules today come with these 'advanced' PWM-Chips so one must be lucky to get one with the old interface style.
Thinking about that it might finally be easier to drive those beasts once the requirements and specifications are deciphered. But thats beyond my knowledge 😐
The chinese controller cards use some very weird raw byte packets that out of all tcp/udp standards 😆

@pryankster
Copy link

I found this archive on a chinese document website. it contains application notes, registers, and timing information for a bunch of different driver chips. The docs are all in chinese, but should be translatable with google translate.

The text along with it translates to: "Common LED control driver chips with register setting information: such as icn2038s, icn2053, mbi5151, mbi5152, mbi5153, mbi5169, mbi5170, mbi5224, mbi5324, mbi6023, etc."

I'm poring over it right now, hopefully the data will be useful for others, too.

@plavoie
Copy link

plavoie commented Sep 20, 2023

I made a register map for ICND2153. (Please excuse my poor English!) Anyone still interested in this issue? ICND2153

@wata-net This is very useful. I am working on a self-made ESP32 card. Right now I am trying to add support for the ICND2069 but so far I get absolutely nothing out of it. Which commercial control card did you use to get the trace for the ICND2153? I am planning on buying a commercial card that support the ICND2069 and probe it myself for reverse engineering purpose but its hard to see which one does support it. Any help would be appreciated.

@board707
Copy link

board707 commented Nov 5, 2023

Hi @wata-net
Thank you for your info.
I'm also interesting to figure out driver FM6363. Previously, I succeed to run panels with driver FM6353 ( similar to ICN2053) on an STM32 controller.

You wrote:

FM6363 must send DCLK continuously.

What does it mean? What should be the frequency of the DCLK signal comparing to GCLK ? How many signals per single row?

I tried to work with FM6363 as FM6353 - with DCLK running during greyscale data uploading only. I can see a picture on the panel, but with low brightness and some artefacts on it.

I have not succeeded in driving FM6363.

Can you tell what the problems were?

@board707
Copy link

board707 commented Nov 6, 2023

Hi @wata-net
Thank for your ideas about managing the FM6363 driver:

(1) DCLK is always output by TIM.
(2) DMA transfer to R1, G1, B1, R2, G2, B2, and LAT GPIO at the falling edge of DCLK.
(3) Make GCLK completely independent of the above. Output 74CLK in N pulse mode of TIM.
④When 74CLK output is finished, generate an interrupt and operate A, B, C to advance the line.

I done it that way:
(1a) DCLK is outputs by TIM most of time
(1b) During data transfers the TIM stopped, and DCLK, R1, G1, B1, R2, G2, B2, and LAT are controlled by software
(2) GCLK completely independent of the above. Output 74CLK in PWM mode by another TIM.
(3) When 74CLK output is finished, start DMA transfer of A, B, C to advance the line.

I got an image on the FM6363 panel.

My hardware:
Column driver: FM6363
Row driver: TC7262
Panel size: 64x32
Number of scans: 1/32 scan

MCU: STM32F103C8 @72MHz
GCLK freq: 9 MHz
DCLK freq: 7.2 MHz

@drvkmr
Copy link

drvkmr commented Nov 7, 2023

So I found out a company was going to bin hundereds of LED modules (weird 78x78 pixels resolution) from an large install, and managed to save most of them just at the right time. From a rough count, I have around 240 of them in boxes but am struggling to get them to work with ESP32 or Raspberry Pi. They are MBI5153 drivers which is why I am posting it here.
Any help will be appreciated, and am happy to ship a couple of panels to anyone who is keen and able to make them work (shipping from UK). They have 4 separate RGB lines (see pictures) - let me know what you guys think.
@CamelCaseName I saw your library, it is really well done! I am trying to do the same with ESP32 but it's not working... I don't have a background in electricals or hardware so it's not easy.
@plavoie I am planning to reverse engineer the commercial card as well, did you have any luck with it?
@PhantomRay did you solve this already? It'll be amazing if you can share the code please !
PXL_20231101_110559889 PORTRAIT

PXL_20231101_110607507 PORTRAIT ORIGINAL

PXL_20231031_142322088

@PhantomRay
Copy link

I can post the source code if you want.

@drvkmr
Copy link

drvkmr commented Nov 7, 2023

That'll be amazing @PhantomRay !!!

@PhantomRay
Copy link

Will do it tomorrow. Now it's 3am here.

@board707
Copy link

board707 commented Nov 7, 2023

@drvkmr
According to datasheets, the MBI5153 and ICN2153 drivers has different format of config registers and different protocols. I doubt that the code of @PhantomRay will compatible with your panels.
Your panels really looks very weird. Unusual size 78x78, with 20 scans (as written on the panel)... non-standard connectors...
It looks like these are some old panels with pre-HUB75 standard, incompatible with modern controllers, which is why they remained unused.

@drvkmr
Copy link

drvkmr commented Nov 7, 2023

I have seen it working with Novastar MRV-210 cards, trying to get one of them to try out.
@board707 they are different, but not drastically. I am hoping to adapt the code but yeah it might not be that straightforward.

@PhantomRay
Copy link

PhantomRay commented Nov 8, 2023

Source code for ESP32. No support will be provided.

https://github.com/PhantomRay/stm-led-esp32

Raspberry Pi Version:

https://github.com/PhantomRay/stm-led-matrix

@bsparacino
Copy link

@PhantomRay thanks for providing source code.
I have the 2153 driver and am trying to get it to work.
Using your branch, I was able to get a demo image to show using --led-multiplexing=2 but horizontal pixels seem to be shifted over.

I am willing to compensate you for your time to solve this issue.

PXL_20240111_174739499 MP

@PhantomRay
Copy link

@PhantomRay thanks for providing source code.

I have the 2153 driver and am trying to get it to work.

Using your branch, I was able to get a demo image to show using --led-multiplexing=2 but horizontal pixels seem to be shifted over.

I am willing to compensate you for your time to solve this issue.

PXL_20240111_174739499 MP

i was not the person who wrote it. Check the commits. The author used to work for my project. He is a pro in this area and willing to take paid work for a fee.

@hugojgl
Copy link

hugojgl commented Feb 18, 2024

@PhantomRay hi ray, I can pay please contact me. +17865304247 telegram

@PhantomRay
Copy link

@PhantomRay hi ray, I can pay please contact me. +17865304247 telegram

denissra is interested. He did the work.

@hugojgl
Copy link

hugojgl commented Feb 19, 2024

@PhantomRay hi ray, I can pay please contact me. +17865304247 telegram

denissra is interested. He did the work.

How I contact him? @PhantomRay @denissra

@denissra
Copy link

@PhantomRay hi ray, I can pay please contact me. +17865304247 telegram

denissra is interested. He did the work.

How I contact him? @PhantomRay @denissra

Hi. hugojgl. If you want my help, please send a mail.
issra.elt@outlook.com

@mrcodetastic
Copy link

I wrote a proof of concept code for mbi5153 panels

https://github.com/mrfaptastic/ESP32S3-MBI5153-DMG1075

I can't give support for this.

@krux77
Copy link

krux77 commented Mar 23, 2024

Hi @pryankster

It’s a long shot, bought a panel with the same pixelcount/dimensions. The seller claims that the driver chips work identical to FM6363’s although they are SM16380SC’s. It has the same amount of chips, also the 74HC245KA‘s.

Did you ever manage to get them to work? I have the arduino pi hat, the joy-it matrix ctrl and the dragon hat on the way.

Well, I'm at my wits' end trying to get these things to work. My panels (160x80) have three types of chips:

  • FM6363B - There are 60 of these. Labeled U{R,G,B}1-10 on the top and U{R,G,B}11-20 on the bottom. The datasheet and timing diagrams for this chip have been graciously posted by wata-net. Thanks!
  • VB5658 - There are 20 of these. labeled T1-10 on the left and T11-20 on the right. I assume that these are the row selectors (sinks?). I haven't been able to find any kind of datasheet for them.
  • 74HC245KA - I'm assuming that these are standard '245 octal non-inverting buffers. They are labeled "U2" and "U4" -- there doesn't appear to be a U1 or U3.
    The HUB75 connector has lines labeled A, B, and C. They go to the '245's: A → pin 2 and 3. B → pin 4 and 5. C → pin 6 and 7. The CK pin goes to U4 5 and 6. The LS pin to U4 pins 2,3,and 4. the OE pin goes to U4 7,8,9. I don't think that the R1/R2, G1/G2, B1/B2 lines go to the buffer, but I can't get a probe on to the UR1/UG1/UB1 6363B's to see if they go there. I assume that they do.

Here are some pictures

When I run my code (ESP32), I get a bright line of (seemingly) random data scrolling down the panel. If I reset the ESP32 the random data changes. The bright line is in chunks of 16 pixels. for most of the 16-pixel chunks, all of the LEDs are the same color, but some have random colors.

Nothing I do to change the contents of the frame buffer seems to make any difference to the data that I'm writing.

Here's a GIST of the code

I'm sure it's something simple.

Note that I don't care about the speed -- I'm just trying to make it work in software before I commit it to an FPGA.

@board707
Copy link

Hi @krux77
I have managed panel with FM6363 drivers to work, the details is in my post above. The code is a part of my DMD_STM32 library

@depili
Copy link

depili commented Sep 8, 2024

At least the MBI5252 datasheet is pretty clear: https://www.lcsc.com/datasheet/lcsc_datasheet_1809031521_MBI-MBI5252GP-A_C261127.pdf

Will be doing experiments with these soon as I have aquired a stack of modules with minor defects.

@depili
Copy link

depili commented Sep 9, 2024

And app note: https://www.neumueller.com/download/MBI5051%20MBI5052%20MBI5053%20Anwendungshinweis%20-%20Application%20Note.pdf apparently these are quite different from the traditional hub75 modules.

@mrcodetastic
Copy link

And app note: https://www.neumueller.com/download/MBI5051%20MBI5052%20MBI5053%20Anwendungshinweis%20-%20Application%20Note.pdf apparently these are quite different from the traditional hub75 modules.

Get a cheap ESP32-S2 or S3 and try with this: https://github.com/mrcodetastic/MBI5153-DMG1075-MatrixPanel-DMA

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests