新闻中心

EEPW首页>嵌入式系统>设计应用> 基于CAN总线技术在车站信号系统中的应用

基于CAN总线技术在车站信号系统中的应用

作者: 时间:2013-09-06 来源:网络 收藏


  在性能方面,除了SJAl000在软件和引脚上与它的前—款PCA82C200独立CAN控制器兼容之外,其还增加了很多新的功能。在具体应用中,SJAl000采用了两种工作方式:Basic CAN方式(PCA82C200兼容方式)和PeliCAN方式(扩展特性方式),这是SJAl000实现其兼容性的基础。SJAl000的两种工作方式是通过时钟分频寄存器中的CAN方式位来选择的,其中上电复位的默认工作方式是Basic CAN方式。在PeliCAN方式下,SJAl000有一个重新设计的含很多新功能的寄存器组。SJAl000包含PCA82C200中的所有位,同时增加了一些新的功能位。PeliCAN方式支持CAN2.0B协议规定的所有功能(29位的标识符)[2]。

  3、SAJ1000与Atmega128单片机接口技术的实现

  在SJA1000的主要特性介绍中,提到其支持多种微处理器接口,在具体设计中,我们主要研究了其与Atmega 128单片机的接口,设计了用于CAN通信的最小单片机系统(以下简称CAN通信系统)接口方式如图3所示。系统的通信部分主要有Atmega 128单片机、SJA1000CAN控制器、光电隔离部分和收发芯片组成。

  TJA1050是PHILIPS公司生产的、用以替代82C250的高速CAN总线驱动器,是CAN控制器和物理总线之间的接口,可以提供向总线的差动发送能力和对CAN控制器的差动接收能力,其与ISO/DIS 11898标准完全兼容[3]。


  光电隔离部分是为了增强CAN总线节点的抗干扰能力,不过,应该特别说明的一点是,光电耦合部分电路所采用的两个电源必须完全隔离,否则采用光电耦合也就失去了意义。电源的完全隔离采用小功率电源隔离模块实现。这部分虽然增加了接口电路的复杂性,但是却提高了节点的稳定性和安全性。

  4、CAN结点通信软件的设计

  SJA1000是I/O设备基于内存编址的微控制器,双设备独立操作通过像RAM一样的片内寄存器修正来实现。因此CAN总线通信部分编程主要就是对SJAl000的片内寄存器的读写操作。通信部分软件设计总体上可以划分为3大模块:总线初始化、数据帧的接收和发送、总线出错和异常处理。

  4.1 CAN通信初始化

  其主要是设置CAN的通信参数。需要初始化的寄存器有:总线定时寄存器0、总线定时寄存器1、输出控制寄存器、接收代码寄存器、接收屏蔽寄存器等等。需要注意的是,只有当控制寄存器中的复位要求位置为高时,这些寄存器才可被访问。因此,在对这些寄存器初始化前,必须确保系统进入了复位状态。在访问总线定时寄存器时,由于其内容决定波特率的数值,总线定时寄存器的初始化字必须依据系统中各CAN控制器的晶振频率而设定。初始化程序的流程图如图4所示[4]。


  4.2 数据发送和接收程序

  信息从CAN控制器发送到CAN总线是由CAN控制器自动完成的。发送程序只需把发送的信息帧送到CAN的发送缓冲区,启动发送命令即可。需要注意的是,发送中断不是由于发送完成而产生,而是由于发送缓冲区再次可用而产生的。



评论


技术专区

关闭