[分享] 记一块无资料LCD点阵屏的逆向分析

cruelfox   2024-4-5 23:43 楼主
  各种小显示屏对玩单片机的人总是有吸引力的。现在网上可以淘到的各种屏(模块),比如LCD、OLED、ePaper,跟十几年前的液晶屏价格比起来就是白菜价了。而且网上有那种没有资料的“研究价”的电子玩意儿卖,价格低得离谱。玩没有资料的东西,就是乱折腾了(折腾之前慎重考虑是否值得花这个时间)。
  我买过很多屏,买的时候想是屯着后面用(而且早些年即使不很贵的屏和现在比也贵了)……结果就是多年过去了也没做出几个带屏的东西来。
 
  虽然我近两年淡出了DIY圈子,偶尔还是止不住收破烂的习惯复发。这次分享的是一块单色没有背光的LCD屏的逆向工作。我买过的屏当中这块尺寸是第二大的,不需要背光,估计对比度会不错。因为没有资料,买就是风险自担,我就当它是块高分辨率的图形液晶来搞了,买三块还不到五元,搞不定也损失不大。
233356mmvddwwdd4i6quzw.jpg
  屏的接口是26脚的FPC,而且上面的丝印还给了提示,第1脚和第26脚的功能就知道了。这种屏用COG封装,控制器芯片就在玻璃表面上(而不是在PCB上),背后由黑胶盖住。可以揭掉屏正面玻璃上那块黑胶布看到芯片的引脚。
233356dqlkqg7hqvbe8glp.jpg
233356sr5qcm2hp1h1rrlr.jpg
233356rqjdkryi33jr3ky8.jpg
  要把这样的屏用起来,最关键的是要知道它的控制器芯片是什么型号。而识别控制器芯片的有效办法就是根据它的尺寸(裸片的长、宽)和印脚排布,去跟可能符合的控制芯片手册里的描述比对。我是没有见识过多少驱动控制器的,没有经验可循。
  (见前一张图)从控制芯片将连出液晶的行列驱动线,这些线会在玻璃表面走,连到液晶像素矩阵去。从某些角度可以看到这些线的走向,但因为线很密集,需要用放大镜甚至显微镜才能区分其中每条线。我家没有体视显微镜,就动用了生物显微镜来凑合看。我数出来通往左或右边的行驱动线是80条,无疑这是一块 ???x160 规格的点阵屏,是值得搞一搞的。
 
  于是上网查了一下160 行的常用驱动器型号,我运气不错,没费多少时间就找到一个吻合的:
233356ct46az0htzhc43mm.png
  余下的事情就是把FPC的引脚对应到芯片上去了。因为芯片周围——就是照片上黄色的矩形区域——我在显微镜下也看不出来走线,所以这部分只能猜了。因为玻璃上面只能走一层线,这里不会有交叉线的情况,所以按照芯片引脚的顺序理,难度不会很大。
  已知26脚(最左边)是D7, 根据UC1611s的图,挨着的就必然是D6到D0了(设计使用8-bit并行总线接口),D15~D8就没有引出。
233356pqqkg4g3ga44joqh.png
  排线最右边是VB0+这个脚,所以看一下可以猜出相邻的都是升压电容的脚。
233356ddqoq4azt7aa6qka.png
  和FPC对照,可以确认这部分了。
233356kp5pu0u9pzt56tpp.jpg
  电源和地的走线因为电流相对大,在芯片上用的脚比较多,所以FPC这边和玻璃上的线路连接点也会多些。FPC上的两面走线是容易分析的,根据左右顺序可以区别VSS和VDD.
233356hnnoj6ntbooe7oox.png
  于是容易判断的就整理出来了:
1…8 D7…D0
9 ?
10 ?
11 ?
12 ?
13 ?
14 VSS
15 GND (FPC丝印)
16 VDD
17 ?
18 VLCD
19 VA0-
20 VA1-
21 VA1+
22 VA0+
23 VB0-
24 VB1-
25 VB1+
26 VB0+
  VDD和VLCD之间还有一个脚,从图上看觉得奇怪。我后来注意到是Recommended COG Layout图上是这么连的,把VLCD_OUT和VLCD_IN接在了一起。这块屏则像是把VLCD_IN, VLCD_OUT都引出来了。
  剩下就5个引脚了,起控制作用。但是芯片的D0到VSS之间可比这还多了,就需要判断这5个是其中哪5个了,非得上电进行逻辑测试不可。
  于是逆向工作告一段落,我需要弄块FPC转接板才能测试。
 
  过了一段时间之后……(多久没做PCB了,这次还是自己画的)
