基于CAN总线的车门控制文档格式.doc

上传人:b****3 文档编号:15407552 上传时间:2022-10-30 格式:DOC 页数:12 大小:459.96KB
下载 相关 举报
基于CAN总线的车门控制文档格式.doc_第1页
第1页 / 共12页
基于CAN总线的车门控制文档格式.doc_第2页
第2页 / 共12页
基于CAN总线的车门控制文档格式.doc_第3页
第3页 / 共12页
基于CAN总线的车门控制文档格式.doc_第4页
第4页 / 共12页
基于CAN总线的车门控制文档格式.doc_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于CAN总线的车门控制文档格式.doc

《基于CAN总线的车门控制文档格式.doc》由会员分享,可在线阅读,更多相关《基于CAN总线的车门控制文档格式.doc(12页珍藏版)》请在冰豆网上搜索。

基于CAN总线的车门控制文档格式.doc

3.4 ARM2103模块 9

第3章 系统软件设计 10

4.1主程序设计图 10

4.2SJA1000程序模块 11

4.3ARM控制程序模块 14

第5章调试和总结 15

参考文献 16

第一章概述

在当今的社会生活中,电子科学技术的运用越来越深入到各行各业之中,并得到了长足的发展和进步,现场总线是应用于工业现场,采用总线方式连接多个设备,用于传输工业现场各种数据的一类通信系统。

CAN是目前应用最广泛的车载网络,解决了现代汽车中众多的控制与仪器之间的数据交换。

CAN是一种多主方式的串行通讯总线,其设计的规范要求有很高的位速率,高的抗电磁干扰性,并且能够检测出产生的任何错误。

而现实当中CAN总线运用在汽车领域非常多的,这里我用现在最常用的无线装置PT2262和PT2272运用在车门锁中将其与CAN总线一起运用达到很好的人机对话功能。

这里我想用一块ARM2103当成车上的总MCU,通过PT2262人为按闭键发送信号到PT2272再经过CAN收发器CTM8251通过CANH和CANL再与SJA1000CAN控制器连接,再由ARM2103接收SJA1000的报文控制车锁,当检测到车窗没关上,先关窗户,再关上车门后喇叭响3声。

当按上开键时,只需开门,再延时20秒当车门无人操作时自动关门上锁。

第二章总体设计

这里说到CAN总线就先让我想到了UART,都是异步通信串口,虽然对CAN还有很多不懂,只是有个初步模型吧,我觉得他就是一个调配各个分支模块与总控制的联系及相互的联系,或者说给它们提供一个中转站也可以叫排序的电路吧,再让总控制器去处理吧。

先以ARM2103为控制器,通过PT2262人为按键发送信号到PT2272再用CAN收发器传送到总线上,由CAN收发器接收CANH和CANL,这里选用CTM8251收发器,再传送到CAN总线控制器SJA1000来处理接受和储存来自车门及车窗节点的反馈信号,检测开关是否开还是关,而后ARM2103作为微控制器处理接收到的报文作出相应的处理。

其设计方框图如下图1所示:

图表1总设计电路图

第三章系统硬件设计

3.11SJA1000模块

SJA1000用于汽车及一般工业的独立CAN总线控制器,使用了并行总线接口与MCU连接,ARM板通过地址线,数据线和控制线与SJA1000连接的,访问时,SJA1000的片选信号必须有效。

以下是SJA1000的结构图;

图表2SJA1000结构图

CAN总线定义了四种不同的信息帧:

(1)数据帧:

将数据从发送器传输到接收器;

,用下面的图可以了解了;

(2)远程帧:

从某个节点发出,请求发送具有同样标识符的数据帧;

远程帧由6个不同的位场组成:

帧起始、仲裁场、控制场、数据场、CRC校验场、ACK应答场和帧结束。

与数据帧相反,远程帧的RTR位是隐性的。

它没有数据域,所以数据长度代码的数值没有意义(可以标注为0-8范围里的任何值)oRTR位的极性表示了所发送的帧是一数据帧(RTR位显性)还是远程帧(RTR位隐性)。

(3)错误帧:

当有任何节点检测到总线错误时就发出错误帧.

错误帧是由两个场组成第一个场是由来自各站的错误标志叠加得到的。

第二个是出错界定符。

一个节点有两种形式的错误标志,即主动错误标志和被动错误标志。

一个是主动错误标志由6个连续的显性位组成;

另一个是被动错误标志由6个连续的隐性位组成,除非被其他节点的显性位重写。

发生错误时,检测到错误条件的站通过发送主动错误标志指示错误。

所有其他的站由此检测到错误条件,并与此同时开始发送错误标志。

显性位序列导致个别站发送的不同的错误标志被叠加在一起。

错误标志发出以后,每站就发送隐性位,并一直监视总线直到检测出一个隐性位为止。

接着开始发送其余7个隐性位,这8个隐性位标志一个错误信令过程的结束。

(4)过载帧:

为了在先行的和后续的数据帧或远程帧之间附加一定的延时;

