微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CAN通讯模块的闸间隙报警系统设计

基于CAN通讯模块的闸间隙报警系统设计

时间:12-19 来源:互联网 点击:

0 引言

在煤矿生产中,矿井提升机是矿山大型关键设备。提升机的制动系统则是保证提升机能否安全运行、实现提升机正常减速停车以及在各种故障情况下执行紧急制动安全停车的最终手段。盘形闸是绞车提升系统中非常重要的配套设备,是保证安全提升的重要部分。盘形闸工作间隙报警有利于缩短故障排除的时间,故开发闸间隙报警模块具有重要的实际意义。CAN总线是一种总线型现场设备控制网络,具有突出的实时性、可靠性和灵活性。鉴于CAN总线的优势,本文开发了一种基于AVR的闸间隙报警CAN通讯模块,其成本低廉,安装方便。

1 模块硬件设计

该模块由处理器ATmega128、CAN总线控制器SJAl000以及CAN收发芯片CTM8251组成。其硬件结构如图1所示。

1.1 微处理器

ATmega128是一种高性能、低功耗的AVR8位微处理器,拥有先进的RISC结构、128kB的系统内可编程Flash、4kB的EEPROM、8路10位ADC、2路8位PWM、2个可编程串行USART/独立片内振荡器的可编程看门狗定时器、53个可编程I/O口、2个具有独立的预分频器和比较器功能的8位定时器/计数器、2个具有预分频器和捕捉功能的16位定时器/计数器;具有独立预分频器的实时时钟计数器、片内/片外中断源、全局上拉禁止功能。微处理器ATmegal28在此设计中起到了对CAN控制器控制的作用。微处理器频率是16心z,每秒钟的运算能力为16 MIPS,其丰富的片上资源使得ATmegal28非常适合于CAN通信的应用。

1.2 CAN总线接口电路

由于处理器ATmega128内部没有集成CAN控制器,因此系统需要通过CAN控制器SJA1000芯片扩展出一个CAN接口。实现SJAi000扩展CAN总线接口的设计,就是对SJAl000的转换逻辑结构之间的每个模块进行设计。在设计中,将来自于ATmega128的I/O的数据(CANdata0~CANdata7)写入SJAi000的内部寄存器,并通过ATmega128的I/O实现对SJAl000的控制。CAN总线接口电路如图2所示。

1.3 CAN收发器

在CAN通信模块设计中,为了增加CAN总线的抗干扰能力,可通过将SJAl000控制器TX0、RX0接口连接到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微处理器的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top