当前位置: 首页 > 技术资料 > 单片机的远程IAP/ISp系统设计

单片机的远程IAP/ISp系统设计

QooIC.com 新闻出处:电子市场 | 发布时间:2010/11/19 12:49:55

  本文以STC89C系列单片机为例,介绍自定义通信协议完成远程IAP/ISP系统设计与实现方法。


  1 IAP函数分析


  支持IAP功能的单片机一般有2块Flash存储区,即ISP区和AP(程序)区。ISP区的调用IAP函数可以修改AP区内容。本系统的代码应保存在ISP区。其基本的IAP功能函数包括Flash读、Flash擦除和Flash写函数,都是通过特殊功能寄存器来操作的。


  以STC89C系列单片机为例,对特殊功能寄存器的操作可总结为以下6步:①设置读取/写人地址(给ISP_ADDRH和ISP-ADDRL赋值);②关中断;③设置命令字(给ISP_CMD赋值);④触发(ISP_ITRG=#46H,ISP_ITRG=#OB9H);⑤清除IAP设置;⑥开中断。


  2 通信协议的制定


  系统工作在一主多从的方式,如图1所示,通信接口使用RS232或RS485。通信协议的制定必须以串口通信作为标准。系统制定的串口通信协议的基本参数为960kbPs,数据位为8,无校验位,停止位为1。


  2.1 上位机帧格式


  在ISP系统中通信的控制由上位机来完成,而且数据(程序)也是由上位机发送。因此,上位机帧格式中不但应包含控制命令,还应允许传输可变长度的数据。故系统将上位机帧格式设置为如下形式(各字段的说明见表1):


  2.2 下位机帧格式


  在系统中下位机属于慢速设备,在协议的设定上要尽量减少其运算,使用固定帧格式是一种较好的解决方法。系统下位机的帧格式如下:


  其中,SXT、COMMMAND、ERR、CHECHKSUM 和END这5个字段与上位机帧格式中对应的字段意义相同。在下位机中因使用固定帧格式,数据帧长度确定,故减去了LEN字段。考虑到ISP程序的升级,便于以后的协议兼容,增加了EDI(版本号)字段。此字段占2字节,在确定的ISP 程序中是固定的,不会增加下位机的计算量。


  2.3 通信过程


  通信过程是整个协议的交互,是对数据传输顺序和方式的规定。系统在通信过程中使用单字节寻呼方式,即在通信之初连续发送下位机机号,下位机收到后发送应答,通信过程由此开始。这种解决了多下位机系统寻呼控制问题。整个通信过程如图2所示。


  3 下位机系统实现


  系统 通 信 的最小单位是帧,整帧的信息才有具体意义。为保证得到整帧的信息,仿照实时操作系统的控制方式厂下位机使用了定时查询控制方式。


  3.1 定时控制的时间间隔计算


  定时控制的时间间隔应选择适当,若太短则收不到完整的帧结构,若过长则影响传输速率。定时控制的时间间隔应包括帧传输时间,上下位机对帧的处理时间和一定的容错时间,可表示为:


  式中:几为上位机对帧的处理时间;几为下位机对帧的处理时间;几为帧传输时间;讯为容错时间;n为上位机处理语句数;,为上位机单语句处理平均时间;执为下位机处理语句数;tZ为下位机单语句处理平均时间;L为帧长度;B为波特率。系统在抢MHz的环境下,时间间隔约为6ms。


  3.2 定时模块的实现


  定时模块是整个系统的主调度模块。它主要完成对收到的帧结构的检查,调用分析处理函数对帧中的数据进行分析和处理(即程序升级),并发送回应帧通知上位机处理结果。函数流程如图3所示。


  3.3 传输模块的实现


  传输模块在系统中起到两种作用:一是对上位机传来的数据进行存储;二是向PC机输出系统下位机处理结果。因此,串口通信模块必须具备一个输人接口函数和一个输出接口函数。系统提供SendCommstring()函数发送帧和RecCommString()函数读取帧,并且提供了一个帧完整性检查函数Checkstring(),返回类型为bit。


  串口通信模块程序在初始化时分别开辟接收缓冲区(CommRecBuffer)和发送缓冲区(ComrnsendBuffer)。将接收缓冲区中各个缓冲区看作环行队列,它们分别有自己的头向量和尾向量。起始时头尾向量均指向零(起点值);接收数据时,系统将收到的每个字符放到接收缓冲区内,建立字符接收标志,同时尾向量加1;当尾向量值达到缓冲区最大值时,尾向量再从零开始计数。若尾向量增加到一圈后等于头向量,则设立接收溢出标志。


  在发送数据时,程序把待发送的字符串放到以头向量为起始位置的发送缓冲区内。每发送一个字符头向量就加1。当头向量值为缓冲区最大值时,头向量再从零开始计数。发送时因为只有头向量移动,所以当头向量等于尾向量时才完成发送。接收和发送数据示意图如图4和图5所示。


  3.4 应用系统设计要求


  以上虽完成了IPS系统设计,但只能做到在系统编程随着嵌人式技术的发展,人们对系统的智能化、小型化的要求也越来越高。基于ARM结构的微处理器以其高性能、低功耗、低成本等方面的优势被广泛应用于各种电子产品,特别是一些高端的嵌人式控制应用中(如移动电话、工业控制、网络通信等)。ARM公司合作伙伴包括许多世界顶级的半导体公司。可以说,ARM技术几乎无处不在。


  伴随着ARM的发展,ARMC编译器的功能也越来越强大,并能对程序进行优化,但有些代码难以优化到最佳,所以ARM指令还会经常被人们使用。同时,对程序的优化仍有重要意义。


  远程自动更新要求在应用更新。因此在应用系统中应设计自己的通信系统,加人相应的控制指令,当上位机发出更新命令时,下位机应通过跳转指令执行ISP更新程序。跳转指令也是通过对特殊功能寄存器的操作来实现的。对于5TC89C系列单片机,将ISP-CONTR寄存器设置为#06H。


  4 结论


  本文以STC89C系列单片机为例,较为详细地介绍了远程IsP/lAP系统设计与实现方法。该系统具有远程在系统和在应用升级的功能,有很高的实际应用价值。笔者已将此设计应用到实际系统中,取得较为满意的结果。