当前位置:首页 > 电子

stc-isp烧录 下载 协议 过程分析

admin8年前 (2018-06-22)电子9205

一、数据封装格式

包头

标示

数据包长度

命令字

内容

校验

包尾

1.  包头:2字节,固定为:0x46,0xB9。

2. 标示:1字节,分两种,ARM发给MCU :0x6A;MCU回复给ARM :0x68。

3.   数据包长度:2字节,除包头外数据包总长度。

4.   命令:1字节。

5.   内容:可以为空,最长134字节。

6.   校验:1字节,为包头之后,校验之前所有字节相加的值,不计进位。

7.   包尾:1字节,固定为:0x16。

二、命令列表

命令字

说明

回复

说明

0x7F

引导MCU进入ISP模式。

0x00

内容中携带MCU自身配置信息。

0x8F

测试波特率指令。

0x8F

内容是与波特率相关的信息。

0x8E

设置波特率指令。

0x8E

内容是与波特率相关的信息。

0x80

握手指令。

0x80 握手回复,内容为空。

0x84

文件大小指令。

0x80

文件大小回复,内容为空。

0x00

发送文件指令。   

0x80

发送文件回复,内容为1个字节。

0x8D

设置选项指令。

0x8D

设置选项应答

0x50

MCU选项信息。

0x10

MCU选项信息应答。

0x82

退出ISP模式指令。

0x80

退出应答。

三、通信流程

1.      ARM首先连续给MCU发送0x7F,引导MCU进入ISP模式。

2.      MCU上电,收到0x7F后,进入ISP模式,回复自身配置信息,这条数据有点特殊,因为它没有包头,以0x68(MCU给ARM回复的标示)开头,其余都符合该协议的数据封装格式。

3.      ARM收到MCU自身配置参数后,会给MCU发送测试波特率的指令。

4.      MCU收到测试波特率指令后,以相同的命令字回复给ARM。

5.      ARM收到测试应答后,给MCU发送设置波特率的命令。

6.      MCU收到设置波特率指令后,以相同的命令字给ARM回复。

7.      ARM收到设置波特率应答后,给MCU发送握手指令,MCU以相同的命令字给ARM回复。如此,重复5次,握手结束。

PS:由于时间关系,以上流程数据包中携带的内容,具体是什么含义,没有仔细研究。

8.      握手结束后,ARM会给MCU发送文件大小,擦除芯片的指令,此数据包中的内容为写入MCU的文件大小,占7个字节,不足7个字节的用0x33补齐。

  文件大小计算方法:

在MCU中,以512B为单位,把存储空间分为若干份,此处文件大小的含义为写入文件占存储空间的份数, 不足一份的按一份计算:

        file_copies= file_size >> 9;

    file_copies = ((file_copies << 9) ==file_size) ? file_copies : (file_copies + 1);

    file_size为写入bin文件的大小。

9.      MCU收到上述指令后,会根据写入文件的大小,擦除芯片,并给ARM回复。

10.   ARM收到文件大小的回复后,开始向MCU发生文件,封装格式:

预留位

写入地址

内容长度

文件内容

             1.        预留位:2字节,0x00, 0x00。

              2.        写入地址:2字节,相邻两个数据包的地址以0x80递增。

             3.        内容长度:2字节,固定长度为:0x00, 0x80。

             4.        文件内容:0x80(128)字节,为实际读到的bin文件内容。

    注意:写入文件的大小必须为0x80×4的倍数。

11.  文件发送完毕后,ARM会向发送设置选项信息(具体什么含义,不清楚),MCU会给予回复。

12.  收到上述回复后,ARM再次向MCU发送MCU选项信息(具体什么含义,不清楚),MCU会给予回复。

13.  最后,ARM向MCU发送退出ISP模式指令,MCU收到指令后,给予回复,程序写入成功。

扫描二维码推送至手机访问。

版权声明:本文由视觉博客发布,如需转载请注明出处。

本文链接:https://www.feelsight.cn/post/66.html

“stc-isp烧录 下载 协议 过程分析” 的相关文章

内存堆和栈的区别

内存堆和栈的区别

在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。 堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网…

如何看懂电路图(一)--基本的电路符号

如何看懂电路图(一)--基本的电路符号

电子设备中有各种各样的图。能够说明它们工作原理的是电原理图,简称电路图。 电路图有两种,一种是说明模拟电子电路工作原理的。它用各种图形符号表示电阻器、电容器、开关、晶体管等实物,用线条把元器件和单元电路按工作原理的关系连接起来。这种图长期以来就一直被叫做电路图。 另一种是说明…

如何看懂电路图(二)-电源电路

如何看懂电路图(二)-电源电路

前 面介绍了电路图中的元器件的作用和符号。一张电路图通常有几十乃至几百个,它们的连线纵横交叉,形式变化多端,初学者往往不知道该从什么地方开始, 怎样才能读懂它。其实电子电路本身有很强的规律性,不管多复杂的电路,经过分析可以发现,它是由少数几个单元电路组成的。好象孩子们玩的积木,虽然只有十 来种或二…

基于PIC单片机和AD7705的高精度信号采集系统设计

基于PIC单片机和AD7705的高精度信号采集系统设计

在工业现场测试过程中,由于生产中的各种参数的测试数据对生产过程具有重要的意义,因此对各种测试数据精度要求较高。而对于传统的传感器,比如压阻式、应变桥式、热电偶、热电阻、电容式以及压电式传感器,输出的一般是毫伏级的微弱模拟信号,温度特性差,而且在传输过程中信噪比明显降低。因此需要设计高精度稳定性强的信…

单片机学习心得—学习单片机必看

08年的时候,因为制作FM发射电路采用了BH1415的芯片,需要用到单片机控制,所以开始接触使用单片机,虽然以前读书时作为一门功课学过,不过也快丢荒了近5年了,基本上都忘光了,也算是从头学起了吧。 经常在群、论坛里看到有人问:怎么学单片机?也常看到有人说学…

如何看懂电路图(四)-集成运算放大器(运放)

如何看懂电路图(四)-集成运算放大器(运放)

集成运算放大器是一种把多级直流放大器做在一个集成片上,只要在外部接少量元件就能完成各种功能的器件。因为它早期是用在模拟计算机中做加法器、乘法器用 的,所以叫做运算放大器。它有十多个引脚,一般都用有 3 个端子的三角形符号表示,如图 10 。它有两个输入端、 1 个输出端,上面那个输入端叫做反相输入端…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。