摘要:详细叙述了一种利用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),这样可以很方便地将应用程序下载到单片机里。
CAN总线控制器选用Philips公司生产的SJA1000,该芯片是PCA82C200CAN控制器的替代品,而且新增加了一种PeliCAN工作模式,能够支持CAN 2.0B协议。它还支持错误中断、报警限制、验收滤波器扩展和自接收请求等功能。在系统中,将SJA1000的中断输出引脚INT接到单片机的中断输入引脚,这样可以在接收数据或者总线错误时产生中断,由控制器进行相应的处理。SJA1000的片选CS端接单片机的P2.7引脚,这样SJA1000的地址就确定为7F00H~7FFFH。
选用芯片82C250作为CAN控制器和物理总线间的驱动接口,可以提供对总线的差动发送能力和对CAN控制器的差动接收能力,其最高速可达1 Mb/s。由于实际系统中存在干扰,故增加高速光隔6N137,以起到隔离的作用。电气接口很简单,有CANH和CANL两根线,用以完成CAN的数据传输。在CAN总线的两端有一个120Ω的电阻,其作用为匹配总线阻抗,用于提高数据通信的抗干扰性及可靠性。具体电路如图2所示。
13066931819
粤ICP备16030717号