EEVblog Electronics Community Forum
Electronics => Beginners => Topic started by: mkiijam on October 30, 2020, 04:47:47 pm
-
Hello All,
Here is the back story. This LCD module is from an Roland TD-11 drum brain. You can google it if needed. The schematic is NOT available, nor really is the part (maybe I'm just to cheap, or maybe I just like a good mystery?)
The LCD was cracked, no longer functions, and I would like to find something that will work.
Known details:
1. The resolution is 128 x 64 (I counted the dots on a close picture of a working one)
2. There are 12 pins going into the LCD module from the main board of the drum brain.
3. The LCD module does NOT appear to be COG or OLED as I can't see any chips and there is a separate backlight (not part of the 12 pins mentioned on point "2"
4. The LCD module can have its contrast adjusted, through a user setting in a menu. More about this later.
5. LCD driving IC is ROLAND RBA02021ABG. This MCU is used in other Roland gear and appears to drive many other styles of LCDs.
LCD / MAIN BOARD PINOUT, known details and the MYSTERY...
When powered on and sitting in a nominal state.
PIN 1. is sitting at 3.3Vdc with a "negative" pulse every second or so. I think it's negative because it appears below the scope trace in AC mode.
PIN 2. is at 3.2Vdc with no pulses. I'm pretty sure this the LCD_RST line as it is 2.2k to ground and matches a known Roland RESET scheme.
PIN 3. 3.3Vdc, has shorter pulses than PIN 1 but with the same 1 second interval. It is also the PIN that has activity when the unit is asked to adjust CONTRAST in the user menu. ( I know this by going through a "blind" procedure to adjust contrast step by step without the need to see the LCD)
PIN 4. 3.3Vdc very similar to PIN 1. Longer pulses every second.
PIN 5. is held low at .03 Vdc and pulses "up" to 3.3v every second
PIN 6. is 3.3Vdc. No pulses. It appears to be the VDC trace as it is thicker than the others AND connects to the D+3.3V line
PIN 7. GND
PIN 8. Capacitor to PIN 9
PIN 9. see above
PIN 10. Capacitor to PIN 11
PIN 11 see above
PIN12. Capacitor and 4.7M in parallel to GND
So, any guess as to what this is?
SPI and charge pump capacitors??? If so, how to ID SO, CLK, CD, CS etc?
-
https://www.aliexpress.com/i/4000370015852.html (https://www.aliexpress.com/i/4000370015852.html)
(https://www.eevblog.com/forum/beginners/128-x-64-mystery-lcd-identify/?action=dlattach;attach=1100398;image)
Maybe.
-
Yeah... that's dang close if not it! How did you find that so fast!?!?!?
PINs 6,7, 12 looks right for sure. The cap pins make sense.
PIN 2 looks right as another schematic lists pin 2 as RESEST and has the same 2.2k to ground as this main board does.
-
Yeah... that's dang close if not it! How did you find that so fast!?!?!?
/--/
I'd like to say that it comes from years and years of accumulated knowledge, skills and experience, but really all I did was search for "128 x 64 lcd 12 pin". Yes, I have used similar a few times.
Do yourself a favor though, show some close up pics of the LCD back (any numbers etc) and see if you can identify a controller. Maybe you can't do all that, but you can find plenty of interface examples, but there could be some timing issues.
-
Yeah.... There is no usable info on the LCD module.
okay, so here is some progress.
I hooked it up best I could to another SPI type OLED.
https://www.amazon.com/HiLetgo-128x64-SSH1106-Display-Arduino/dp/B01N1LZT8L (https://www.amazon.com/HiLetgo-128x64-SSH1106-Display-Arduino/dp/B01N1LZT8L)
PIN 1 of my main board went to "CS" on the OLED
PIN 2 to "RES"
PIN 3 to "SDC"
PIN 4 to "CLK"
PIN 5 to "MOSI"
Then of course just VCC and GND
AND this is what I got when I powered it up.
The "STICK" and "TEMPO" make sense as this is a drum module LCD, but the other stuff???
-
It looks like it could not handle the fast SPI clock or firmware tried to do some windowing commands that are not supported by this LCD.
There is a number of very similar, but subtly different protocols/controllers. You can see that in a later part the firmware tried to draw a frame, but every other pixel is blank.
Do you have any pictured of the broken display? Can you grab some SPI commands being sent using a logic analyzer? Especially the part after the initialization.
-
Here is a close up of the LCD working.
-
So the dots may be normal, but at the very least the image is flipped. Which again, tracks well with differences in displays. They all have similar commands, but some configuration bits, like flipping are different.
Having captures of the communication may help figure out the controller type.
-
Ahhh...
Only a scope, no logic analyzer.
-
It would be pretty hard to capture enough data with a scope.
Any way, most commonly used controllers are SSD1306 and SH1106, which is almost a clone of SSD1306, but with minor differences. Specifically with the display RAM size and layout.
So the easiest thing you can do is figure out the display controller in the display you bought and get the other one.
And buying things from https://www.buydisplay.com/ (https://www.buydisplay.com/) is a way to ensure that you actually get the display with a controller you need.
-
I'm am guessing (and it is only a guess) that it was an ST controller - something like an ST7567 or an earlier one consistent with the time that the Roland was made. I'm guessing because of the fit with the 12 pin interface. I know I could be wrong.
It was probably not an SH1106. Also note that he never connected the A0 line. Timing problems? Sure all that stuff. But look, this "needle in a haystack approach" is likely not going to end well.
@mkiijam I and now @ataradov have asked you about pics of the broken display, but it is as though you never heard us. Do you or do you not have the broken display - if you don't have it then at least we can stop asking about that part. If you do, please provide some pictures as that could, potentially provide important information. Also, clear pics of where the 12 pin connector attached to the main board - anything that might be helpful like that.
If you don't have the display anymore, you have to research as much as you can to get some information about that display. Repairs of the unit, repairs of similar units and so on.
-
PIN 3 "A0" went to SDC
-
PIN 3 "A0" went to SDC
Ok gotya SDC is like SD which is like A0. So, yes, you connected A0 and I was wrong to say that you had not connected A0.
So, what does the other side of the the broken LCD look like? If it is completely encased and there are no numbers on the case, can you peel it off so we can see the board under the case. Edit: Stripping away the backlight if you can. Just looking for clues.
Also, what is around where the 12 pin connector attaches to the main board. Is it possible to also take a picture of that? Edit: IOW where are those components caps and rs that you mentioned in your first post.
-
I still think the only viable approach here is to just try multiple displays with different controllers.
Or capture the initialization command sequence and match the used commands/registers to known controllers.
Those displays rarely have useful markings on them.
-
I still think the only viable approach here is to just try multiple displays with different controllers.
Or capture the initialization command sequence and match the used commands/registers to known controllers.
Those displays rarely have useful markings on them.
Yeah, well, I can't disagree with you, depending on how you want to define "viable" and if you have a number of different displays/controllers to try ESPECIALLY ones that have a 12-pin connector that seems to match his interface as he described in his first post.
So, yes, if he had that display with the ST controller that I linked to in my first post, I would definitely say, "try that".
Can't hurt to search for clues though. Especially since you damn well know that somewhere at Roland at some time was a service manual that identifies the LCD. What do they do, burn all the service manuals when they stop selling/supporting the product? I think it is only 8 years old - sheesh.
-
Those displays rarely have useful markings on them.
Just curious - is the "TSE8G0708FPC-A2-E" the identifier for the LCD the way it is on this one https://www.romasterl.com/index.php?main_page=product_info&products_id=204219 (https://www.romasterl.com/index.php?main_page=product_info&products_id=204219)
-
Just curious - is the "TSE8G0708FPC-A2-E" the identifier for the LCD
Doubt it. It is the identifier of the cable by itself.
the way it is on this one
What makes you think it is a display identifier in this case? I mean it says 12864 as part of the name, at least. But is this the actual ordering number?
Well, it looks like LX-12864B11 is the generic name for this type of display. But I see it with all sorts of connector style.
I've looked at a few displays I have for which I know exact part number, and none of them have anything close to the part number printed on the cable or the display.
-
Ahhh...
Only a scope, no logic analyzer.
FX2LP (Saleae clone) or similar would be enough to capture the commands - and are cheap as chips.
The fact that you're even getting something remotely sensible with that OLED suggests you are already in the right ballpark for identifying the controller command set. My guess is that it is a descendant of the classic command set made famous by the S6B0724/0708 and the like from Samsung.
(I have done similar work in the past. (http://web.archive.org/web/20150912171758/http://wiki.s1mp3.org/LCMControllers))
-
OK, I'll leave it up to the experts.
-
Here is a portion of a schematic that uses the same Roland driver MCU.
It uses some 18 pin LCD...
-
Another picture with my jumper wires partially in the way.
The top left ORANGE wire is PIN 1, then the GRAY is PIN 2.
You can see the 4.7M and caps on PIN 12 etc..
-
This looks like a typical set of components for SSD1306. But 4.7 M for reference current resistor is a bit high.
But realistically it van be any controller, again.
If you really want to figure it out, get one of those cheapo logic analyzers and get the initialization commands https://www.ebay.com/itm/USB-Logic-Analyzer-Device-Set-Compatible-to-Saleae-24MHz-8CH-for-ARM-FPGA-M100/253841718379 (https://www.ebay.com/itm/USB-Logic-Analyzer-Device-Set-Compatible-to-Saleae-24MHz-8CH-for-ARM-FPGA-M100/253841718379)
-
Okay, I think I will...
Side question. Is the a COG LCD??? I can't see any "chip" on the glass... it looks completely transparent to me. I think I may not understand COG?
-
The controller is mounted on the glass. It is not etched on the glass itself.
In your case the chip is sandwiched under the place where the cable is attached. You can actually see it on your picture, just a small part or bare silicon sticking out.
-
AH!
It's all becoming clear now.
So the MCU puts out some kind of language that the LCD controller then sends to the actual GLASS unit. So, if I can see the language then we can guess which imbedded chip(controller) we need?
-
Any way, most commonly used controllers are SSD1306 and SH1106, which is almost a clone of SSD1306, but with minor differences.
SSD1306 and SH1106 are for OLED displays. If the Roland has an LCD display then it won't be one of those controllers.
It could have a similar instruction set but the init sequence would probably be different.
-
Yes, those SPI pins carry a very specific protocol (a series of register writes). Just knowing what register addresses are used and what values are written is enough to compare against the known controller datasheets.
-
Yes, those SPI pins carry a very specific protocol (a series of register writes). Just knowing what register addresses are used and what values are written is enough to compare against the known controller datasheets.
Well, I got the logic analyzer on the way. I'll update when it gets in.
-
SSD1306 and SH1106 are for OLED displays. If the Roland has an LCD display then it won't be one of those controllers.
It could have a similar instruction set but the init sequence would probably be different.
But the display that was already tried and partially working is OLED, so the one in Roland should be also OLED.
There is no way regular LCD initialization code would even remotely work for OLED.
Also, there is no backlight voltage on the connector, so it is 100% OLED.
-
There is no way regular LCD initialization code would even remotely work for OLED.
The OP mentions a backlight and the photo in this post (https://www.eevblog.com/forum/beginners/128-x-64-mystery-lcd-identify/msg3303828/#msg3303828) appears to confirm that. An OLED wouldn't have a backlight. Also, the mention of a contrast control would further imply an LCD. The OLED displays have "contrast" commands but they're not very effective.
-
It uses a separate backlight on another two wire cable. The backlight can be dimmed in the user menu.
-
SSD1306 and SH1106 are for OLED displays. If the Roland has an LCD display then it won't be one of those controllers.
It could have a similar instruction set but the init sequence would probably be different.
But the display that was already tried and partially working is OLED, so the one in Roland should be also OLED.
There is no way regular LCD initialization code would even remotely work for OLED.
Also, there is no backlight voltage on the connector, so it is 100% OLED.
The OLED controller manufacturers realised that having a command set nearly identical to existing LCD controllers would decrease design-in effort, so they did. For example,
SSD1306:
0x = set column start address LSB
1x = set column start address MSB
20 xx = set memory addressing mode
21 xx yy = set column address
22 xx yy = set page address
40~7f = set display start line
81 xx = set contrast
a0, a1 = segment output direction
a4, a5 = normal, pixel test (all on)
a6, a7 = normal/inverted mode
ae, af = display on, display off
bx = set RAM page start address
c0, c8 = set COM output direction
e3 = nop
S6B0724:
0x = set column start address LSB
1x = set column start address MSB
20~27 regulator resistor select
40~7f = set display start line
81 xx = set reference voltage (contrast)
a0, a1 = segment output direction
a4, a5 = normal, pixel test (all on)
a6, a7 = normal/inverted mode
ae, af = display on, display off
bx = set RAM page start address
c0, c8 = set COM output direction
e2 = reset
e3 = nop
The former is the common OLED controller that's been discussed in this thread previously, the latter is an older LCD controller from the late 90s/early 2000s that doesn't offer windowing/scrolling capabilities. Another one similar to the latter is the Sitronix ST7565P.
-
So the obvious question is, Do I really have any hopes of finding an after market LCD screen that will work?
-
So the obvious question is, Do I really have any hopes of finding an after market LCD screen that will work?
I would say, yes you do. You may not find the exact physical form factor, but you should be able to find a display that works.
I still don't see any evidence of an a actual backlight, so focus on OLED displays. And there are not too many types to try.
-
Here is the backlight
-
Oh, ok. Then you should be looking for the actual LCDs, not OLED ones.
The name of the common controller for that was already mentioned.
Still, knowing the commands that are used will help clarify things. And the worst case scenario - you can just use a small MCU to act as a translation layer for an OLED display, since that already works more than it should.
-
Thanks to that picture, there's another part number that shows you can buy a replacement, but it is rather expensive:
https://www.merktron.es/es/roland/5251-lcd-spd-sx-cmf2p0791-ec3700007r0.html (https://www.merktron.es/es/roland/5251-lcd-spd-sx-cmf2p0791-ec3700007r0.html)
It also suggests the same part fits the TD-25.
When you get your LA you can see the commands it sends, and that should narrow it down enough to find a replacement. My bet is still on ST7565/S6B0724.
-
Thanks to that picture, there's another part number that shows you can buy a replacement, but it is rather expensive:
https://www.merktron.es/es/roland/5251-lcd-spd-sx-cmf2p0791-ec3700007r0.html (https://www.merktron.es/es/roland/5251-lcd-spd-sx-cmf2p0791-ec3700007r0.html)
It also suggests the same part fits the TD-25.
When you get your LA you can see the commands it sends, and that should narrow it down enough to find a replacement. My bet is still on ST7565/S6B0724.
Yeah... the part is available from Roland as well... like $100 or so. Where is the fun in that?
Okay, I've got the logic analyzer... NOW WHAT!?!? Just kidding (kinda) I'm jumping into the world of figuring out how to hook this up without any software or docs! YEA!
-
Okay, I've recorded the logic signals coming from PINs 1-5....
AND?
-
First of all, in the Saleae software add an SPI decoder and make sure you can see bytes decoded without the errors.
You need to record very specific parts, not just random signals. You need to catch very first commands it sends to the LCD after power up.
-
First of all, in the Saleae software add an SPI decoder and make sure you can see bytes decoded without the errors.
You need to record very specific parts, not just random signals. You need to catch very first commands it sends to the LCD after power up.
I'm using PulseView.
I have added the SPI decoder and it seems like it's capturing something. I captured when it first turned on. I also asked it to decode with ST7735, but there were errors.
What is a ST7567? That Chinese LCD that seemed to have the same 12 pin functions says it uses that CHIP.
-
You have 1 MHz sampling rate selected. This is way too low. Select the highest it will go (24 MHz) and hope that the actual clock is slow enough to meaningfully capture it. You need to zoom in on a single byte and make sure that you see periodic clock.
And then attach the actual capture file.
ST7567 is the controller IC it can be used in 100s of different displays. But all those displays will have a compatible command set because of that.
-
Or possibly an ST7565 which is quite common. BTW, the ST7735 is meant for color displays.
-
Pulse view seems to glitch at 24MHz
Here is a file at 12MHz
-
Sometimes the capture looks like the real SPI, but occasionally there seems to be some strange noise.
If you look at D1, which I assume was CS. You can see that for the first couple transfers it is fine and it aligned at 8 bits. But then just a few transfers in, it is just a random noise not aligned to anything. The data is also repeated on D3 trace.
So double check your connections to the logic analyzer.
But you are on the right path. You can start to see the commands being sent. Now you can start matching that to controller datasheets.
-
Connections look right.
I don't see D1 and D3 as the same, but not sure what you mean.
-
Look at the chunk at +3172170us in your log. In this part the signals look corrupted.
Do multiple captures and compare them .See if you get the same results each time.
-
This seems different..
-
This one has issues with the CS on the second and third transfers (+2919594us and +2929596 us).
Figure out what is wrong with your setup. CS must remain low for the whole duration of the clock.
Just double checking. Do you have ground of the analyzer connected to the ground of the device?
-
...Just double checking. Do you have ground of the analyzer connected to the ground of the device?
Oops...
How about this one?
-
This looks like something. Now you need to extract the command that are sent and match them against the datasheets.
In this case you see the commands:
1. 0xe2
2. 0x81 0x8f
3. 0x24
4. 0xa0 0xc2 0x2e
......
You need to write down the rest of them.
0xE2 is a Reset of aforementioned S6B0724. So this is a decent first candidate.
-
It's definitely in the S6B0724 family --- that e2 for reset gives it away --- but not it nor ST7565/ST7567 either, because 81 xx sets the contrast and the majority of controllers only offer 5 or 6 bits of adjustment, whereas this one is setting it to 8f and that implies a full 8 bits. c2 also sets bit 1 while most others in that family use bit 3 of cx for COM scanning direction control and leave bit 1 undefined.
I found one controller that matches the above, the UltraChip UC1601s, whose company slogan in the datasheet (http://svetomuzyka.narod.ru/download/uc1601s/uc1601s_a1.25.pdf) proclaims "The Coolest LCD Driver, Ever!!" :-DD
Others from UC like the UC1701 don't have 8 bits of contrast, so the '1601s is currently the best match. Note that this controller does have scrolling functionality, which the S6B0* and ST7565/7 lack.
A good (but incomplete) comparison: https://github.com/olikraus/u8g2/blob/master/doc/controller_cmds.txt (https://github.com/olikraus/u8g2/blob/master/doc/controller_cmds.txt)
-
So any ideas where to find an LCD that uses this chip?
-
You need to transcribe the commands first and see all the commands that are used.
So far the commands are also compatible with ST7567, which is a more modern and widely available chip. It is likely to just work.
There are plenty of suppliers of displays with that controller. I personally like BuyDisplay. Something like this may work https://www.buydisplay.com/1-54-inch-blue-128x64-graphic-lcd-display-module-spi-for-arduino-1 (https://www.buydisplay.com/1-54-inch-blue-128x64-graphic-lcd-display-module-spi-for-arduino-1) But they have plenty of other options, pick whatever fits the size.
-
I suppose the ST7565 wont work?
I see tons that use that chip...
-
Well, you have not extracted the commands from the logic capture, so it is impossible to tell if it will work. If you do that, you could compare the commands against the datasheet.
A few commands that we have here are the same.
-
Neither the 7565, 7567, nor SH1106 OLED the OP tried without success has any scrolling/windowing feature (the SH1106 doesn't even have an e2 RESET command), so I suspect a 7565/7 LCD would probably show nearly the same results as the SH1106.
But I haven't and won't go through the few hundred MB of serial capture data that was posted to read out the commands either, that's something OP needs to do.
-
Neither the 7565, 7567, nor SH1106 OLED the OP tried without success has any scrolling/windowing feature (the SH1106 doesn't even have an e2 RESET command), so I suspect a 7565/7 LCD would probably show nearly the same results as the SH1106.
But I haven't and won't go through the few hundred MB of serial capture data that was posted to read out the commands either, that's something OP needs to do.
I will do whatever grunt work you guys say. At this point I haven't a clue of how to "go through..." the data. But, I will dig in somehow! Thank you all for the help so far, this has been very neat!
-
I will do whatever grunt work you guys say. At this point I haven't a clue of how to "go through..." the data. But, I will dig in somehow! Thank you all for the help so far, this has been very neat!
Did you setup the protocol decoder in the logic analyzer? In your logs the first command that is sent is 0xE2. Do you see that value in your decodes? If so, you need to got though the rest of them and write down all the unique commands you see.
For long transfers you only need to write down first 5-7 bytes,
-
Like this stuff from the "MOSI Transfer" lines?
E2
81, 8F
24A0, C2, 2E
EB
A4, A6, 89, AF
F3, 3F, 00, 10, B0, 00, 00, 00,...
00, 10, B0
2E, 24, A0, EB, 81, 8F, C2, 40, 85, 89, A4, A6, F1, 3F, F2, 00, F3, 3F, AF
81, 8C
-
Yes, this. You basically need to find as many unique commands as you can.
Then download the datasheets for all the mentioned controllers and see if the command makes sense.
The datasheets mostly describe the commands in binary, so 0xE2 would be 1110 0010.
In most cases only the first byte after the CS was asserted matters, but it also useful to check for each command if followup bytes and their count make sense.
-
The majority of the data will be display (bitmap) data. Look at only the bytes where the CD line is low.
...and if the bytes you posted are all commands, it pretty much confirms that the controller is a UC1601:
E2 - reset
81, 8F - set Vbias (contrast) to 143
24 - set temp compensation to 0 (default)
A0 - set frame rate 80fps
C2 - SEG/column sequence inversion
2E - set power control, default
EB - set bias ratio 9
A4 - disable all-on mode
A6 - disable inverse display
89 - set RAM address control default
AF - enable display
F3, 3F - set partial display end = 63
00 - column address LSB = 0
10 - column address MSB = 0
B0 - page address = 0
...
40 - set scroll line 0
85 - partial display on
89 - set RAM address control default
A4 - disable all-on mode
A6 - disable inverse display
F1, 3F - set COM end = 63
F2, 00 - set partial display start = 0
F3, 3F - set partial display end = 63
AF - enable display
81, 8C - set Vbias (contrast) to 140
Bolded commands are not present on ST7565/7, and in particular Fx are "do not use" test commands. I can't find any other controller in that family with the F1/F2/F3 and of the right size (UltraChip has a few others of different sizes but the same set of commands.)
-
Well, just for fun, I tried the ST7567 and it didn't work
U1601 is where it is at I suppose... no just to try to find one!
-
Along with looking for a U1601 based LCD, are there any software based emulators or something? Like a USB into your computer that then translates the LCD signal into an image you can see?
-
I'm not aware of anything like that. It is really easier to just look at the command sent to the display and find the right controller.
-
are there any software based emulators or something?
You could probably emulate the U1601 using a FPGA. This project emulates a SSD1306 to a VGA monitor but you could likely modify it for U1601 and output to whatever you like:
https://github.com/uXeBoy/VGA1306
-
are there any software based emulators or something?
You could probably emulate the U1601 using a FPGA. This project emulates a SSD1306 to a VGA monitor but you could likely modify it for U1601 and output to whatever you like:
https://github.com/uXeBoy/VGA1306
That is very cool but way over my head.
I hate this question, but I have looked. Am I missing something or is a LCD with the U1601 controller impossible to find?
-
Along with looking for a U1601 based LCD, are there any software based emulators or something? Like a USB into your computer that then translates the LCD signal into an image you can see?
I'm not aware of anything like that. It is really easier to just look at the command sent to the display and find the right controller.
Wow, that could be a cool project, though... It would be a handy device, (well, software, really.)
-
I hate this question, but I have looked. Am I missing something or is a LCD with the U1601 controller impossible to find?
What physical size is this display, anyway?
There is a 2.8" on that buydisplay site that uses a UC1701, you would need to compare the datasheets to your commands to see if it matches because the commands aren't identical to the UC1601 but it does look like it is one of that family.
https://www.buydisplay.com/blue-2-8-inch-128x64-display-serial-lcd-module-spi-with-touch-panel (https://www.buydisplay.com/blue-2-8-inch-128x64-display-serial-lcd-module-spi-with-touch-panel)
It says "touchpanel" but that's an optional accessory...
Edit: Oh, wait... that one's not the 12-pin style you're looking for...
-
This looks pretty darn close, and uses the UC1601 controller:
https://www.ebay.co.uk/itm/123192333083 (https://www.ebay.co.uk/itm/123192333083)
Try searching eBay "including description" for "UC1601" and you'll find more (and cheaper) examples.
Thanks for an interesting thread btw, taught me a lot about identifying LCD drivers!
-
This screen appears in aliexpress
Roland TD-11 LCD Can search