1 引言
CAN(Controller Area Network)即控制器局域网络,它是德国波许(Bosch)一公司从20世纪80年代初开始,为解决当代汽车中日益增多的控制与测试仪器之间的数据交换而开发的一种能有效支持分布式控制或实时控制的串行通信网络。现代汽车安全性、舒适性及环保要求的不断提高,因此,本课题着眼于其发展的现状,通过CAN总线和外设传感器的应用,保证了车载系统和外围电路更好的通信,最大程度的保证了车辆的安全。
2 总体结构
本课题旨在通过对CAN总线的研究,保证车身与外围扩展电路正常的通信。经过分析比较,确定实行方案,并加以验证。
整个系统是将温度、加速度,还有TTS、GPS的数据经过AT90CAN128进行处理,通过转发器,一并发到CAN总线上,然后,接收端(CAN转串口232)将接到的数据通过串口发到车载平台上,对数据进行处理。同理,车载平台发送的命令也会经过CAN总线传回控制器,对外围设备进行控制(数据的逆向传输)。
系统原理如图1所示:
1.gif
图1系统原理
2.1硬件设计
1) AT90CAN128做主控制器,它是ATMEL公司生产带有一个CAN的控制器,CAN控制器集成了CAN协议的物理层和数据链路层的功能,可完成对数据的成帧处理,包括位填充、数据块编码、循环冗余校验和优先级判别等功能。符合CAN2.OA和CAN2.OB协议规范,支持标准帧和扩展帧的接收和发送。
2) ATA6660也是ATMEL公司的新型高速度的CAN总线收发器。这种新产品采用了ATMEL公司的0.8微米BCDMOS处理技术,可满足45伏特电压甚至更为苛刻环境中的应用。ATA6660是为不同工作模式下高速差动数据传输(如工业和汽车制造上的应用)而专门设计的。针对高速数据传输的需求,波特率可以调整到1 Mbaud。与国际高速CAN数据通讯标准ISO11898完全兼容。
2.1.1 CAN控制器的数据接收
首先,选定CAN控制器的MOB0模式,设定自动增量,初值为0。再使CANSTMOB的RXOK置1,从而使CAN控制器处于接收数据状态,接收一个数据后,清接收中断标志。
2.1.2 CAN控制器的数据发送
需要先关中断的标志,其次装载消息数据,并把CAN控制器设置为发送状态,待数据发送完后。再把全局中断寄存器CANGIE设置为接收使能。
CAN总线收发器的原理图为图2:
2.gif
图2 CAN总线收发器的原理图
2.1.3 RS232-CAN总线转换器
带有RS232接口的数据操作站可以通过RS232接口接入,实现与CAN智能模块的信息通讯,完成操作命令的下发及智能模块实时数据、运行状态的采集。
RS232-CAN总线转换器原理图为图3:
3.gif
图3 RS232-CAN总线转换器原理图
2.2软件设计
2.2.1 AT90CAN128的初始化
AT90CAN128的初始化是在复位模式下进行,初始化主要包括工作方式的设置、接收滤波方式的设置,接收屏蔽寄存器ARM和接收代码寄存器ACR的设置.波特率参数的设置和中断允许寄存器IER的设置等,在完成AT90CAN128的初始化设置以后,AT90CAN128回到工作状态进行正常的通讯任务。
CAN总线初始化的流程图为图4:
4.gif
图4 CAN总线初始化的流程图
下面给出了CAN初始化程序。
CANGCON=0x01 //CAN硬件reset
CANGIE=0xB0; //允许除定时器溢出外的所有中断(如接收、发送中断)
///////////////////////////////
CANEN2=0x03;
CANEN1=Ox00; //Mob0、Mob1选通,Mob2-14禁止
//////////////////////////////
CANIE2=0x03;
CANIEl=Ox00; //Mob0、Mob1允许中断,Mob2-14禁止中断
CANHPMOB=0x10 //Mob()具有最高优先级
/////////////////////////////
CANBT1=0x7E;
CANBT2=Ox6E;
CANBT3=Ox7F;
CANTCON=OxFF: .//波特率设置为10.000kHz
/////////////////////////////
CANPAGE=0xOO://选通Mob0
CANSTMOB=0: //状态寄存器清零
CANCDMOB=Ox01;//DLC选择lbyte
CANCDMOB I=0x80;//允许接收
CANGCON I=0x02;//选择使能模式
2.2.2 CAN总线收发器设计
此系统选用了ATMEL公司的AT90CAN128芯片作为CAN总线控制器,通过对其相应寄存器的配置,并与ATA6660CAN总线收发器配合,便可实现对CAN总线的操纵。
AT90CAN128兼容CAN2.0A和CAN2.OB规范,提供了从MOBO到MOBl4共15组MOB,每个MOB都有独立的ID和ID接收过滤码,可看作CAN总线上的独立器件进行控制。
2.2.3中断处理
在CAN收发数据中,最霞要的就是中断处理过程。
为了保证总线转换过程中不产生丢包现象,在此设计中。CAN与RS232的接收均采用中断形式,并设计了两个软件F1-FO分别做为CAN和RS232的缓冲,在中断处理中将数据压入FIFO,减少了中断服务程序所占用的时间。使系统中断后能迅速恢复并准备接收下一数据。当总线空闲时,转换器再将FIFO中的数据以硬件中断形式依次发出。由于CAN总线数据采用的是短帧结构,不会长时问占用总线,所以这样做不会对总线的实时性产生很大影响。
本文作者创新点:本论文主要研究CAN总线的特性及优势,实现在CAN总线上进行数据通信。课题设计并实现的功能模块,可扩展性好,便于升级和维护。有良好的实际应用价值,有利于CAN总线的汽车应用国产化。
1 引言
CAN(Controller Area Network)即控制器局域网络,它是德国波许(Bosch)一公司从20世纪80年代初开始,为解决当代汽车中日益增多的控制与测试仪器之间的数据交换而开发的一种能有效支持分布式控制或实时控制的串行通信网络。现代汽车安全性、舒适性及环保要求的不断提高,因此,本课题着眼于其发展的现状,通过CAN总线和外设传感器的应用,保证了车载系统和外围电路更好的通信,最大程度的保证了车辆的安全。
2 总体结构
本课题旨在通过对CAN总线的研究,保证车身与外围扩展电路正常的通信。经过分析比较,确定实行方案,并加以验证。
整个系统是将温度、加速度,还有TTS、GPS的数据经过AT90CAN128进行处理,通过转发器,一并发到CAN总线上,然后,接收端(CAN转串口232)将接到的数据通过串口发到车载平台上,对数据进行处理。同理,车载平台发送的命令也会经过CAN总线传回控制器,对外围设备进行控制(数据的逆向传输)。
系统原理如图1所示:
1.gif
图1系统原理
2.1硬件设计
1) AT90CAN128做主控制器,它是ATMEL公司生产带有一个CAN的控制器,CAN控制器集成了CAN协议的物理层和数据链路层的功能,可完成对数据的成帧处理,包括位填充、数据块编码、循环冗余校验和优先级判别等功能。符合CAN2.OA和CAN2.OB协议规范,支持标准帧和扩展帧的接收和发送。
2) ATA6660也是ATMEL公司的新型高速度的CAN总线收发器。这种新产品采用了ATMEL公司的0.8微米BCDMOS处理技术,可满足45伏特电压甚至更为苛刻环境中的应用。ATA6660是为不同工作模式下高速差动数据传输(如工业和汽车制造上的应用)而专门设计的。针对高速数据传输的需求,波特率可以调整到1 Mbaud。与国际高速CAN数据通讯标准ISO11898完全兼容。
2.1.1 CAN控制器的数据接收
首先,选定CAN控制器的MOB0模式,设定自动增量,初值为0。再使CANSTMOB的RXOK置1,从而使CAN控制器处于接收数据状态,接收一个数据后,清接收中断标志。
2.1.2 CAN控制器的数据发送
需要先关中断的标志,其次装载消息数据,并把CAN控制器设置为发送状态,待数据发送完后。再把全局中断寄存器CANGIE设置为接收使能。
CAN总线收发器的原理图为图2:
2.gif
图2 CAN总线收发器的原理图
2.1.3 RS232-CAN总线转换器
带有RS232接口的数据操作站可以通过RS232接口接入,实现与CAN智能模块的信息通讯,完成操作命令的下发及智能模块实时数据、运行状态的采集。
RS232-CAN总线转换器原理图为图3:
3.gif
图3 RS232-CAN总线转换器原理图
2.2软件设计
2.2.1 AT90CAN128的初始化
AT90CAN128的初始化是在复位模式下进行,初始化主要包括工作方式的设置、接收滤波方式的设置,接收屏蔽寄存器ARM和接收代码寄存器ACR的设置.波特率参数的设置和中断允许寄存器IER的设置等,在完成AT90CAN128的初始化设置以后,AT90CAN128回到工作状态进行正常的通讯任务。
CAN总线初始化的流程图为图4:
4.gif
图4 CAN总线初始化的流程图
下面给出了CAN初始化程序。
CANGCON=0x01 //CAN硬件reset
CANGIE=0xB0; //允许除定时器溢出外的所有中断(如接收、发送中断)
///////////////////////////////
CANEN2=0x03;
CANEN1=Ox00; //Mob0、Mob1选通,Mob2-14禁止
//////////////////////////////
CANIE2=0x03;
CANIEl=Ox00; //Mob0、Mob1允许中断,Mob2-14禁止中断
CANHPMOB=0x10 //Mob()具有最高优先级
/////////////////////////////
CANBT1=0x7E;
CANBT2=Ox6E;
CANBT3=Ox7F;
CANTCON=OxFF: .//波特率设置为10.000kHz
/////////////////////////////
CANPAGE=0xOO://选通Mob0
CANSTMOB=0: //状态寄存器清零
CANCDMOB=Ox01;//DLC选择lbyte
CANCDMOB I=0x80;//允许接收
CANGCON I=0x02;//选择使能模式
2.2.2 CAN总线收发器设计
此系统选用了ATMEL公司的AT90CAN128芯片作为CAN总线控制器,通过对其相应寄存器的配置,并与ATA6660CAN总线收发器配合,便可实现对CAN总线的操纵。
AT90CAN128兼容CAN2.0A和CAN2.OB规范,提供了从MOBO到MOBl4共15组MOB,每个MOB都有独立的ID和ID接收过滤码,可看作CAN总线上的独立器件进行控制。
2.2.3中断处理
在CAN收发数据中,最霞要的就是中断处理过程。
为了保证总线转换过程中不产生丢包现象,在此设计中。CAN与RS232的接收均采用中断形式,并设计了两个软件F1-FO分别做为CAN和RS232的缓冲,在中断处理中将数据压入FIFO,减少了中断服务程序所占用的时间。使系统中断后能迅速恢复并准备接收下一数据。当总线空闲时,转换器再将FIFO中的数据以硬件中断形式依次发出。由于CAN总线数据采用的是短帧结构,不会长时问占用总线,所以这样做不会对总线的实时性产生很大影响。
本文作者创新点:本论文主要研究CAN总线的特性及优势,实现在CAN总线上进行数据通信。课题设计并实现的功能模块,可扩展性好,便于升级和维护。有良好的实际应用价值,有利于CAN总线的汽车应用国产化。
举报