AVR单片机的CAN总线分析仪设计
引言
国内基于CAN总线的工程应用也越来越多,但是在CAN现场总线产品开发前期和后期测试中缺乏有效的现场监测和排错手段,从而延长了开发周期,增加了开发成本。同时,国内CAN总线教学实验也同样缺乏成本低,功能强,操作简单的CAN分析仪器。
目前CAN总线的监测主要是通过CAN适配卡与计算机相连,利用计算机软件来分析总线状况。高端CAN适配卡价格高昂,而低端CAN适配卡如CAN转232卡,由于232总线传输速度有限,很难做到准确监测。另外,计算机也不便于在现场进行监测。本文设计了一种造价低廉、操作简单的便携CAN总线分析仪,能够适应各种总线传输速度。
1 CAN分析仪的组成和功能
主要由4个部分组成:MCU、液晶显示接口、键盘输入接口和CAN接口。能够实现以下功能: 总线波特率自适应、正常接收CAN总线数据、总线报文数和总线错误数及错误类型记录、总线负载率检测、总线报文显示、CAN协议类型辨识。硬件整体框架如图1所示。
图1 系统硬件框图
2 CAN分析仪的硬件设计
2.1 MCU与CAN接口
本系统中使用Atmel公司生产的AVR单片机ATmega64L作为微控制器。ATmega64L是高性能、低功耗的8位AVR单片机。它具有哈佛总线结构、精简指令集(RISC)结构和丰富的片内资源。ATmega64L具有64 KB Flash程序存储器、2 KB的E2PROM、4 KB的SRAM、4个带有比较模式的定时器/计数器以及可编程带内部振荡器的看门狗定时器等,支持汇编和C语言在线编程。利用其优良特性可以使设计大大简化。
CAN接口硬件原理图如图2所示,包括MCU、总线控制器模块、总线驱动模块、光电隔离模块。 总线控制器模块采用Philips公司的CAN控制器SJA1000。它可工作于BasicCAN 模式或PeliCAN 模式,具有64 字节的接收缓冲器,支持11位和29位ID,可热插拔,支持CAN2.0B 协议,仅依靠控制器本身的硬件电路就能够实现通信帧的组织和发送功能。
CAN总线驱动模块采用82C251。为了增强CAN总线节点的抗干扰能力,实现各CAN节点间的电气隔离,SJA1000的TX0和RX0通过高速光耦6N137分别与82C251T的TXD和RXD相连。值得注意的是,光耦所采用的两个电源VCC和VDD必须完全电气隔离。
2.2 液晶显示接口
分析仪监测到的总线状态需要外部器件来显示以方便观察。传统的数码管指示灯无法满足大量总线状态实时显示的需求。为了便于操作者的使用,本系统选用深圳安得利光电科技有限公司生产的AM1286425F57,它是128×64的图形点阵液晶模块,内置控制器是三星公司的LCD驱动及控制芯片S6B1713。
图2 CAN接口硬件电路原理
图3是AM1286425F57硬件原理图。MCU电源和背光输入电源都为3.3 V。8位数据总线接在单片机的D口上,将D口配置为输出。AM1286425F57的RS是指令与数据选择信号。当RS=0时,表示数据总线D0~D7上是液晶控制指令;当RS=1时,表示数据总线D0~D7上是写入液晶的数据。CS1和CS2都是控制器芯片S6B1713的片选信号,当CS1=0,CS2=1,即2个片选同时有效时才能选中液晶,向它写入数据或指令。
评论