陈晓军
接修一台三星数码王DX-668B中九接收机,故障表现是:开机没有任何反应。根据过去经验推断这种故障大多都是电源不正常或因刷机失误导致Flash芯片内软件错误造成的,机器应该很容易修复。
打开机器外壳,没有发现电容鼓包之类的明显故障,通电测量以IC1 THX203H为核心的电源板20V、15V和3.3V三路电压输出均正常,再测量主板上两路由+3.3V经LDO芯片1117C18C降压获得的+1.8V也正常,看来整机电源工作都是正常的,怀疑是之前因升级内部软件而刷机失败造成的故障。该主板采用的是Hi2023EC+Hi3121+RDA5812双晶10芯方案,如图1所示,机器后面是5针接口,通过观察PCB板上的走线发现接口定义依次是:TX、RX、Vcc、GND和BL(从高频头处开始),用万用表测其电压分别是:3.3V、3.6V、5V(该电压是15V经R471 2K降压后获得)、0V和0V,很明显RX引脚有点偏高,而BL脚与正常时是1.6V相差也很大。抱着试试看的态度用刷机小板将机器与戴尔Latitude D600笔记本电脑相连,再打开ABS_Flasher_V1.6软件,给接收机通电后无法联机,又用一只限流电阻将VCC与BL相连,再在软件里点“复位”按钮还是无任何反应,看来Flash芯片U103 MX25L8005内部的BootLoader程序已经损坏了。
要想修复此机就得想办法往MX25L8005中写入正确的Bin固件,可是现在已经不联机了,怎么办呢?通过查找相关资料得知可以通过“借鸡下蛋”来解决,即可以找一台比较容易与电脑联机的国芯方案中九接收机,再将待写入程序的MX25L8005安装到国芯机子上去,借助国芯刷机软件将正确的Bin固件写入,最后重新安装好MX25L8005即可。该办法虽然很好,可问题是笔者手里的国芯芯片接收机一个月前就送给亲友家了,现在手里没有同类型的机器,看来还得另辟蹊径来解决。又在网上一翻狂搜之后发现,可以通过自制25系列并口编程器来修复砖机,刚好笔者的戴尔Latitude D600笔记本电脑带有并口,所以决定试一试。25系列Flash芯片引脚功能如下表所示,并口编程器的原理见图2所示,
从图中可以看到:25系列Flash芯片只有TMS(同时通过上拉电阻接到Vcc)、TDO、TDI和TCK四根线通过串联180Ω电阻与计算机并口相应的引脚相连,外加Gnd才五根线,而WP和HOLD引脚都是直接接至Vcc,串连两只二极管的作用是将+5V电压降至+3.3V左右,因此电路还是比较简单的。马上找来相应的器材:并口是从一个旧计算机加密狗上拆下来的,180Ω电阻不易找,参照以前DM500 JTAG电路,决定用100Ω电阻代替,其它元件从废板上拆下即可。于是打开858风枪准备把MX25L8005从主板上拆下来照电路进行焊接,此时笔者突然想到:MX25L8005体积很小,若取下后再搭线焊接实在不方便,能否利用“就汤煮面条”的办法来解决呢?即MX25L8005芯片不从原主板上拆下,直接使用原主板上的电路来为MX25L8005进行供电,只用很短的电缆将TMS、TDO、TDI和TCK四根线与并口连接,因为MX25L8005芯片在原主板上的工作条件应该与在图2中并口编程器上的工作条件差不多的。又查看了该接收机的主板,发现MX25L8005与Hi2023EC是通过RM13(47Ω)排阻相连,排阻刚好是4个,正是对应MX25L8005的TMS、TDO、TDI和TCK四个引脚,如图3所示,为减少烧录程序时Hi2023EC对MX25L8005芯片的影响,将该RM13排阻拆除,用导线和100Ω电阻将TMS、TDO、TDI、TCK及地线与并口上对应引脚连接,再插上计算机并口,如图4所示。
接下来就是完成烧录程序的任务了。首先就是选择适合三星数码王DX-668B中九接收机的Bin文件,经过网上一翻搜索,终于下载到与原机硬件配置完全相同的天成TCD-299ABS接收机Bin文件,由于下载到的Bin文件是2010年初未升级前备份的数据,所以还必须用最新版“小蜜蜂(海尔自搜修改工具)”软件处理成能够自动升级的软件才能使用,如图5所示。Bin文件准备好后,运行SPI并口编程器软件SPI Flash V1.8(注:SPI Flash软件目前版本较多,不过V1.8稳定且容易与编程器连接),在软件右上角的端口选项中选择LPT1,右边的芯片类型中选择 EON EN25T(因为笔者认为EON芯片市面上较多,所以就选择了此种类型,若无法识别也可以根据实际情况选择其它类型的芯片试试),当选择好芯片的型号后,软件会弹出如图6所示的对话框,点“确定”按钮以便进行下一步操作。打开接收机电源,再点击软件上标有ID字样的图标,没想到这时弹出的“SPI器件信息”对话框能够正确的显示出该机器上的25系列Flash芯片的型号和大小,同时软件下方也显示“Device read OK”字样,见图7所示,看来计算机与MX25L8005芯片间的通信正常,点“确定”退出“SPI器件信息”对话框。接下来点击“擦除器件”按钮清空MX25L8005内的数据,然后单点“打开”按钮并定位到刚才制作好的Bin文件,如图8所示,这时软件主界面中显示的便是Bin文件的数据,点击工具栏中的“编程器件”按钮软件便向MX25L8005中写入数据,如图9所示,等到软件底部显示“Device Programmed OK”字样时表示编程完毕,由于SPI Flash软件在通信时没有指定流控制,也没有应答机制确认是否接收到数据,因此还必须进行校验操作以保证写入的数据与原文件一致,单击“校验”按钮即可实现对数据的校验,如图10所示,若软件底栏中出现“Device Verified OK”字样代表数据写入准确无误。当数据校验无法通过时,可以重新擦除器件中的数据再次写入并进行校验,一般多操作几次就正常了,笔者共进行了五次这样的操作才将数据正确无误的写入到MX25L8005芯片中。数据写好之后关闭接收机电源,拆除掉五根引线,将RM13排阻重新焊回主板,怀着忐忑不安的心情再次打开接收机电源,没想到机器面板先是显示“000”字样,接着绿灯闪了一下,然后又出现“ON”字样,最后又显示频道号“058”字样,如图11所示,很明显机器现在已经能正常启动了,马上接上电视机和室外馈线,开机后便自动搜索节目,搜索完毕后46套节目收看正常,至此,三星数码王DX-668B中九“砖机”成功修复。
机器成功修复后,笔者出于好奇又测量了主板上的五针升级接口电压,发现此时BL脚已经恢复至1.6V,用升级小板也能与电脑中的ABS_Flasher_V1.6软件正常连接,不过当点击读取或写入Bin固件按钮时均无任何反应,看来该接收机Hi2023EC芯片内的升级接口电路已经损坏了,笔者估计的原因可能是之前的使用者在刷机时错误连接了相关引脚造成的。
【知识链接】
SPI(Serial Peripheral Interface 串行外设接口)总线系统是一种同步串行外设接口,是Motorola公司首先在其MC68HCXX系列处理器上定义的,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器,分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR;外围设备可以是FlashRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有些SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效;在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。SPI接口的缺点是没有指定的流控制,没有应答机制确认是否接收到数据。