摘要:详细叙述了一种利用AT89S51单片机和SJAl000总线控制器的CAN总线与RS 232接口卡的设计和实现方法;通过对串行通信协议的加强,设计了一种同步的串行通信协议。该接口卡可以方便地建立起计算机与CAN总线之间的通信,能够使CAN总线的设计者方便地观察总线的运行情况和各个节点所发送的数据。实际运行证实了其可靠性和易用性。
关键词:CAN总线;RS 232;串行通信协议;总线控制器
控制器局域网(Controller Area Network,CAN)属于现场总线的范畴,其总线规范已被ISO国际标准化组织制定为国际标准,并被公认为是最有前途的现场总线之一。CAN总线广泛应用于控制系统中的各检测和执行机构之间的数据通信。因为CAN总线数据的传输和处理都由节点的单片机完成。这样就使设计者和观察者没有办法以比较直观的方式掌握总线的运行情况。现在市场上主要有两种CAN的接口卡,使用PCI总线和使用USB接口。前者具有传输速度快的特点,但却要占用一个计算机的插槽,并且设计上十分困难;后者的传输速度也很快,且价格较便宜,但要花费很大的精力进行USB的固件开发和维护,并要编写复杂的驱动程序。根据此,需要设计一种能够方便读取CAN总线数据,并通过RS 232串行口将数据送给PC机处理和显示的接口卡;此外还需对其串行传输的协议进行加强,以使能有效地降低传输过程中出现的错误。
1 接口卡的硬件设计
硬件部分主要包括主控制器、CAN总线控制器、CAN总线收发器以及与计算机的RS 232通信接口芯片等。系统的总体结构如图1所示。主控制器通过CAN总线接口接收和缓存数据。根据PC机的命令进行选择性的数据传输。
1.1 与CAN总线接口
如图2所示,接口卡的控制器选用Atmel公司的AT89S51,该单片机的引脚和功能与8051兼容,并且内部含有4 KB的FLASH ROM,支持在系统编程(ISP),这样可以很方便地将应用程序下载到单片机里。