基于AT90CAN128CAN总线节点实现方案.docVIP

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
基于AT90CAN128CAN总线节点实现方案

基于AT90CAN128CAN总线节点实现方案   摘要 现场总线在控制领域得到广泛应用,CAN总线广泛应用于工业控制系统和汽车控制系统。本文对用内嵌CAN总线控制器的AVR单片机控制器AT90CAN128构建CAN节点的方案进行了探索。   关键词 CAN总线;AVR单片机;AT90CAN128;CAN总线节点实现方案   中图分类号TP336 文献标识码A 文章编号 1674-6708(2011)42-0208-02   0 引言   随着微型计算机、嵌入式系统、网络技术、传感与检测技术的发展,现场总线在控制领域得到广泛应用。德国Bosch公司推出CAN (Controller Area Network) 现场总线是的一种是国际标准化的串行通信协议。一般用主CPU 外接一个专用CAN 控制器以实现。广泛应用在汽车控制系统与工业领域。AVR单片机是由ATMEL公司利用Flash新技术研发的RISC精简指令集的高速8位单片机。高速、低耗、功能强大。AT90CAN128s是内置CAN 总线控制器的AVR单片机。本文介绍AT90CAN128实现CAN节点的方法。   1 集成CAN 控制器的AT90CAN128   AT90CAN128是ATMEL公司利用Flash新技术生产的一种基于RISC结构的8位AVR增强型单片机。资源丰富,功能强大。除拥有一般AVR处理器的基本接口模块外,还集成CAN 控制器。与CAN标准帧完全2.0兼容。为搭建基于CAN 通信的系统提供了便利。   2 硬件设计   一个CAN总线由模块控制器、CAN控制器、CAN收发器3个部分组成。本方案节点电路主要由AVR单片机AT90CAN128和高速CAN总线收发器构成,如图1所示。AT90CAN128是为总线节点的模块控制器和CAN控制器,采用16MHz时钟,负责上层应用与系统控制,执行完整的CAN协议总线,实现总线数据的发送与接收通信。CA82C251为专用总线收发处理器,具有瞬间抗干扰能力和保护总线能力,主要实现逻辑电平的控制和接口电气特性的处理。      图1AT90CAN128CAN总线节点结构图   3 软件设计   依据模块控制器AT90CAN128内部结构与特点,本方案软件选用AVR单片机专用编程环境,用C语言进行设计,按模块化的设计方法。软件由CAN控制器初始化、数据发送与数据接收部分等构成。   3.1 CAN控制器初始化   CAN总线控制器初始化的操作包括:总线波特率设置,接收屏蔽寄存器设置、接受验码寄存器的设置,使能允许寄存器的设置等。主要实现如下:   AT90CAN128中总线波特率设置是通过设置定时寄存器CANBT1- CANBT3实现。本方案设置波特率分频因子16MHz,12TQ,1000k,5,3,3,1,代码为:   CANGCON=0x01;//设置控制器使能   CANBT1=0x00;//初始化定时寄存器   CANBT2=0x0C;   CANBT3=0x37;   AT90CAN128内总线控制器提供4个验收码寄存器CANIDT1- CANIDT4和4个接收屏蔽寄存器CANIDM1- CANIDM4构成验收滤波器进行报文滤波。所有验收屏蔽寄存器为“0”的位,验收码寄存器和总线信息帧对应位必须一致才能验收通过,所有验收屏蔽寄存器为“1”的位,验收码寄存器对应位的验收滤波功能被屏蔽。用这些寄存器进行通信对象的设置。本方案设置节点通信对象为ID为CanComm.ID。代码为:   CANCDMOB=0x88;//can2.0A, 8位信息   CANIDT4=0;//初始化验收码寄存器   CANIDT3=0;   CANIDT2=0;   CANIDT1= CanComm.ID; //只接收CanComm.ID的信息   CANIDM4=0xFF; //   CANIDM3=0xFF;   CANIDM2=0xFF;   CANIDM1=0xFF;   CANGEN1=0X00;   CANGIEN2=0X01;   CANGIE|=((1ENIT)+(1ENRX));   CANIE2|=0x01; //MOB0接收中断   CANPAGE=0x00;//自动增量   CANCDMOB|=0x08;   CANGCON=0x02;//CAN控制器启动   3.2 节点接收数据   节点总据接收模块实现节点数据的接收与处理,一般采用中断和查询方式。本方案采用中断方式接收数据。主要代码如下:   CANGIE =~(1ENRX);//关接收中断   CanComm.RX_Data[RX_Number][i]=CANMSG ;//装载数据

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档