STC51烧录程序时序分析

2019-04-15 12:48发布


STC51烧录程序时序分析
Note1:关于STC51的冷启动下载和复位
STC51单片机里面有一段出厂时固化的程序,这段程序的作用是检测串口是否要下载程序,不需要则执行单片机内的用户程序。每次启动时运行这端程序,这就是为什么每次下载时要冷启动。而复位后单片机是从地址0X0000H处开始执行,地址0X0000H又会指向主程序入口,即主函数处,即片内下载的用户程序而不会执行前面已经固化的检测串口那段程序。这就是为什么单片机每次下载要冷启动,而复位不行。注意,程序前面的宏定义什么的东西不占用系统时间,所以主程序即主函数处。
有一个办法可以给那些需要加电立刻启动的用户,STC单片机可以设置为加电时只有P1.0/P1.1为低电平时开始下载程序,否则直接执行用户程序。这种办法快,不用等前面检测串口的那段时间。STC51单片机冷启动是必须的而复位电路不是必须的,不管是冷启动还是手动启动。也就是想下载程序必须冷启动,而有没有复位电路无所谓。但是最小系统板上必须有复位电路,无论是上电复位,还是上电加手动复位,虽然在一些简单的程序中看不出区别,但是因为复位操作会对一些特殊寄存器产生影响,这样没有复位操作的话再次执行函数的时候会出现错误。单片机断电后在通电也会从主函数处继续执行,可能是单片机断电后地址自动回到0X0000H,但是那些特殊寄存器里的值不会改变。
单片机的上电复位和手动复位是比较简单的电路,只要是根据单片机手册要求的复位时间TRESET要小于复位电路中的RC常数。
单片机下载程序一般都是通过串口,即上位机(STC-ISP)与单片机的底层通信都是通过串口协议实现的,两者之间更为高级的通信协议是建立在串口协议上的。
Note2:上位机(STC-ISP)检测单片机时序
 波特率即为串口发送每比特所占用的时间,此处为2400,即每比特所占用的时间为1/2400=4.167*E-4 (S);可以点击检测MCU选项,上位机开始与单片机握手。整个握手过程可以从图2.2中获得,图中橙 {MOD}为上位机发送的询问脉冲,蓝 {MOD}为单片机的响应脉冲

2.1  STC-ISP软件
 

2.2  握手过程
 
 
由图2.2可知,上位机先发送检测信号,此时单片机需要冷启动,检测信号可以参看图2.3。在单片机冷启动后,单片机会运行内部固化程序,自行检测串口是否有上位机检测信号。一旦发现检测信号,单片机回复响应信息,响应信息波形可见图2.4,内容则可见图2.5
 

2.3  检测信号

2.4  响应信号
 

2.5  回复内容
 
上位机接收到单片机响应后的回复信号,波特率为2400,每比特所占时间大约为416us,可以根据图2.7对上位机的回复进行数据解析。
 

2.6  上位机回复内容  

2.7  上位机回复内容
Note3:上位机(STC-ISP)程序烧录
   总的烧录过程为:上位机先检测单片机,再通知单片机开始烧录程序,每次发一小段程序,单片机会有一个ACK,之后再发结束指令,图3.2接图3.1

3.1  程序烧录

3.2  程序烧录
Note4总结



图4.1   汇总



                                                                                           WOLF