对837-15070 LED控制板的逆向研究 | manalogues
文章

对837-15070 LED控制板的逆向研究

837-15093使用相同的MCU,同样的5V电源轨,唯一的区别是没有游戏中没有现存的固件,遂dump之。

  • 由于手中只有837-15070-02的子型号,部分接口和元件缺焊导致无法追踪实际用途,因此部分元器件仅为猜测;
  • 外围电路(供电、UART转RS232等)可替代性强,不涉及核心,故不再赘述。

前置知识:TI TLC5940,具有点校正与灰度PWM控制功能的16 通道 LED 驱动器

由于整块板基本都是围绕LED控制设计的,如果不提前了解这个驱动芯片,对于一些接口的用途分析可能难以理解,因此有必要在此先介绍一下这款芯片。

TLC5940是一颗串行输入的16通道LED驱动器,如果与常见的LED驱动对比,它与WS281x系列等十分相像,都是接受串行输入数据,再转化为并行输出的RGB信号,只不过WS281x系列只有3个通道(RGB),而TLC5940有16个。

虽然TLC5940也可以级联,但与WS281x不同,TLC5940依赖于额外的时钟输入来同步信号,芯片会在时钟的上升沿读入数据,并根据其它配置引脚决定数据的用途。因此,TLC5940的连接可以简化为下图:

从图中可以看出,级联起来的TLC5940需要共享一些信号线,下面依次介绍各信号线的意义:

  • SCLK:串行数据输入时钟,芯片在时钟上升沿将数据读入输入寄存器中
  • XLAT:锁存器触发信号。当串行数据输入完毕后,只有将XLAT拉高,输入寄存器中的数据才会转移到后续的寄存器中,否则寄存器的值将保持不变
  • BLANK:输出遮蔽信号。高电平时,所有输出强制无效

接下来的几个寄存器涉及TLC5940对于亮度的控制方式:点校正(Dot Correction,DC)和灰阶(Grayscale,GS)PWM。

点校正功能的本意是解决LED亮度一致性的问题,由于每一颗LED的亮度都存在差异,这种差异随灯珠老化还会进一步加大,因此TI在TLC5940上引进了点校正功能,通过给每个通道配备一个6bit的DC控制器和配套的DC寄存器,使得电路可以单独调整每一颗LED的电流以补偿亮度差异,从而在大面积运用LED(例如广告牌等)时在视觉上表现出相同的亮度1。另外,TLC5940为每个通道都配备了EEPROM,可以用于写入校正数据,保证断电后不会丢失。

灰阶是另一种控制LED亮度的方式,TLC5940的每一个通道都有一个12bit的灰阶PWM控制器,用于控制亮度。它的原理是芯片内部有一个12bit的GS计数器,并与GS时钟(下面的GSCLK)相连,每经过4096个时钟周期,所有输出将被强制置关闭,一个PWM周期结束。另外,每一个输出通道都有一个GS寄存器,内部存储着当前的灰阶亮度信息,当GS计数器的值等于该通道GS寄存器的值时,灰阶PWM控制器就会关闭输出,直至下一个PWM周期开始。一个PWM周期结束后,需要将BLANK置为高电平,此时GS计数器会被清空,所有输出也会重新打开。

  • GSCLK:灰阶PWM控制的参考时钟
  • DCPRG:DC编程切换。置为高电平时,DC控制器中使用DC寄存器中的校正数据;置为低电平时,DC控制器使用EEPROM中的校正数据
  • VPRG:多功能输入引脚,用于决定串行输入的数据类型:
    • 置为低电平时,输入的数据被认为是灰阶数据,并使得输入寄存器的数据被存入灰阶寄存器
    • 置为高电平时,输入的数据被认为是点校正数据,并使得输入寄存器的数据被存入DC寄存器
    • 输入一个远大于高电平的电压(大于VCC,小于24V)时,进入EEPROM编程模式,此时DC寄存器中的数据可以在DCPRG的操纵下被写入EEPROM

接口定义

CN1:未知,NH-10P

似乎可以通过外部连接直接控制LED控制IC。疑似与837-15093的9pin输出一一对应。

