基于CAN通讯模块的闸间隙报警系统设计
CAN隔离收发器采用广州致远电子有限公司的通用CAN隔离收发器CTM8251。该芯片内部集成了所有必需的CAN隔离及CAN收发器件,其主要功能是将CAN控制器的逻辑电平转换为CAN总线的差分电平并且具有DC2500V的隔离功能,增加了CAN总线的抗干扰能力。此外,该芯片拥有速率可达1Mb/s、较高的抗干扰性、至少可连接110个节点等特性。CAN收发器连接图如图3所示。
2 模块软件设计
该模块的功能是将处理器前端采集的闸间隙报警数据处理后,先后通过SJAi000、CTM8251送到上位机实现通信。
CAN总线通信的实现首先要通过ATmega128的RESET使外围电路上电复位,在外部中断的情况下等待SJAl000完全上电,然后通过处理器控制线路配置进而使SJAl000初始化,最后进入CAN的数据发送和接收主程序。因此,该设计的关键是编写CAN驱动程序,主程序通过调用CAN驱动程序实现接口数据的收发。驱动程序主要包括CAN控制器的初始化、接收数据和发送数据。
2.1 CAN控制器SJAi000的初始化
SJAl000的初始化操作包括CAN软件复位、设置中断工作方式、设置CAN验收过滤器工作方式、设置控制器的工作模式和启动CAN等。首先,通过对CAN控制器SJAl000的读、写、片选、地址锁存端口设置来完成初始化。以下是CAN控制器SJAl000的初始化代码:
2.2 数据的接收与发送
ATmegal28的每个I/0端口有3个I/0寄存器即可实现对CAN总线的控制。当发送/接收时要根据实际情况,先必须保证CAN锁存、CAN读/写选通、cAN片选开启后读取对应的存储地址,最后对数据进行读取/存储。为了提高效率,接收数据采用中断的方式,当中断标志置位时,将数据存入指定的SJAl000存储地址。以下是数据发送和接收的函数:
(1)接收/发送缓冲区数据设置:该部分主要是通过对RX/TX针信息、RX/TX标识码进行接收/发送缓冲区数据首地址(工作模式)定义。
(2)CAN控制器SJAl000发送数据,实现函数如下:uchar Read_SJAl000(uchar addr)函数功能实现步骤为:①使能端口写数据,通过设置CAN_ALE、CN_CS、CAN_ID完成对发送数据地址的读取;②使能端口读数据且上拉,通过CN_CS、CAN_RD)完成从读取的地址读取一个8位数据;③返回数据地址。
(3)CAN控制器SJAl000接收数据,实现函数如下:void Write_SJAl000(uchar addr,uchar DATA)函数功能实现步骤为:①使能端口写数据,通过设置CAN_ALE、CN_CS、CANJR完成对接收数据地址的读取;②通过设置CN_CS、CAN_WR完成向读取的地址写一个8位数据。
3 结束语
本文介绍了基于AVR微处理器的闸间隙报警CAN通讯模块的硬、软件设计方法,为解决矿井提升机工作间隙报警提供了一种思路。该模块的设计使管理监控层与生产测控层之间能够进行有效的通信,缩短了故障排除的时间,且使用方便、成本低。
评论