网站首页 | 技术文章 | 解决方案 | 电子书籍 | 下载中心 | 电子商城 | 技术论坛 | 电子博客 | 商务信息  
联系站长
加入收藏
会员登陆
交易首页 最新信息 - 推荐信息 - 热门信息 - 免费发布 - 行业新闻 - 行业资讯 - 行业知识 - 积分说明 - 信息分类 - 企业展示 - 帮助
 您的位置: 中国电子设计 >> 技术文章 >> 嵌入系统 >> 正文 商务信息栏目开通公告  [2008-05-19 11:47:00]
   □  基于CAN总线智能节点的在应用可编程设计   
基于CAN总线智能节点的在应用可编程设计
[作者:凌世飘 倪霞林    转贴自:微计算机信息    点击数:    更新时间:2008-7-28
【字体:

Design of Test & Control System in Application Programming Based on CAN Bus

摘要:在对AT89C51的指令系统及存储结构充分研究的基础上,采用片外扩展两片SRAM,其可同时作程序存储器和数据存储器,通过多路选择器控制他们的功能,实现了基于CAN总线的智能节点的在应用可编程(IAP)。同时采用RS-232转CAN的转节点实现对该系统的远程在线更新。
关键词:在应用可编程(IAP);CAN总线;AT89C51;智能节点
 
Abstract: Based on the study in the repertoire and memory structure of AT89C51, extending two SRAM out of the microprocessor, the intelligent node based on CAN bus implements the function of IAP by a multiplexer controlling the SRAM .Through a data adapter based on communication with CAN bus and RS-232 serial port, the system can be remote updated online.
Keywords:in application programming(IAP),CAN bus,AT89C51,intelligent node 
1 引言
基于CAN的各智能节点主要根据实际需要,能独立的完成数据的采集、处理和发送,同时能接收其他节点的信息,根据实际需要还能控制执行机构完成预定的控制等自动控制功能,具有高度的智能化。智能节点的设计一般都是面向应用的,随着实际应用的改变,智能节点的有些功能就失去了存在的意义,必然需要更新。面对新的应用,如何缩短设计时间,快速推出产品,降低设计成本和提高系统整体性能是每个设计人员共同关心的问题。一种叫做在应用可编程(In Application Programming即IAP)的设计方案应运而生,它可以在现场(当原存在的代码正在运行时)重新写入运行代码。这种方案的优点是可以降低开发代码的时间、可在装配线上测试和改装产品、可在现场修正代码错误、可以容易地添加产品新功能甚至可以远程进行系统的升级。本文将采用在应用可编程(IAP)思想,实现对基于CAN的网络系统的在应用可编程,使智能节点的更新变得简单而方便,还能实现系统的远程升级。
2 基于CAN的智能节点的在应用可编程的硬件设计
2.1 设计思路
基于CAN的智能节点中的处理器采用AT89C51单片机,内含4K FLASH用作程序存储器,只能读;128字节的RAM用作数据存储器,可读写。与之相对应地提供两个独立的地址空间,一个用于程序存储器,一个用于数据存储器。这种特殊的地址结构保证在任何情况下都不会将数据写入程序空间,保护程序代码不会被数据覆盖。但这种特性使AT89C51在应用可编程不能实现。因为IAP技术是从结构上将Flash存储器映射为两个存储体。当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。所以如果采用一种方法“欺骗”系统使之误认为程序存储器即为数据存储器,则可向程序存储器中写数据了。“欺骗”系统的方法是在片外扩展两片同样的可擦写的RAM。系统在IAP期间将其中一片外RAM作为数据空间,程序下载完成后再将它切换成程序存储器,主程序从片外 RAM中执行。这种方案需要一款存储器既可以当作数据存储器又能作为程序存储器,且具有掉电保护功能的静态随机存储器。本文采用DS1230Y-70内嵌锂电池保护的非易失性静态存储器,读写速度为70ns,数据掉电能保存10年。
按照上述思路设计的具有在应用可编程能力的基于CAN总线的智能节点的系统总体结构框图如图1所示。
该系统与无IAP功能的智能节点相比有以下几个特点:(1)外部扩展了两块RAM。RAMA、RAMB既是数据存储器又是程序存储器,RAMA和RAMB采用DS1230Y-70静态RAM。RAMA和RAMB具有相同的地址,由单片机的控制信号控制其中一块作为程序存储器,另一块为数据存储器。AT89C51的数据空间与地址空间分开的特性保证了这两块存储器不会冲突。(2)、增加了存储器选择电路,结合单片机的控制信号将程序存储器和数据存储器“重新分类”,通过P1.0控制信号线来选择是 信号还是 信号送入相应的静态RAM。(3)、为了实现系统上电时片外RAM处于工作状态,P2.7通过反向器后接到片外RAM的 上。(4)、为了保证系统一上电能识别主程序存放在那个片外RAM中,P1.3和P1.4口接一串行EEPROM用于存储主程序存放到那个片外RAM中。
 2.2 存储器地址分配及数据储存过程
AT89C51具有4K的片内Flash存储器,可用以存放引导程序,固化在89C51的Flash存储器中,而将主程序放在16KB的片外静态RAM程序存储器中。因此,该系统程序存储器的地址空间从0000h~0FFFh和C000H~FFFFH。而数据存储器地址范围00H~FFH(片内),C000H~FFFFH(片外)。因为片外存储器和CAN控制器共用P0、P2口地址线,所以当AT89C51接收到来自总线的下载帧命令后,将帧信息先保存到片内数据存储器内,然后再把接收到的程序代码从片内向C000H~0FFFH的数据空间依次写入。当程序下载结束,并确认无误后,用软件改变P1.0控制信号,使原来的数据存储器变为程序存储器,而原来的程序存储器变为数据存储器。同时将堆栈返回指针改为指向C000H,退出中断后使程序跳至C000H运行下载的程序代码。


2.3 选择电路设计
选择电路如图2所示,由多路选择器74HC157完成,它是四路二选一芯片。当P1.0为低电平时,Y输出与A输入信号相同,即A=Y,由图2可知此时RAMA的 接单片机的 接VCC,因而此时RAMA作为程序存储器;RAMB的 接单片机 数据读出线, 接单片机的 数据写入线,此时RAMB作为数据存储器。反之,当P1.0为高电平时,输出Y与B输入信号相同,即B=Y,此时RAMB是程序存储器,RAMA是数据存储器。
2.4 CAN总线接口电路设计
CAN总线接口电路主要如图1中的上部所示。采用独立的CAN总线控制器SJA1000和CAN总线收发器TJA1040。为了增强CAN总线节点的抗干扰能力,可采用以下抗干扰措施:
控制器SJA1000 的TX0 和RX0通过高速光耦6N137后与TJA1040的TXD和RXD相连,这样能很好地实现总线上各CAN节点间的电气隔离。
收发器TJA1040的CANH和CANL引脚各自通过一个5欧的电阻与CAN总线相连,电阻可起到一定的限流作用,保护收发器免受过流的冲击。CANH和CANL与地之间并联了两个30Pf的小电容,可以起到滤除总线上的高频干扰,同时有一定的防电磁辐射的能力。
3 与上位PC机的通讯
为了能将PC机中编译好的程序通过CAN总线下载到指定的节点上,可采用串口转CAN接口电路。此方法设计简单,PC信息经RS-232后由MAX232进行电平转换,再由89C51按CAN扩展帧格式将信息打包成帧,再控制CAN控制器发送到CAN总线上。MAX232芯片中有两路发送接收接口,可以任选一路,但各引脚连接需相对应。如使MAX232的T1IN接89C51的发送端RXD,则PC机的RS-232的接收端RXD一定要对应接MAX232的T1OUT引脚。同时,MAX232的R1OUT接89C51的RXD引脚,PC机的RS-232的发送端TXD对应接MAX232的R1IN引脚。
4 基于CAN的在应用可编程网络系统的软件设计
4.1 引导程序设计
引导程序存放于智能节点微处理器89C51的4K Flash中,主要应实现的功能有:
(1)、在节点上电或复位时,应能自动识别该节点的主程序存放于那个片外RAM中,并能自动选中正确执行主程序。
解决方法:将主程序所在位置信息存储在掉电非易失性串行EEPROM中。首次使用本系统时,将主程序所在位置信息预先写入串行EEPROM中。以后每次下载更新主程序完成后,将及时修改串行EEPROM中的主程序存放位置信息标志位。系统上电或复位后,首先读串行EEPROM中的主程序位置信息标志位,判断出所在RAM后,置位P1.0口,通过多路选择器选中相应的片外RAM作为程序存储器,同时执行长跳转指令LJMP 0C000H程序跳转到片外程序存储器中执行。从而可实现系统重新上电或复位后能正确执行主程序。部分程序如下:
LCALL   READ_EEPROM;读24C02中的主程序位置标志位
JNB  RAM_SIGN,RAMA;判断主程序存放位置,若RAM_SIGN=0,则在RAMA中,否则在RAMB中
RAMB:SET  P1.0;置位P1.0口,选中RAMB为程序存储器
LJMP  0C000H;跳转到C000H处执行主程序
RAMA:CLR  P1.0;否则选中RAMA
LJMP  0C000H
(2)、要保证所有中断能正常运行
解决方法:在C000H开始的主程序区的顶端设立中断映射区,在原来的0003H、000BH、0013H、001BH等中断入口地址处设立相应的长调用语句LJMP 0C003H,LJMP 0C00BH,LJMP 0C01BH,LJMP 0C013H,将所有中断跳至从C000H开始的中断映射区。而在C003H和C00BH等地方放置真正的中断程序入口地址。
4.2 主程序设计
存放于片外RAM中,应实现的主要功能有:对JSA1000的初始化,能实现CAN总线对一般数据信息的收发功能,应能响应上位机的下载信号并接收下载代码,根据实际应用还能实现其它功能等。其中,对SJA1000的初始化主要包括:CAN时钟源设置、总线定时设置、中断选择、屏蔽设置、模式设置等。CAN控制器初始化必须进入软件复位模式,待初始化完成后再恢复为工作模式。
4.2.1应用层协议制定
根据CAN2.0协议,下载帧结构采用CAN扩展帧格式。扩展帧有29位标识符,其功能分配制定如下:
   ID28~ID25这4位用来标识目的节点ID,下载帧采用点对点传送方式;ID24~ID21这4位设置为1用来标识此帧为下载帧,以区别其它非下载帧;ID20~ID16这5位用来标识下载帧的优先级,下载帧的优先级设置成比报警出错帧低,但比其它节点传送给该节点的数据帧优先级要高,即下载过程中可防止其它节点向该节点传送数据;ID15~ID0这16位用来标识此帧在片外RAM中的存储起始地址。下载过程中有优先级更高的信息帧占用总线时,则记下刚下载的内容所存放的地址,等下载帧重新争的总线使用权后,再检测待接收的帧存放地址与已保存的帧地址是否连续,如不连续,则发出错信息。试验证明,采用此帧结构,可以有效的防止下载错误的发生。
4.2.2 下载帧中断返回
主程序接收中断流程图如图3所示,当有接收中断发生时,首先判断是否是一般数据接收中断,若是一般数据中断,则跳转到相应的子程序执行,数据保存到片内RAM中,中断返回地址不修改;若是下载中断,则将下载程序保存到以C000H为首地址的片外RAM中。下载完成并确认无误后,读EEPROM判断此时主程序存放到那个片外RAM中,通过置位P1.0口切换存放新下载主程序的RAM为程序存储器,同时修改EEPROM中的主程序标志位。中断返回时,PC指针改为指向C000H,开始执行新下载的程序。下载中断恢复现场的部分程序如下:
POP   ACC;弹出当前返回地址
POP  ACC
MOV     A,#00H;将跳转地址低位压人堆栈
PUSH ACC
MOV     A,#C0H; 将跳转地址高位压人堆栈
PUSH ACC
SETB  EA
RETI
5 结束语
 本设计主要创新点在于对自身无IAP功能的AT89C51单片机为微处理器的智能节点采用扩展两片可同时作数据和程序存储器的静态RAM,以CAN总线为传输媒介,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个,从而实现基于CAN总线的智能节点的在应用可编程(IAP)。同时采用串口转CAN总线的接口,实现了基于CAN总线的网络系统的远程在线更新。
 
参考文献
【1】 饶运涛,邹继军,郑勇坛.现场总线CAN原理与应用技术.北京:北京航空航天大学出版,2003
【2】 刘光,梁涛,牛春刚.CAN总线智能节点的设计和实现[J].微计算机信息,2006,6-2:102-103
【3】 胡汉才.单片机原理及其接口技术.北京:清华大学出版社,1996
【4】 周立功等.增强型80C51单片机速成与实战.北京:北京航空航天大学出版社,2003
作者简介:凌世飘,男,汉族,1978年出生于江西寻乌,福州大学在读硕士,主要从事现场总线和工业自动控制方面的研究。E-mail:lsp041@sina.com.cn

通讯地址:350002 福建省 福州大学(怡山校区)机械工程及自动化学院04级研究生  凌世飘


 

  • 上一篇文章:基于J2EE的公共卫生应急综合指挥系统设计
  • 下一篇文章:基于EZ-USB FX2LP的USB2.0高速数据流传输系统设计
  • Google
     
    Web www.cediy.com
    发表评论 □告诉好友 □打印此文 □关闭窗口
     最新热点文章
     基于单片机和串行总线技术的热量表...
     数字温度传感器详解
     用AD8302实现RF/IF幅度和相位测量系...
     一种简单的10MHz频率源兼分配放大器...
     维氏电桥振荡器
     检验液晶显示器的简易测试仪
     
     最新推荐文章
     基于TMS320C6713与PC机的PCI总线高...
     基于TMS320VC5409和Cygnal单片机构...
     基于ARM控制器S3C44B0x的给煤机控制...
     基于USB 2.0的高速数据采集卡在虚拟...
     大功率谐振过渡软开关技术变频器研...
     大功率谐振过渡软开关技术变频器研...
     
     相 关 文 章
      ◇  网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
     设为首页  加入收藏  关于本站  版权申明   联系站长   宣传赚点   友情链接
    如果我在线,不用加为好友,立刻与我交谈。 业务咨询QQ:342488946
    Copyright© 2004-2010 CEDIY.COM .All Rights Reserved
    粤ICP备05119258号