新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > STC12C系列的协议分析

STC12C系列的协议分析

作者: 时间:2016-11-29 来源:网络 收藏

我正在想,那么C级别的单片机是不是xx 43呢~

以下数据帧省略帧头帧尾帧长度校验码

——————–核对MCU型号帧————————-

发送数据 50 07 00 36 01 MCU型号

接收数据 8F

——————-波特率实验帧—————————–

发送数据 8F xx yy zz aa dd 83

xx=0xC0 (C0=1100 0000,意思就是T1x12,波特率加倍)

yy=定时器重载值,按照加倍/1T计算。

zz=设置校验值,计算方式是 ff=xx

aa=波特率校验值,计算方式是aa=2 * (0×100 -yy)

dd=延时值,延时多少时间片切换

83为ISP定时常数,这个值适用于12M晶振,在STC手册中有不明显的描述:

1//#define ENABLE_IAP 0x80//if SYSCLK<30MHz
2//#define ENABLE_IAP 0x81//if SYSCLK<24MHz
3//#define ENABLE_IAP 0x82//if SYSCLK<20MHz
4//#define ENABLE_IAP 0x83//if SYSCLK<12MHz
5//#define ENABLE_IAP 0x84//if SYSCLK<6MHz
6//#define ENABLE_IAP 0x85//if SYSCLK<3MHz
7//#define ENABLE_IAP 0x86//if SYSCLK<2MHz
8//#define ENABLE_IAP 0x87//if SYSCLK<1MHz

但是实际上测试似乎83这个值在40M都没有问题。

接受数据:

8F xx yy zz aa dd 83

—————————–波特率确认帧

发送数据 8E xx yy zz dd 83

接收数据 同上

——————————擦除帧:

这里我有充分的理由怀疑老妖是有毛病的。都到了下载程序的地步了还搞这么诡异的擦除命令:

184FF00F00000F00000000000000000000000
200807F 7E 7D 7C 7B 7A797877767574737271706F 6E 6D 6C 6B
36A696867666564636261605F 5E 5D 5C 5B 5A595857565554
4535251504F 4E 4D 4C
54B 4A494847464544434241403F 3E 3D 3C 3B 3A3938373635
634333231302F 2E 2D 2C 2B 2A292827262524232221201F 1E
71D 1C 1B 1A191817161514131211100F 0E

回应:

00 00

———————数据帧

发送 00 00 00 ADDR 00 LEN EF 0×80 bytes数据

ADDR = 2BYTE 的地址,高位在前低位在后

LEN 似乎是数据长度

数据字段如果不足80 bytes填ff补足

回应 07 ChkSum

ChkSum的算法和前面介绍的一样,只不过只是针对数据部分的校验

——————设置型号帧:

69 07 00 36 01 MCU_MODEL

MCU_MODEL是MCU型号

回应就一个字 8D

——————-设置选项帧

发送:8D FF x1 x2 FF FF FF FF FF x3 FF FF FF FF FF FF 00 A9 0A A6

x1,x2,x3参见前面的选项信息

接受:50 FF x1 x2 FF x3 03 FF 固件版本 FF x1 x2 FF x3 FF 00 A9 00 03 00 9A 04 79 1A 00 AD FF 00 62

——————RESET帧

发送:82 00 00

没有回应。

具体实现可以看kSTC12-ISP的实现方式


上一页 1 2 下一页

关键词: STC12C系列协议分

评论


技术专区

关闭