引脚 定义
1 +5V
2 LED IC VPRG(模式选择)
3 LED IC BLANK
4 LED IC XLAT
5 LED IC GSCLK
6 LED IC SCLK
7 LED IC SIN
8 IC1 pin8(疑似SOUT)
9 GND
10 GND

CN2:未知,NH-9P

通过IC7与LED控制IC的各个总线相连。与CN1一样,高度怀疑与15093的输出一一对应,甚至pin数都一样,但因为IC7的存在,在型号未知的情况下无法对用途进行推测。合理怀疑在原设计中,15093可以绕过15070的MCU进行控制,甚至可以通过串连多个15070,达到让15093一拖n的效果。

CN3:LED输出,XAD-2*16P

针脚定义从1至32分别对应32个输出通道,在此不再赘述。

CN5 & CN6:CAN总线

与很多控制板一样空焊了,可以参考这里

CN6:串口输入,XA-7P

引脚 定义
1  
2 RXD
3 TXD
4 GND
5  
6  
7 GND

CN7:未知,mini USB

看起来很像JVS的设计,RS485的差分线连接至了空焊的RS485芯片。关于JVS的定义,请参考这里

CN8:四通道输出,NH-4P

四个使用MOS管控制的输出通道,与837-15257上的输出设计类似。

引脚 定义
1 OUTPUT1
2 OUTPUT2
3 OUTPUT3
4 OUTPUT4

CN9:未知,NH-11P

通过光耦提供了四个输入(电路设计与837-15257的输入如出一辙);另外还有四个通道通过电平转换IC与拨码开关连在一起,意味着可以从外部控制拨码开关的值。

引脚 定义
1 通过电阻接地,应该是检测是否连接
2 INPUT1
3 INPUT2
4 INPUT3
5 INPUT4
6 +5V OUT
7 DIPSW1_1
8 DIPSW1_2
9 DIPSW1_3
10 DIPSW1_4
11 GND

CN10:ICSP,PH-6P

与15093完全相同的设计,请参考这里

引脚 定义
1 MISO
2 +5V
3 SCK
4 MOSI
5 RESET
6 GND

CN11:用于给LED供电的12V输出,XAD-2*8P

16个针脚全部为+12V。

CN12:12V电源输入,VH-3P

引脚 定义
1 +12V
2 GND
3 GND

IC引脚定义

IC1 ATMEGA32M1-AU

引脚定义如下,加粗为非IO引脚,串口RT视角为MCU

引脚 定义 备注
1 LED GSCLK & CN10 MISO 前者串接47Ohm电阻
2 CN10 MOSI 22kOhm上拉
3 OUTPUT4 22kOhm下拉
4 VCC  
5 GND  
6 RO CAN 接收器输出
7 LED4 & RE# CAN 接收器使能
8 CN1_8  
9 LED SIN 串接47Ohm电阻
10 XTAL Input  
11 XTAL Output  
12 CN10 SCK 串口RX,22kOhm下拉
13 DIPSW1_1 22kOhm上拉
14 INPUT2  
15 INPUT3  
16 INPUT4  
17 DIPSW1_4 22kOhm上拉
18 DIPSW1_3 22kOhm上拉
19 AVCC  
20 AGND  
21 AREF  
22 DIPSW1_2 22kOhm上拉
23 LED BLANK 串接47Ohm电阻
24 LED XLAT 串接47Ohm电阻
25 LED VPRG 串接47Ohm电阻
26 LED3 & INPUT1  
27 OUTPUT3 22kOhm下拉
28 LED SCLK 串接47Ohm电阻
29 OUTPUT1 22kOhm下拉
30 OUTPUT2 22kOhm下拉
31 CN10 RESET 22kOhm上拉
32 串口输出使能  

IC2&IC3

由于15070共有32通道输出,因此其配备有两颗TLC5940,分别为IC2和IC3,其中:IC2的OUT015、IC3的OUT0-15分别对应输出接口CN3的OUTPUT1-16和17-32。

IC2的SOUT连接IC3的SIN。

参考文档

本文由作者按照 CC BY 4.0 进行授权