基于CAN总线技术的汽车车灯电动车窗雨刮的控制系统方案.docx
- 文档编号:5704472
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:49
- 大小:267.05KB
基于CAN总线技术的汽车车灯电动车窗雨刮的控制系统方案.docx
《基于CAN总线技术的汽车车灯电动车窗雨刮的控制系统方案.docx》由会员分享,可在线阅读,更多相关《基于CAN总线技术的汽车车灯电动车窗雨刮的控制系统方案.docx(49页珍藏版)》请在冰点文库上搜索。
基于CAN总线技术的汽车车灯电动车窗雨刮的控制系统方案
基于CAN总线技术的汽车车灯、电动车窗、雨刮的控制系统
简介
随着现代汽车的迅猛发展和电子技术的日新月异,汽车电子设备不断增多,从发动机控制到传动系统控制,从行驶、制动、转向系统控制到安全保证系统及仪表报警系统,从电源管理到为提高舒适性而作的各种努力,使汽车综合控制系统越来越复杂。
目前.以微控制器为代表的汽车电子在整车电子系统中应用广泛,汽车控制正由机电控制系统转向以分布式网络为基础的智能化系统。
CAN总线是一种支持分布式和实时控制的串行通信网络,以其高性能和高可靠性在自动控制领域广泛应用。
本设计主要针对基于CAN总线的汽车电子系统的设计,包括汽车车灯和汽车车窗和汽车雨刮等控制系统的总体设计思想、方法和硬件设计,介绍如何实现用CAN总线完成汽车控制系统的控制。
CAN总线3
1.1CAN简介-3
1.2CAN总线协议的报文帧结构形式3
CAN总线在奥迪A6汽车车灯上的应用4
2.1灯光控制系统的网络硬件设计。
-5
2.2MCU的选择6
2.3CAN通讯控制器6
2.4CAN总线收发器6
2.5系统的软件设计7
2.6CAN控制初始化程序7
2.7中央处理器程序设计8
2.8车灯控制程序11
CAN总线在奥迪A6汽车电动车窗上的应用15
3.1系统的总体设计15
3.2硬件接口电路设计15
3.3系统软件设计17
3.3.1CAN控制初始化17
3.3.2节点发送/接收报文
--17
3.3.3主控程序
18
3.4电动车窗系统主要技术参数和功能19
CAN总线在奥迪A6汽车雨刮上的应用19
4.1系统的总体设计19
4.2系统硬件电路设计20
4.2.1雨量检测模块20
4.2.2开关控制模块21
4.2.3ECU和CAN通信模块21
4.2.4输出驱动模块22
4.2.5雨刮电动机22
4.3系统软件设计24
结语
CAN总线
1.1CAN简介
CAN(ControllerAreaNewtork)即控制器局域网,是一种先进的串行通信协议,属于现场总线范围。
CAN总线是最初由德国Bosch公司在80年代初期,为了解决现代汽车中众多的控制与测试一起之间的数据交换而开发的一种串行数据通信协议,目的是通过较少的信号线将汽车上的各种电子设备通过网络连接起来,并提高数据在网络中传输的可靠性,CAN总线具有较强纠错能力,支持差分收发,因而适合高噪声环境,并具有较远的传输距离,特别适合于中小型分布式测控系统,目前己在工业自动化、建筑物环境控制、机床、医疗设备等领域得到广泛应用。
CAN总线具有以下几个重要特点:
1)结构简单,只有两根线与外部相连,且内部含有错误探测和管理模块。
2)通信方式灵活。
可以多种方式工作,网络上任意一个节点均可在任意时刻主动的向网络上的其他节点发送信息,而不分主从。
3)可以点对点、点对多点及全局广播方式发送和接受数据。
4)网络上的节点信息可分成不同的优先级,可以满足不同的实时要求。
5)CAN通讯格式采用短帧格式,每帧字节数最多为8个,可满足通常工业领域中控制命令、工作状态和测试数据的一般要求。
同时,8个字节也不会占用总线时间过长,从而保证了通讯的实时性。
6)采用非破坏性总线仲裁技术。
当两个节点同时向总线上发送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可以不受影响继续传输数据,这大大地节省了总线仲裁冲突时间,在网络负载很重的情况下也不会出现网络瘫痪。
7)直接通讯距离最大可达1kOm(速率在5kb/S以下),最高通讯速率可达1Mb/s(此
时距离最长为40m)。
节点数可达110个,通信介质可以是双绞线、同轴电缆或光导纤维。
8)CAN总线通讯接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。
9)CAN总线采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。
1.2CAN总线协议的报文帧结构形式
在报文传输时,不同的帧具有不同的传输结构,下面将分别介绍四种传输帧的结构,只有严格按照该结构进行帧的传输,才能被节点正确接收和发送。
(1)数据帧由七种不同的位域(BitField)组成:
帧起始(Startof)、仲裁域(ArbitrationField)、控制域(ControlField)、数据域(DataField)、CRC域(CRCField)、应答域(ACKField)和帧结尾(Endof)。
数据域的长度可以为0〜8个字节。
1)帧起始(SOF):
帧起始(SOF)标志着数据帧和远程帧的起始,仅由一个“显性”位组成。
在CAN的同步规则中,当总线空闲时(处于隐性状态),才允许站点开始发送(信号)。
所有的站点必须同步于首先开始发送报文的站点的帧起始前沿(该方式称为“硬同步”)。
2)仲裁域:
仲裁域由标识符和RTR位组成,标准帧格式与扩展帧格式的仲裁域格式不同。
标准格式里,仲裁域由11位标识符和RTR位组成。
标识符位有ID28〜IDI8。
扩展帧格式
里,仲裁域包括29位标识符、SRR位、IDE(ldentifierExtension,标志符扩展)位、RTR
位。
其标识符有ID28〜IDO。
为了区别标准帧格式和扩展帧格式,CANI.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总线,能够有效的减小电力线的数量,减少干扰,实现优化控制。
I车灯1
(图二)
我们可以直接在(图二)中增加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执行相关程序,控制车灯
驱动电路,使其相应的车灯完成控制目的。
(注意图中的发光二极管为车灯的驱动电路,驱
动车灯的亮和灭)
I
-I4JI-4K.HK吃HK.略K
FA
™fT
4亠“[ZH-亘主至荃」sils-Hsgp
『丁
u
HU11
LT
^r-MdiiJ
3JKCT
l二冠
=IT—
Hr-En肝XT'"s.
(图三)
微处理器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输出控制寄存器等。
需要注意的是,这些寄存器仅能在复位期间写访问。
因此,在对这些寄存器初始化前,必须确保系统进入了复位状态。
流程图如下:
(\AT89C511'关晰CAN的屮断源
设代总线定吋寄〃器
设胃输出拎制奇存器
复位请如位=1|
——kd匸亠亠
设置时钟芬誠寄存器’K基本CAN或增强CAN
2、时钟输出4脚CLKOUT使能及频率选择
3、CAN输出比较器选择
I.b:
l1■JI-
进入代常运行模式
W
打JfCANfpWr
对开左控制器的CAN'|1断源
图浜5SJA1000初始化流利图
2.7中央处理器程序设计
中央处理器程序包括初始MCU,以及初始化CAN控制器。
通过查询,判断是否有开关信号发出。
若有,将此信号发送到CAN控制器,CAN控制器经处理后发送到CAN收发
器。
程序流程图如下:
初始化MCU,初始化CAN控制器
图1.中央MCU控制程序中央处理器程序如下
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharsj[8];
#defineTIMO-50000
sbitcs=P2A0;
#defineMyAddr1
#defineCAN_DATAP0
#defineCAN_CR
0
#defineCAN_CMR
1
#defineCAN_SR
2
#defineCAN_IR:
3
#defineCAN_ACR
4
#defineCAN_AMR
5
#defineCAN_BTR06
#defineCAN_BTR17
#defineCAN_OCR
8
#defineCAN_TXB
10
#defineCAN_RXB
20
//控制
//命令
//状态
//中断
//验收
//屏蔽
//时序0
//时序1
//输出
//发送缓冲
//接收缓冲
/*初始化部分*/
//进入复位模式,允许访问各个寄存器
//验收,表示接收的数据中第一位为
//屏蔽;00表示不屏蔽,8位全有效。
//总线时序0
//总线时序1
//0xaa,0xd2,0xfa输出控制
//接收中断使能,否则不能接收
#defineCAN_CDR31//分频
ucharpdataCAN[32]_at_(0);voidCAN_INI(){
CAN[CAN_CR]=0x01;CAN[CAN_ACR]=MyAddr;CAN[CAN_AMR]=0x00;
CAN[CAN_BTR0]=0x07;CAN[CAN_BTR1]=0xff;
CAN[CAN_OCR]=0x1A;
CAN[CAN_CR]=0x02;
}
voiddelay(uintx)//延时部分{
uinty;
for(y=x;y>0;y--);
}
voidCAN_SEND()/*
{
uchari,p;p=CAN[CAN_SR];if(p&0x04)
报文
发送数据部分*/
//状态寄存器的内容给p
//检查第三位即发送缓冲器的状态,为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();
0电平方式(低电平
0号计数
IT0=1;//外中断请求信号方式控制位:
1脉冲方式(后沿负跳有效)有效)
TH0=TIM0&0XFF;TL0=TIM0>>8;TR0=1;//启动
器,-50000equsFFFF3CB0;TH0==B0,TL0==3C
EX0=1;
ET0=1;
EA=1;
PX0=1;
while
(1)
{
if((PO&Oxff)!
=Oxff)
{
delay(IOOOO);
if((PO&Oxff)!
=0xff)
{
sj[O]=POAO;
sj[1]=POA1;
sj[2]=P0A2;
sj[3]=P0A3;
sj[4]=POA4;
sj[5]=1;
sj[6]=1;
sj[7]=1;
CAN_SEND();
}}}}voidTimer1()interrupt1using1{
TH0=TIMO&OXFF;TL0=TIM0>>8;TR0=1;
}
2.8车灯控制程序
当CANH,和CNAL,有数据传来时,经过CAN总线数据接受器接受到的数据,发送
给SJA1000控制器,控制器接受完毕后发出中断请求,MCU接受中断请求,发生中断随
之处理中断程序。
程序框图如下:
车灯控制程序如下
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineTIMO-50000ucharsj[8];
ucharCANBUS=0;
sbitcs=P2A0;
sbitqd1=P0A1;
sbitqd0=P0A0;
sbitqd2=P0A2;
sbitqd3=P0A3;
sbitqd4=P0A4;
sbitqd5=P0A5;
sbitqd6=P0A6;
sbitqd7=P0A7;
#defineMyAddr1#defineCAN_DATAP0
#defineCAN_CR
0
//
控制
#defineCAN_CMR
1
//
命令
#defineCAN_SR
2
//
状态
#defineCAN_IR
3
//中
断
#defineCAN_ACR
4
//
验收
#defineCAN_AMR
5
//
屏蔽
#defineCAN_BTR06
//
时序0
#defineCAN_BTR17
//
时序1
#defineCAN_OCR
8
//
输出
#defineCAN_TXB
10
//
发送缓冲
#defineCAN_RXB
20
//
接收缓冲
#defineCAN_CDR
31
//
分频
ucharpdataCAN[32]_at_(0);
{
CAN[CAN_CR]=0x01;
CAN[CAN_ACR]=MyAddr;
CAN[CAN_AMR]=0x00;
CAN[CAN_BTR0]=0x07;
CAN[CAN_BTR1]=0xff;
CAN[CAN_OCR]=0x1A;
CAN[CAN_CR]=0x02;
voidCAN_INI()/*初始化部分*/
//进入复位模式,允许访问各个寄存器
//验收,表示接收的数据中第一位为1。
//屏蔽;00表示不屏蔽,8位全有效。
//总线时序0
//总线时序1
//0xaa,0xd2,0xfa输出控制//接收中断使能,否则不能接收
voidmain()
{
P0=0xff;
EA=0;
cs=0;
EX0=0;
PX0=0;
ET0=0;
CAN_INI();
IT0=1;//外中断请求信号方式控制位:
1脉冲方式(后沿负跳有效),0电平方式(低电平有效)
TH0=TIM0&0XFF;TL0=TIM0>>8;TR0=1;//启动0号计数器,-50000equsFFFF3CB0;TH0==B0,TL0==3C
EX0=1;
ET0=1;
EA=1;
PX0=1;
while
(1);
}
voidCAN_INT()interrupt0using1/*接收中断*/
{
uchari,p;
p=CAN[CAN_IR];
if(p&0x01)//中断寄存器的低一位为一:
RXFIFO不空且中断寄存器的RIE(接收中断使能)位置1
{
p=CAN_RXB;//接收数据的首地址给p
for(i=0;i<8;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=s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 CAN 总线技术 汽车 车灯 电动车窗 控制系统 方案