注意:如果被宏晶科技的员工看到这份协议,请见谅。因为错误也有你们的一半,是你们激发我去开发这份协议得,详见文档后边的《后话》小节。同时这也说明一个问题,你自己的保密工作做得不够。因为我做矛的技术并不高明,只是你们的盾太弱了。
当年我想从你们那得到协议,未果,于是便有了下边的这些。
强调:请各位阅读者不要胡乱传播,以免损害了宏晶科技的利益。建议各位购买宏晶专用的ISP烧写器。
协议帧简介:主要构成如下
Head | Sign | Reserved | Length | Frame | Data | Checkksum | Trail |
各个填充区详细说明:
名称 | 长度 | 功能 |
Head | 2-Byte | 包头 (0x46,0xB9) |
Sign | 1-Byte | 标识 (0x6A或0x68) |
Reserved | 1-Byte | 预留区 (填充0x00) |
Length | 1-Byte | (Head + |
Frame | 1-Byte | 用以区分不同的帧 |
Data | 0~0x8A Bytes | 数据 |
Checksum | 1 Byte | 校验和 |
Trail | 1 Byte | 包尾 (0x16) |
包头Head:(0x46,0xB9)
标识 Sign:0x6A表示下载的数据,0x68表示4052返回的数据
预留 Reserved:填充0x00
包长Length:是包头区,包长区,数据区的总长度
帧类型Frame:区分不同的帧
值Value | 帧类型描述 |
0x00 | 数据帧:包内存放要写入Flash的数据 |
0x80 | 确认帧,没有数据 |
0x81 | 错误帧,没有数据 |
0x82 | 结束帧 |
0x84 | 准备帧,准备开始传送数据 |
0x8E | 波特率更改 |
0x8F | 波特率检验 |
0x30,0x50,0x86,0x8D,0x52 暂时不需要(未详解) |
校验和Checksum:仅计算包头区,包长区,数据区
计算方式为:以字节为单位进行加计算,计算出三个区的总和后,再加1,取低8位。
波特率检验帧(0x8F)和波特率更改帧(0x8E)
波特率检验帧(0x8F):
SetBaud | Reserved | ISPWrite |
各个填充区详细说明:
名称 | 长度 | 功能 |
SetBaud | 2-Byte | 用以设置MCU的波特率参数,填充为:(##xx xxxxB,##H) 其中第1个字节中##是需要填充的,依次代表4052芯片中的SMOD位和T1x12位,第2个字节为填入TL1和TH1中的数据,Timer1使用方式2—AutoReload。 |
Reserved | 2-Byte | 预留区(填充0x00) |
ISPWrite | 1-Byte | 设置ISP写,应为0x8#,其中#的范围为0~7,用以设置ISP擦写的等待时间,与晶振速率有关,具体请参照《STC12C2052AD.pdf》的p40。 |
波特率更新帧(0x8E):
SetBaud | Reserved |
填充方法与波特率检验(0x8F)帧中的一样,且要求数据一样。
返回值:返回接收到的数据和命令。并且在接收到波特率更新帧后采用新的波特率发送数据。
3.3.准备帧(0x80)和引导帧(0x84)
准备帧(0x80):可以不带数据。
引导帧(0x84) :可以不带数据,至少在3.5和3.6版中,可以不用去管。
返回值:准备帧(0x80)和引导帧(0x84)的返回值相同,均返回准备帧。
用以下格式填充协议包中的数据区
Res 1 | Address | Res 2 | Len | FlashData |
名称 | 长度 | 功能 |
Res 1 | 3-Byte | 预留区1 (填充0x00) |
Address | 2-Byte | 地址区 |
Res 2 | 1-Byte | 预留区2 (填充0x00) |
Len | 1-Byte | Flash数据长度 |
FlashData | 1-0x80 | 存放Flash数据 |
例如:将0x80个数据写入地址:0x8080,则填充如下:
00,00,00,08,80,00,80,########(表示0x80字节数据)
返回值:返回准备帧(0x80),带一字节数据,该数据为上一帧Flash数据的校验和。
其中校验和计算方式与整包的计算方式相同,但应强调的是,计算的结果再减1,详见(2.基本概念 中的 校验和模块)。例如:如果上一包数据为0x80个0,则按照计算函数则得到0x01,最后减1,即校验值为0x00。
该帧用于结束ISP下载,可以不带数据。接收到该帧后,ISP会先返回数据,然后清空RAM,继而Reset进入用户程序空间。
用户377235 2014-4-18 17:22
用户377235 2013-8-17 17:03
用户377235 2013-1-2 20:03
用户313632 2011-1-15 18:03
walnutcy_696810119 2009-10-30 17:35
用户1487602 2009-10-30 10:43
walnutcy_696810119 2008-10-29 19:19
用户1324644 2008-10-28 08:31
walnutcy_696810119 2008-10-15 19:00
walnutcy_696810119 2008-10-15 18:59