Control the backlight of the Truly LCD from SerComm SHG1500 router front panel using an Arduino library.
While I was sampling various pins of the front panel connector with a logic analyzer, I noticed a strange protocol on pin 18. I was able to trace the PCB track from pin 18 near an area that seemed like a DC-DC converter. It directly drove an integrated circuit marked T43. Searching for it revealed some LDO linear voltage regulators, but this was not the case. Pin 18 carried a digital protocol that would be of no use for an ordinary voltage regulator. But without information I could only write code that would mimic the protocol I sampled. Things changed once the GPL source code has been made public. The signal on pin 18 had a meaning. It was necessary to turn on/off and dim the backlight. Upon powering the front panel on the breadboard, the backlight stayed off. You can turn it on by setting pin 18 high but if you want to adjust its level you must send two bytes using a custom serial protocol. Before getting to the code let’s see an overview of the pins and connections on the breadboard.
Front panel connector adapter on breadboard |
The LED backlight driver is located in the bottom left corner of the front panel. Two tracks from that area of the PCB go to the display FPC connector (pin 37 seems to be cathode and 38 is anode).
Backlight controller IC T43 on Truly LCD PCB |
The recommended sequence after power on is to reset the backlight then immediately send intensity bytes. In this way, backlight will turn on with the desired intensity. If you only send reset sequence or just set pin high, the intensity is not configured. However backlight will still turn on, with a high intensity (probably maximum).
Backlight protocol overview |
First byte is always 0x72. Probably this is some kind of address. Then the intensity value is sent. For this controller, values between 0 and 31 are accepted (0 to 0x1F). The Arduino compatible library I wrote should be used like this. All functions can be called both in setup() and loop(). But there is an order you must follow. First call setControlPin() passing the pin to this function. Do whatever you want while backlight is off (configure LCD). Then reset() the backlight and setIntensity(). Anywhere in the code to turn on or off the backlight use setOnOff(). To adjust intensity later on, there is no need to call reset() before. It doesn’t matter if backlight is off, setIntensity() will turn it on. So does reset().
The library is hosted on GitHub. Remember that although I used this with Truly LCDv6 front panel, maybe other hardware versions use this controller too. The other I have, FPGA LCDv3, doesn’t.
No comments :
Post a Comment
Please read the comments policy before publishing your comment.