最近研究STC的脱机编程器,不是用IAP单片机的那种,而是像STM8或AVR一样的手持,固件在SD卡中的那种。但是在分析协议的时候发现STC的官方很贱的。给的示例程序中有STC15系列用别的单片机写入固件的例子,研究后发现,串口无法发送7F,仔细发现程序大体可行,细节被官方修改了,定时器初始化TMOD设置是错了,该后发现应该差不多了。可以正常读取芯片型号等信息。但是跟我截取下载软件中的数据少了两次交互,少了上位机计算最高波特率的程序。想想不用也罢,毕竟我可以自己设定波特率。
2400 波特率
S 7F7F 7F 7F 7F 7F 7F 7F 7F 7F 7F moster
固件版本号:7.1.5SR
46 B9 68 00 2B 50 8B DF 75 9B F7 BB 9F00 A8 B1 F0 FD 26 CD F7 FF
71 53 00 F4 04 05 0658 9B 02 16 1D 20 23 23 00 F4 80 04 D0 11 7A 16
(
机器型号等配置)
0 P
1 Q
2 R
.....
A=Z
S 46B9 6A 00 20
00 0B 00C0 80 C0 FF C0 00 80 80 80 FF 80 00 40 80 40 FF 40 00 00 80 00 FF 00 0B 11 16
R 46 B9 68 00 20
00 0B 0C DD 12 4B 17 C3 19 C1 24 89 2F 4C 34 24 4941 5D B4 51 BB 71 87 FF 00 09 AB 16
测试波特率 S 46 B9 6A 00 20
00 0C 76 80 77 80 78 80 7980 7A 80 7B 80 7540 76 40 77 40 78 40 79 40 7A 40 0A B6 16
R 46 B9 68 00 20
00 0C 23 E9 23 FD 23 FD24 11 24 2F 24 48 47 AC 47 E8 48 10 48 15 48 3D48 79 08 F1 16
更改波特率S 46B9 6A 00 0E
01 7740 FF D0 80 78 81 04 78 16
R 46B9 68 00 07
01 00 70 16
现在可以成功的骗过官方软件,下载到一个不存在的CPU中。
但是我通过STC12单片机烧15的程序就会在切换到115200后发送数据再次握手就没有了回应了。
//设置参数(设置从芯片使用最高的波特率以及擦除等待时间等参数)
TxBuffer[0] = 0x01; //01设置?
TxBuffer[1] = arg; //
TxBuffer[2] = 0x40; //1T //40
TxBuffer[3] = HIBYTE(B15(MAXBAUD)); // FF E8(B15(MAXBAUD))%256 //LOBYTEHIBYTEH设置从芯片波特率
TxBuffer[4] = LOBYTE(B15(MAXBAUD)); //( (B15(MAXBAUD))/256
TxBuffer[5] = 0x00; // 回应
TxBuffer[6] = 0x00; // 时间
TxBuffer[7] = 0xC3; // 数值
有没有相关大神可以拉一把的,或者有第三方下载软件源码的朋友麻烦发一下程序参考一下,那个系列的都无所谓。
邮箱:
750123208@qq.com