对837-15070 LED控制板的逆向研究
与837-15093使用相同的MCU,同样的5V电源轨,唯一的区别是没有游戏中没有现存的固件,遂dump之。
- 15070-02_flash
- e2prom:为空,没有内容
- 由于手中只有
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。