CAN总线技术在车站信号系统中的应用
,在对这些寄存器初始化前,必须确保系统进入了复位状态。在访问总线定时寄存器时,由于其内容决定波特率的数值,总线定时寄存器的初始化字必须依据系统中各CAN控制器的晶振频率而设定。初始化程序的流程图如图4所示[4]。 4.2 数据发送和接收程序 信息从CAN控制器发送到CAN总线是由CAN控制器自动完成的。发送程序只需把发送的信息帧送到CAN的发送缓冲区,启动发送命令即可。需要注意的是,发送中断不是由于发送完成而产生,而是由于发送缓冲区再次可用而产生的。 信息从CAN总线到CAN接收缓冲区是由CAN控制器自动完成的。接收程序只需从接收缓冲区读取要接收的信息即可。需要注意的是,读取接收缓存器(RBF0或 RBF1)的内容后,CPU必须通过置位释放接收缓存位来释放缓存器,使得另一个报文立即变得有效。数据发送和接收中断流程图如图5所示。 图5 CAN通信数据发送和接收中断 4.3 总线出错和异常处理 CAN总线作为一种优良的串行通信局域网络,它自身的查错和排错能力相当强大,因此在设计时必须充分利用这一点,提高通信系统的可靠性。CAN协议规定网络上的任何一个节点,根据其错误计数器中的数值,可能处于下列3种状态之一:“错误—激活”状态、“错误—认可”状态、“总线脱离”状态。处于前两种状态时节点都可以参与总线通信,而当处于“总线脱离”状态时节点既不发送,也不接收任何数据帧。同时CAN协议还对脱离总线节点重新参与总线通信有严格规定。 由于节点自身的原因或是其它原因,节点脱离总线,不参与通信,出现这种情况程序要做到及时发现,并且迅速做出有效处理,使之恢复参与总线通信。判断节点是否脱离总线同样既可通过查询方式,又可通过中断方式。而处于“总线脱离”状态的节点通信功能的恢复,必须严格依照CAN协议规定的流程做,否则节点将一直处于“总线脱离”状态。 5、总结 在车站信号系统中,用CAN总线代替RS-485总线,其数据通信具有突出的可靠性、实时性和灵活性,而且通信距离也有了很大的提高,这些都在现场运行中得到了证实,具有较强的实用价值。 本文作者创新点:用CAN总线代替车站信号系统所使用的RS-485总线,在软/硬件设计中均采用了模块化的方案,具有更高的灵活性和广泛的适用性;同时,用Atmega128单片机代替车站信号系统中所使用的Atmel8535单片机,使运行的速度也得到了提高。
- 对TTCAN的分析(05-26)
- 嵌入式Win CE中CAN总线控制器的驱动设计与实现(05-01)
- μC/OS-II的多任务信息流与CAN总线驱动(07-11)
- 采用CAN总线实现DSP芯片程序的受控加载(11-08)
- 基于DSP的电动汽车CAN总线通讯技术设计(10-08)
- 基于DSP的CANopen通讯协议的实现(01-18)