APP下载

基于SJA1000的双CAN收发器通信实现

2019-04-20姚宇阳黄志坚蔡鹏

科技视界 2019年4期
关键词:CAN总线数据通信

姚宇阳 黄志坚 蔡鹏

【摘 要】CAN是控制器局域網的简称,是德国Bosch公司为解决现在汽车中众多测量控制部件之间的数据交换问题而开发的一种数据通信总线。本文主要介绍了基于SJA1000的双CAN通讯实现,通过硬件与软件的设计,在keil 5中编写程序、下载、运行,进而实现双CAN通讯及控制。

【关键词】CAN总线;SJA1000;数据通信

中图分类号: TN859 文献标识码: A文章编号: 2095-2457(2019)04-0028-002

DOI:10.19694/j.cnki.issn2095-2457.2019.04.011

Communication Implementation of Double CAN Transceiver Based on SJA1000

YAO Yu-yang HUANG Zhi-jian CAI Peng

(College of Electornic & Information Engineering,Suzhou Vocational University,Suzhou Jiangsu 215021)

【Abstract】CAN is the abbreviation of controller local area network (LAN), which is a data communication bus developed by Bosch Company to solve the problem of data exchange between many measurement and control parts in automobile.This paper mainly introduces the realization of dual can communication based on SJA1000.Through the design of hardware and software,write program in keil5,download,run,and then achieve communication control.

【Key words】CAN bus;SJA1000

0 引言

CAN控制器是一种独立控制器,用于移动目标和一般工业环境中的区域网络控制,全称为Controller Area Network,即控制器局域网.CAN是国际上应用最广泛的现场总线之一,它在通信能力、可靠性、实时性、灵活性、易用性以及传输距离方面有很好的优势。起初,CAN主要用于解决汽车内部信号连接的问题;如今,其应用范围已扩展到了机械工业、交通工业、医疗设备、建筑、环境控制等等。本课题使用STM32F107VC单片机编写程序,实现CAN总线中简单的通讯,达到双CAN远程通信控制的目的。

1 理论分析

CAN模块是一个通信控制器,其支持2.0A与2.0B协议,同时支持的类型有标准数据帧、扩展数据帧、远成帧、出错帧、过载帧和空闲帧。目前CAN总线器件有两大类:一是独立的CAN控制器,如82C200,SJA1000;另一类是带有芯片CAN的微控制器,如P8XC582。

本课题使用独立CAN控制器SJA1000,SJA1000有两种工作模式:基本模式和增强模式。在基本模式下,SJA1000只可以收发标准数据帧,并且不能修改错误报警的极限值;而在增强模式下,SJA1000不仅可以接收标准数据帧,还可以接收扩展数据帧,也可以修改错误报警的极限值[1]。

为简化编程,采用CAN的基本模式,即上电后直接使用。通过使用软件编程、下载进而实现通讯功能。

在使用前,还需要对SJA1000收发器进行初始化,收发报文的处理以及对节点脱离总线的检测与处理等等。同时SJA1000需要进行加电自检,通过自发自收一组报文来判断控制节点是否处于总线上。

2 硬件部分

硬件部分结构图如图1,CPU类型为STM32F107VC,STM32F107VC是意法半导体推出全新STM32互连型(Connectivity)系列微控制器中的一款性能较强产品,此芯片集成了各种高性能工业标准接口,且STM32不同型号产品在引脚和软件上具有完美的兼容性,可以轻松适应更多的应用。

SJA1000一种独立的CAN 控制器,一般用于区域网络控制,它的材料为PHILIPS半导体且PCA82C200CAN 控制器BasicCAN的替代产品,它增加了一种新的工作模式PeliCAN, 这种模式支持具有很多新特性的CAN 2.0B协议。

LED驱动芯片采用CH452。CH452是数码管显示驱动和键盘扫描控制芯片,内置时针振荡电路,可以动态驱动八位数码管及64键的键盘扫描。CH452通过可以级联的四线串行借口与单片机交换数据,并且可以对单片机提供上电复位信号。

CAN通信模式采用自回环模式,包括CPU内核功能测试,位绑定,特权模式。CPU调试使用方法包含中断控制器即中断唤醒低功耗,IRQ通道配置,中断优先级,中断向量表重定位低功耗测试(STANDBY模式,STOP模式)[2]。

CPU驱动电源为3.3V,SJA1000驱动电源为5V,同时一个芯片的数据输出引脚和另一个芯片的数据接收引脚采用3.3V和1k的上拉电路,引脚上拉可以保证数据传输的可靠性,同时消除部分干扰信号。

如图1所示,CPU(STM32F107VC)通过CAN1、CAN2、SJA1000、上拉电路发送信息,引脚J7是连接插针,可以实现线路的互通,CPU接收信息后经过H与L两条通道在两个CAN通信模块之间实现互相的调用。

3 软件部分

软件部分结构图如图2,软件部分主要包括初始化、数据发送和数据接收三部分。

SJA1000初始化只有在复位模式下才可以进行。初始化包括工作方式、接收屏蔽寄存器(AMR)和接收代码寄存器和中断寄存器(ACR)、总线时序寄存器、输出模式寄存器和中断寄存器的设置等。

发送部分当复位键(reset)按下后,再通过key1与key2按键由GPIO口传送数据,通道为can的1H与2H,1L与2L间。最后接收数据,LED灯点亮即可表明实现了双CAN数据通信。

SJA1000提供了两种数据操作模式,中断模式和状态查询模式。由于查询模式需占用大量的CPU内存,是实时要求较高的自动化仪表中常用中断方式,因此采用中断模式。通讯模块的程序包括SJA1000的初始化、节点自测、通讯波特率侦测程序。通讯模块的中断处理程序包括错误处理子程序、发送接收、放弃发送子程序等[3]。

4 结束语

本文主要讲述了利用SJA1000芯片实现双CAN控制器简单的通讯,即CAN1、CAN2间互相传送接收数据从而实现通信操控。通过研究了解了基于SJA1000收发器的双CAN通信的硬件配置,软件配置,实验结果验证了理论分析。学校在目前的总线课程教学过程中,主要是基于目前实验室现有的profibubus总线开展,本实验为后续开展CAN总线教学打下了一定的基础。

【参考文献】

[1]郭丹丹、杨瀛陆,基于SJA1000的CAN通信,《中国新技术新产品》,2015.08.

[2]来清民,手把手教你学CAN总线[M].北京航空航天大学出版社,2010.

[3]邵玉华,基于SJA1000的CAN总线通信系统的设计,《铁道通信信号》.

猜你喜欢

CAN总线数据通信
基于快牙平台实现全站仪与计算机的数据通信
监测系统接口数据通信方式
基于嵌入式的汽车辅助制动系统研究
一种高效可靠的串行数据通信协议及处理算法
TCN实时协议栈过程数据通信研究
广州蓄能水电厂B厂电能表数据通信研究与应用
ZigBee手持终端数据通信模块设计