新闻中心

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

接收数据 同上

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

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

1 84FF00F00000F00000000000000000000000
2 00807F 7E 7D 7C 7B 7A797877767574737271706F 6E 6D 6C 6B
3 6A696867666564636261605F 5E 5D 5C 5B 5A595857565554
4 535251504F 4E 4D 4C
5 4B 4A494847464544434241403F 3E 3D 3C 3B 3A3938373635
6 34333231302F 2E 2D 2C 2B 2A292827262524232221201F 1E
7 1D 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系列协议分

评论


技术专区

关闭