233356d44h4mh8blu8gbur.jpg
  接上屏,首先用万用表发现了14和15脚是相通的:很正常。然后通电测试了VDD和VSS没有问题。下面主要任务就是识别那5个待定的脚了。
  给屏接了3.3V电压后,D7~D0这八个数据脚用万用表量并不是浮空的,这出乎我意料。而那五个待定脚都是浮空的——作为输入脚不带上下拉。下面就要控制这五个脚,观察数据脚的变动。我把它们接到Analog Discovery2 上面。
233356yysc667pacg7op2t.jpg
  用Analog Discovery2的数字IO直接控制和观察,在电脑上操作比较方便。我手上没有更方便的工具了,如果用MCU或FPGA这些的话需要自己再开发一下。
 
  UC1611s支持多种接口形式,这块屏可能只支持8位并行数据了。8080/6800模式都可能。
233356jdua20w0ps3huy5d.png
  芯片上从D0到VSS间的引脚,按顺序有:
RST CS0 CD WR0 WR1 BM1 BM0 ID0 ID1
  待定引脚是其中的5个,用排列组合法去试?没有必要穷举。怎么判断猜测是否正确?如果写一个UC1611s的驱动去让屏幕显示,根据是否能显示判断控制信号接得对不对,又引入可能出问题的其它环节了。
  因为控制器是有“读”动作的,如果读正确,可以看到D7~D0的输出。
233356flvpmmxt57twaypx.png
  我就以“Get Status”操作,去试读取控制器的状态,看D7~D0上是否变化,输出数据是否吻合,来判断猜的对不对。
  ……这个过程中我犯了一个错误。因为已经隔了一断时间了,我电脑上PDF软件历史记录里面最近的是UC1698的手册,我误把控制器当成了UC1698去猜,虽然读到了Status字节,但内容怎么都对不上,跟芯片引脚也不完全对上,蹊跷了……耽误了些时间
233356z4froro2ra9fhdh0.jpg
  发觉了错误并用回了UC1611s的手册之后,问题得以解决了。
  发现的映射关系是:
RST CS0 CD WR0 WR1 BM1 BM0 ID0 ID1
9   10 11 12     13  
  这个屏没有把CS0引出,是我没有预计到的。
 
  余下的事情就是把升压电荷泵用的电容接上,用STM32来进行驱动测试了。
  设置基本驱动参数,用Set all pixel on命令让屏有反应:
233356s4ffv3jv4vtnfatv.jpg
  最后,生成一些pattern的数据显示,验证完成。
233356rrsuh1z1wrhh44uk.jpg
  通过这个显示内容确定了屏的分辨率是256x160像素。不是很高,也不要随便跟TFT比嘛,有时像素点不需要太小。
/*************  THE END ***************/

回复评论 (11)

那个FPC软板设计的比较费功夫,接口扩出来不少

学习了

点赞  2024-4-6 10:11

这个帖子非常好,楼主把自己逆向的心得都写的很清楚,楼主辛苦了。我有机会也写一下逆向未知屏等相关的东西。

点赞  2024-4-6 13:39

要把这样的屏用起来,最关键的是要知道它的控制器芯片是什么型号。而识别控制器芯片的有效办法就是根据它的尺寸(裸片的长、宽)和印脚排布,去跟可能符合的控制芯片手册里的描述比对。

学习了!

点赞  2024-4-6 14:23

到查芯片型号这一步,就是到了我放弃的时候了,剩下的就交给其它人完成吧

点赞  2024-4-7 09:54

好多这种屏都是定制的断码屏  

在爱好的道路上不断前进,在生活的迷雾中播撒光引
点赞  2024-4-7 16:54

楼主分享的技术资料参考价值非常大,既讲解了技术方面的内容,又把自己的分析过程详实的记录了下来,非常值得借鉴

点赞  2024-4-8 10:21

大佬可以去搞维修了,维修的大佬就是这么应对没有原理图的。

点赞  2024-4-9 10:08

膜拜大佬


点赞  2024-4-19 19:44

芯片大小和引脚布局也太难查了,要是有个网站把这个都汇总一下就好了

点赞  2024-4-30 15:32

楼主厉害,把整个逆向的流程心得都写的很清楚,学习了。

 

点赞  2024-5-8 17:07

楼主厉害,光是这些资料查看,工具及软件的使用就劝退了很多人

点赞  2024-6-14 13:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复