以下两种过载条件会导致过载标志的传送:

1)接收器的内部条件(此接收器对十下一数据帧或远程帧需要有一延时;

2)间歇场期间检测到一显性位。

由过载条件1}fn引发的过载帧,只允许起始十所期望的间歇场的第一个位时间。

}fn由过载条件2引发的过载帧,应起始十所检测到显性位之后的位。

通常为了延时下一个数据帧或远程帧,两个过载帧都会产生。

3.2CTM8251收发模块

CTM8251是一款带隔离的通用CAN收发器芯片,该芯片内部集成了所有必需的CAN隔离及CAN收、发器件,这些都被集成在不到3平方厘米的芯片上。

芯片的主要功能是将CAN控制器的逻辑电平转换为CAN总线的差分电平并且具有DC2500V的隔离功能。

CTM8251芯片主要功能:

具有将CAN控制器逻辑电平转换为CAN总线的差动电平的功能,另外CTM8251还具有对CAN控制器与CAN总线之间的隔离作用。

图表3CTM8251连接图

3.3PT2262,PT2272模块

车门的无线开锁键就是用到了PT2262/2272,实际运用中厂商都帮我们弄好了相互配对解锁地址,所以不需要我们去设置相应的地址,PT2262/2272是一对带地址、数据编码功能的无线遥控发射/接收芯片。

其中发射芯片PT2262-IR将载波振荡器、编码器和发射单元集成于一身,使发射电路变得非常简洁。

编码芯片PT2262发出的编码信号由:

地址码、数据码、同步码组成一个完整的码字。

当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。

图表4PT2262结构图

PT2272-M4则表示数据输出为4位的暂存型无线遥控接收芯片,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。

图表5PT2272结构图

PT2272

3.4ARM2103模块

ARM2103是接触最多的了,它是一个基于支持实时仿真的16/32位ARM7TDMI-SCPU的微控制器,并带有32kB的嵌入高速Flash存储器,128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行

由于内置了宽范围的串行通信接口(2个UART、SPI、SSP和2个I2C)和8KB的片内SRAM,LPC2103也适合用在通信网关和协议转换器中。

32/16位定时器、增强型10位ADC、定时器输出匹配PWM特性、多达13个边沿、电平触发的外部中断、32条高速GPIO,与此,它具有满足很多的项目的需求。

在这里,我用到ARM2103接收SJA1000发过来的报文,处理车窗锁和车门(模拟是用LED1亮为车窗关,LED2亮为车门关,KEY1按下代表车门有人操作)。

数据D[0:

7]与SJA1000数据口相连,如图1总设计的一样显示的一样,以下是ARM板灯键图:

图表6ARM板灯键图

第四章系统软件设计

4.1主程序设计图

其中检测信号Flag1为1时表示所有开关闭合,反之Flag==0,则断开;

Flag2时表示SJA1000的中断标志变量,Flag2==1表示SJA1000有中断.

图表7主程序设计图

4.2SJA1000程序模块

1.SJA1000初始化流程:

SJA程序初始化程序:

voidSJA1000_Init(unsignedcharbtr0,unsignedcharbtr1,unsignedchar*filter)

{

SetBitMask(REG_CAN_MOD,RM_RR_BIT);

//进入复位模式

WriteSJAReg(REG_CAN_MOD,0x05);

//配置模式寄存器,

//选择双滤波、自发自收模式

WriteSJAReg(REG_CAN_CDR,0xC8);

//配置时钟分频寄存器,选择PeliCAN模式

WriteSJARegBlock(REG_CAN_ACR0,filter,8);

//配置验收代码/屏蔽寄存器

WriteSJAReg(REG_CAN_BTR0,btr0);

//配置总线定时器0

WriteSJAReg(REG_CAN_BTR1,btr1);

//配置总线定时器1

WriteSJAReg(REG_CAN_OCR,0x1A);

//配置输出管脚为TX0与RX0,推挽输出

ClearBitMask(REG_CAN_MOD,RM_RR_BIT);

//退出复位模式,进入工作模式

}

SJA1000发送程序

charSJASengData(unsignedchar*databuf,unsignedcharcmd)

charstatus=1;

unsignedcharlen;

unsignedchardlc;

if((ReadSJAReg(REG_CAN_SR)&

(TBS_BIT|TCS_BIT))!

=(TBS_BIT|TCS_BIT)){

status=0;

}else{

dlc=(*databuf&

0x0f);

if(dlc>

8){

dlc=8;

switch(*databuf&

0xC0){

case0x00:

len=STD_FRAMEID_LENTH+dlc;

break;

case0x40:

len=STD_FRAMID_LENTH;

case0x80:

len=EXT_FRAMEID_LENTH+dlc;

case0xC0:

len=EXT_FRAMEID_LENTH;

defalut:

len=0;

status=0;

if(len>

0){

WriteSJARegBlock(REG_CAN_TXFMINFO,databuf,len);

SetSJASendCmd(cmd);

status=1;

}}

return

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1