基于CAN总线技术的汽车车灯电动车窗雨刮的控制系统资料Word格式.docx
《基于CAN总线技术的汽车车灯电动车窗雨刮的控制系统资料Word格式.docx》由会员分享,可在线阅读,更多相关《基于CAN总线技术的汽车车灯电动车窗雨刮的控制系统资料Word格式.docx(39页珍藏版)》请在冰豆网上搜索。
9)CAN总线采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。
1.2CAN总线协议的报文帧结构形式
在报文传输时,不同的帧具有不同的传输结构,下面将分别介绍四种传输帧的结构,只有严格按照该结构进行帧的传输,才能被节点正确接收和发送。
(1)数据帧由七种不同的位域(BitField)组成:
帧起始(Startof)、仲裁域(ArbitrationField)、控制域(ControlField)、数据域(DataField)、CRC域(CRCField)、应答域(ACKField)和帧结尾(Endof)。
数据域的长度可以为0~8个字节。
1)帧起始(SOF):
帧起始(SOF)标志着数据帧和远程帧的起始,仅由一个“显性”位组成。
在CAN的同步规则中,当总线空闲时(处于隐性状态),才允许站点开始发送(信号)。
所有的站点必须同步于首先开始发送报文的站点的帧起始前沿(该方式称为“硬同步”)。
2)仲裁域:
仲裁域由标识符和RTR位组成,标准帧格式与扩展帧格式的仲裁域格式不同。
标准格式里,仲裁域由1l位标识符和RTR位组成。
标识符位有ID28~IDl8。
扩展帧格式里,仲裁域包括29位标识符、SRR位、IDE(IdentifierExtension,标志符扩展)位、RTR位。
其标识符有ID28~IDO。
为了区别标准帧格式和扩展帧格式,CANl.0~1.2版本协议的保留位r1现表示为IDE位。
IDE位为显性,表示数据帧为标准格式;
IDE位为隐性,表示数据帧为扩展帧格式。
在扩展帧中,替代远程请求(SubstituteRemoteRequest,SRR)位为隐性。
仲裁域传输顺序为从最高位到最低位,其中最高7位不能全为零。
RTR的全称为“远程发送请求(RemoteTransmissionRequest)”。
RTR位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”。
它是区别数据帧和远程帧的标志。
3)控制域:
控制域由6位组成,包括2个保留位(r0、r1同于CAN总线协议扩展)及4位数据长度码,允许的数据长度值为0~8字节。
4)数据域:
发送缓冲区中的数据按照长度代码指示长度发送。
对于接收的数据,同样如此。
它可为0~8字节,每个字节包含8位,首先发送的是MSB(最高位)。
5)CRC校验码域:
它由CRC域(15位)及CRC边界符(一个隐性位)组成。
CRC计算中,被除的多项式包括帧的起始域、仲裁域、控制域、数据域及15位为0的解除填充的位流给定。
此多项式被下列多项式X15+X14+X10+X8+X7+X4+X3+1除(系数按模2计算),相除的余数即为发至总线的CRC序列。
发送时,CRC序列的最高有效位被首先发送/接收。
之所以选用这种帧校验方式,是由于这种CRC校验码对于少于127位的帧是最佳的。
6)应答域:
应答域由发送方发出的两个(应答间隙及应答界定)隐性位组成,所有接收到正确的CRC序列的节点将在发送节点的应答间隙上将发送的这一隐性位改写为显性位。
因此,发送节点将一直监视总线信号已确认网络中至少一个节点正确地接收到所发信息。
应答界定符是应答域中第二个隐性位,由此可见,应答间隙两边有两个隐性位:
CRC域和应答界定位。
7)帧结束域:
每一个数据帧或远程帧均由一串七个隐性位的帧结束域结尾。
这样,接收节点可以正确检测到一个帧的传输结束。
CAN总线在奥迪A6汽车车灯上的应用
摘要:
以汽车控制局域网CAN总线为基础,结合89C51单片机,对奥迪汽车的的车灯进行控制。
关键词:
89C51,sja1000,CAN总线,82c250
正文:
灯光控制系统是保证汽车安全行驶的一个重要系统。
传统的灯光控制系统多采用继电器和独立模式控制,这使得车内线束过多且布线复杂,会引起严重的电磁干扰,使系统的可靠性下降。
CAN(ControllerAreaNetwork)数据总线是一种适用汽车环境的汽车局域网。
它能够很好的解决这个问题,它具有较高的传输速度,主要是针对汽车中对实时性要求很高的动力系统而设计的。
利用CAN总线,不仅能简化线束,而且还能大大降低车辆的故障率。
基于CAN总线的灯光控制系统,就很好用利用CAN总线的优势,发挥车灯的最大性能。
本设计利用CAN总线通信协议建立汽车灯光(前照灯)控制系统的局域网(对于汽车其他灯光可以按照同样道理设计而成,只需要多加几个通信的节点),控制的灯光有:
远光灯、近光灯、示宽灯、雾灯、转向灯。
通过CAN总线实现上述灯光的开和闭的控制。
2.1灯光控制系统的网络硬件设计。
对于传统的灯光控制系统如图一所示。
(图一)
从图一可以看出,传统供电系统是所谓的并行结构,一个用电器赔一跟电力线和一个开关,开关置于驾驶员旁,由驾驶员控制开关通断,控制灯(或其他用电器)工作。
这种结构缺点是若用电设备越多,电力线就越多,这无疑是加大了汽车的负担而且容易收到干扰,导致器件不能正常运行。
对于CAN总线的灯光控制系统如图二所示。
它利用CAN总线,能够有效的减小电力线的数量,减少干扰,实现优化控制。
(图二)
我们可以直接在(图二)中增加CAN总线收发器,及其MCU控制电路,这样就能实现更多的车灯控制系统。
2.2MCU的选择
本设计选用AT89C51单片机作为灯光控制节点MCU。
P89C51单片机是一个8位高性能微控制器。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位的单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2.3CAN通讯控制器
本设计采用SAJ1000独立CAN控制器。
PHILIPS公司的PCA82C200是符合CAN2.0A协议的总线控制器,SJA1000是它的替代产品,它是应用于汽车和一般工业环境的独立CAN总线控制器。
具有完成CAN通信协议所要求的全部特性。
经过简单总线连接的SJA1000可完成CAN总线的物理和数据链路层的所有功能。
其硬件与软件设计和PCA82C200的基本CAN模式(BesicCAN)兼容。
同时,新增加的增强CAN模式(PeliCAN)还可支持CAN2.0B协议。
2.4CAN总线收发器
本文世纪采用CAN总线收发器82C250。
PCA82C250是CAN协议控制器和物理总线之间的接口,该器件对总线提供差动发送能力并对CAN控制器提供差动接收能力。
如在ISO11898标准中描述的,它们可以用高达1Mbit/s的位速率在两条有差动电压的总线电缆上传输数据。
这是全世界使用最广泛的CAN收发器之一。
图三为车灯控制系统硬件电路图,它的工作原理为:
CAN总线控制器与单片机连通,由单片机的程序给予初始化,并选通控制器,当单片机P1.0~P1.4其中一个管脚开关按下时,立刻把数据传送到CAN控制器SJA1000,利用CAN总线收发器82C250将信号发出,通过CANH,CANL两个管脚传输数据,当控制对象(车灯)系统中的收发器收到信号时,其系统中的CAN总线控制器发出中断,使车灯系统的MCU执行相关程序,控制车灯驱动电路,使其相应的车灯完成控制目的。
(注意图中的发光二极管为车灯的驱动电路,驱动车灯的亮和灭)
(图三)
微处理器AT89C51负责SJA1000的初始化,通过控制SJA1000实现数据的接受和发送等通讯任务。
SJA1000的AD0~AD7连接到单片机的P0.0~P0.7口,SJA1000的CS连接到89c51的P2.0,P2.0为0时片外存储器地址可选中SJA1000,CPU通过这些地址可对SJA1000执行相应的读/写操作。
SJA1000的RD,WR,ALE分别与89c51的引脚相连,INT接INT0。
82c250与CAN总线的接口采用了一定的完全和抗干扰措施。
一般情况下,若CAN总线系统干扰很强烈,为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不是直接与82C250的TXD和RXD相连,而是通过高速光耦6N137后与82c250相连,且光耦部分电路VCC和VDD完全隔离,这样就可以实现总线上各节点间的电气隔离。
2.5系统的软件设计
系统软件设计的关键是通讯程序的设计。
本设计的通讯软件程序主要由3部分组成:
初始化程序、中央处理器程序、车灯控制程序。
编写主要运用KEIL的C语言对AT89C51进行软件程序设计。
2.6CAN控制初始化程序
初始化程序主要是通过对CAN控制器控制段中的寄存器写入控制字,从而确定CAN控制器的工作方式等。
有3种方式进入初始化程序:
一是上电复位;
二是硬件复位;
三是软件复位,即运行期间通过给CAN控制器发一个复位请求,置复位请求为1。
在复位期间,必须初始化的寄存器有:
MR模式寄存器、CDR时分寄存器、ACR接收代码寄存器、AMR屏蔽寄存器、BTR总线定时定时器及OCR输出控制寄存器等。
需要注意的是,这些寄存器仅能在复位期间写访问。
因此,在对这些寄存器初始化前,必须确保系统进入了复位状态。
流程图如下:
2.7中央处理器程序设计
中央处理器程序包括初始MCU,以及初始化CAN控制器。
通过查询,判断是否有开关信号发出。
若有,将此信号发送到CAN控制器,CAN控制器经处理后发送到CAN收发器。
程序流程图如下:
否
是
图1.中央MCU控制程序
中央处理器程序如下
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharsj[8];
#defineTIM0-50000
sbitcs=P2^0;
#defineMyAddr1
#defineCAN_DATAP0
#defineCAN_CR0//控制
#defineCAN_CMR1//命令
#defineCAN_SR2//状态
#defineCAN_IR3//中断
#defineCAN_ACR4//验收
#defineCAN_AMR5//屏蔽
#defineCAN_BTR06//时序0
#defineCAN_BTR17//时序1
#defineCAN_OCR8//输出
#defineCAN_TXB10//发送缓冲
#defineCAN_RXB20//接收缓冲
#defineCAN_CDR31//分频
ucharpdataCAN[32]_at_(0);
voidCAN_INI()/*初始化部分*/
{
CAN[CAN_CR]=0x01;
//进入复位模式,允许访问各个寄存器
CAN[CAN_ACR]=MyAddr;
//验收,表示接收的数据中第一位为1。
CAN[CAN_AMR]=0x00;
//屏蔽;
00表示不屏蔽,8位全有效。
CAN[CAN_BTR0]=0x07;
//总线时序0
CAN[CAN_BTR1]=0xff;
//总线时序1
CAN[CAN_OCR]=0x1A;
//0xaa,0xd2,0xfa输出控制
CAN[CAN_CR]=0x02;
//接收中断使能,否则不能接收
}
voiddelay(uintx)//延时部分
uinty;
for(y=x;
y>
0;
y--);
}
voidCAN_SEND()/*发送数据部分*/
uchari,p;
p=CAN[CAN_SR];
//状态寄存器的内容给p
if(p&
0x04)//检查第三位即发送缓冲器的状态,为1CPU可以向发送缓冲器写报文
{
p=CAN_TXB;
/*p指向发送缓存首址*/
for(i=0;
i<
8;
i++)CAN[p++]=sj[i];
CAN[CAN_CMR]=0x01;
/*请求发送*/
voidmain()
P0=0xff;
EA=0;
cs=0;
EX0=0;
PX0=0;
ET0=0;
CAN_INI();
IT0=1;
//外中断请求信号方式控制位:
1脉冲方式(后沿负跳有效),0电平方式(低电平有效)
TH0=TIM0&
0XFF;
TL0=TIM0>
>
TR0=1;
//启动0号计数器,-50000equsFFFF3CB0;
TH0==B0,TL0==3C
EX0=1;
ET0=1;
EA=1;
PX0=1;
while
(1)
if((P0&
0xff)!
=0xff)
delay(10000);
sj[0]=P0^0;
sj[1]=P0^1;
sj[2]=P0^2;
sj[3]=P0^3;
sj[4]=P0^4;
sj[5]=1;
sj[6]=1;
sj[7]=1;
CAN_SEND();
voidTimer1()interrupt1using1
2.8车灯控制程序
当CANH,和CNAL,有数据传来时,经过CAN总线数据接受器接受到的数据,发送给SJA1000控制器,控制器接受完毕后发出中断请求,MCU接受中断请求,发生中断随之处理中断程序。
程序框图如下:
否
图2.车灯控制系统MCU程序
车灯控制程序如下
ucharCANBUS=0;
sbitqd1=P0^1;
sbitqd0=P0^0;
sbitqd2=P0^2;
sbitqd3=P0^3;
sbitqd4=P0^4;
sbitqd5=P0^5;
sbitqd6=P0^6;
sbitqd7=P0^7;
while
(1);
voidCAN_INT()interrupt0using1/*接收中断*/
p=CAN[CAN_IR];
if(p&
0x01)//中断寄存器的低一位为一:
RXFIFO不空且中断寄存器的RIE(接收中断使能)位置1
p=CAN_RXB;
//接收数据的首地址给p
i++)
sj[i]=CAN[p++];
//读接收的数据
CAN[CAN_CMR]=0x04;
/*释放接收缓存*/
CANBUS=1;
if(CANBUS==1)
qd0=sj[0];
qd1=sj[1];
qd2=sj[2];
qd3=sj[3];
qd4=sj[4];
qd5=sj[5];
qd6=sj[6];
qd7=sj[7];
CAN总线在奥迪A6汽车电动车窗上的应用
3.1系统的总体设计
现在各中高档轿车都安装有电动车窗,按钮控制车窗玻璃的升降。
如果车窗无智能,司机在没有注意到乘客的手或物体伸出窗口的情况下按下按钮,乘客容易被车窗夹伤。
为了安全,很多乘车都采用电动防夹车窗。
在充分研究有关CAN总线在汽车电子系统中的应用和电动车窗防夹方案的基础上,提出一种基于CAN总线的轿车车窗智能控制系统的设计方案,实现车窗在正常工作模式下防夹控制功能和紧急情况下(异常工作模式)快速升降车窗控制功能。
CAN总线系统节点分为不带微控制器的非智能节点和带微控制器的智能节点。
该系统采用智能节点设计,轿车车窗按CAN总线结构和电器元件在汽车中的物理位置划分为左前、右前、左后和右后4个节点单元。
其中左前节点为主控制单元,除负责本地(左前)车窗的升降,还可以远程控制其他车窗。
各节点采用独立的带CAN功能的微控制器设计,其CAN网络结构如图所示。
3.2硬件接口电路设计
该系统采用片内含有CAN控制器的P8xC591作为节点单元主控制器。
P8xC591采用强大的80C51指令集;
内部集成有SJAl000CAN控制器的PeliCAN功能;
全静态内核提供了扩展的节电方式:
振荡器停止和恢复而不丢失数据;
改进的1:
l内部时钟分频