STC单片机的ISP协议.doc

STC单片机的ISP协议.doc

ID:59252483

大小:45.00 KB

页数:3页

时间:2020-09-08

STC单片机的ISP协议.doc_第1页
STC单片机的ISP协议.doc_第2页
STC单片机的ISP协议.doc_第3页
资源描述:

《STC单片机的ISP协议.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、两年前,曾经用过STC的单片机,当时对他的那个ISP下载功能很是感兴趣,且当时也想实现一个IAP升级办法,又不想占用他现有的flash空间,毕竟还是有点小。就想办法着手研究了一下,就写了一段代码在8051内核的64K空间依次读取所有的数据,最后得到了一个2k多一点的ISP所用的bin文件,反汇编得到汇编文件,就在那花功夫细细地看了看实现方法,分析得出了基本的下载协议,两年后,我觉得这些东西可以考虑公开了,让再选用STC的兄弟提前参考下,毕竟在某种情况下STC很易被解,(STC的ISP被写坏后还可再升回去,说明非ROM型,这个是不是突破点呢?有设备的兄弟可想想办法,找个工具把ISP部分写掉,然

2、后把程序区的程序读出来,这个需要验证,偶不做这些事,只是在想:我们应该想办法避免掉这种问题。)注意:如果被宏晶科技的员工看到这份协议,请见谅。因为错误也有你们的一半,是你们激发我去开发这份协议得,详见文档后边的《后话》小节。同时这也说明一个问题,你自己的保密工作做得不够。因为我做矛的技术并不高明,只是你们的盾太弱了。当年我想从你们那得到协议,未果,于是便有了下边的这些。 强调:请各位阅读者不要胡乱传播,以免损害了宏晶科技的利益。建议各位购买宏晶专用的ISP烧写器。附协议简介:该版本协议现已通过在ISP版本为3.5和3.6上的测试,可以实现可靠下载。 协议帧简介:主要构成如下HeadSignR

3、eservedLengthFrameDataCheckksumTrail  各个填充区详细说明:名称长度功能Head2-Byte包头(0x46,0xB9)Sign1-Byte标识(0x6A或0x68)Reserved1-Byte预留区(填充0x00)Length1-Byte(Head+Length+Data)的总长Frame1-Byte用以区分不同的帧Data0~0x8ABytes数据Checksum1Byte校验和Trail1Byte包尾(0x16)包头Head:(0x46,0xB9)标识Sign:0x6A表示下载的数据,0x68表示4052返回的数据预留Reserved:填充0x00包长

4、Length:是包头区,包长区,数据区的总长度帧类型Frame:区分不同的帧               值Value帧类型描述0x00数据帧:包内存放要写入Flash的数据0x80确认帧,没有数据0x81错误帧,没有数据0x82结束帧0x84准备帧,准备开始传送数据0x8E波特率更改0x8F波特率检验0x30,0x50,0x86,0x8D,0x52暂时不需要(未详解) 数据区Data:用以存放要传送的数据校验和Checksum:仅计算包头区,包长区,数据区      计算方式为:以字节为单位进行加计算,计算出三个区的总和后,再加1,取低8位。 激活帧就一个字节,是固定的,不使用协议格式,值

5、为0x7F。通过这个来协商实现ISP下载所用波特率选择,内部有办法测晶振,所以用外部晶振也可以下载,新出厂的芯片用内部RC振荡下载。波特率检验帧(0x8F)和波特率更改帧(0x8E)  波特率检验帧(0x8F):SetBaudReservedISPWrite   各个填充区详细说明:名称长度功能SetBaud2-Byte用以设置MCU的波特率参数,填充为:(##xxxxxxB,##H)其中第1个字节中##是需要填充的,依次代表4052芯片中的SMOD位和T1x12位,第2个字节为填入TL1和TH1中的数据,Timer1使用方式2—AutoReload。Reserved2-Byte预留区(填充

6、0x00)ISPWrite1-Byte设置ISP写,应为0x8#,其中#的范围为0~7,用以设置ISP擦写的等待时间,与晶振速率有关,具体请参照《STC12C2052AD.pdf》的p40。 波特率更新帧(0x8E):SetBaudReserved  填充方法与波特率检验(0x8F)帧中的一样,且要求数据一样。返回值:返回接收到的数据和命令。并且在接收到波特率更新帧后采用新的波特率发送数据。 3.3.准备帧(0x80)和引导帧(0x84)    准备帧(0x80):可以不带数据。引导帧(0x84):可以不带数据,至少在3.5和3.6版中,可以不用去管。返回值:准备帧(0x80)和引导帧(0x

7、84)的返回值相同,均返回准备帧。 3.4.数据帧(0x00)      用以下格式填充协议包中的数据区Res1AddressRes2LenFlashData名称长度功能Res13-Byte预留区1(填充0x00)Address2-Byte地址区Res21-Byte预留区2(填充0x00)Len1-ByteFlash数据长度FlashData1-0x80Bytes存放Flash数据  例如:将0x80个数据写

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。