欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于CAN总线的车门控制.docx

    • 资源ID:10882273       资源大小:319.06KB        全文页数:14页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于CAN总线的车门控制.docx

    1、基于CAN总线的车门控制基于CAN总线的车门控制基于CAN总线的车门锁控制摘 要 随着现代汽车的日益发展,汽车电子设备不断增加和改新,进而使得汽车控制系统中出现大量的控制信号需实时交换的问题,传统线束已远远不能满足要求,汽车局域网应运而生。CAN总线是一种多主方式的串行通讯总线,现实中CAN总线运用在汽车领域非常多,这里我用现在最常用的无线装置PT2262和PT2272运用在车门锁中将其与CAN总线一起运用达到很好的人机对话功能。再结合ARM2103完成整个自动控制。 关键词: ARM2103 CAN PT2262 PT2272 SJA1000 CTM8251 第一章 概述在当今的社会生活中,

    2、电子科学技术的运用越来越深入到各行各业之中,并得到了长足的发展和进步,现场总线是应用于工业现场,采用总线方式连接多个设备,用于传输工业现场各种数据的一类通信系统。 CAN是目前应用最广泛的车载网络,解决了现代汽车中众多的控制与仪器之间的数据交换。CAN是一种多主方式的串行通讯总线,其设计的规范要求有很高的位速率,高的抗电磁干扰性,并且能够检测出产生的任何错误。而现实当中CAN总线运用在汽车领域非常多的,这里我用现在最常用的无线装置PT2262和PT2272运用在车门锁中将其与CAN总线一起运用达到很好的人机对话功能。这里我想用一块ARM2103当成车上的总MCU,通过PT2262人为按闭键发送

    3、信号到PT2272再经过CAN收发器CTM8251通过CANH和CANL再与SJA1000 CAN控制器连接,再由ARM2103接收SJA1000的报文控制车锁,当检测到车窗没关上,先关窗户,再关上车门后喇叭响3声。当按上开键时,只需开门,再延时20秒当车门无人操作时自动关门上锁。 第二章 总体设计这里说到CAN总线就先让我想到了UART,都是异步通信串口,虽然对CAN还有很多不懂,只是有个初步模型吧,我觉得他就是一个调配各个分支模块与总控制的联系及相互的联系,或者说给它们提供一个中转站也可以叫排序的电路吧,再让总控制器去处理吧。先以ARM2103为控制器,通过PT2262人为按键发送信号到P

    4、T2272再用CAN收发器传送到总线上,由CAN收发器接收CANH和CANL,这里选用CTM8251收发器,再传送到CAN总线控制器SJA1000来处理接受和储存来自车门及车窗节点的反馈信号,检测开关是否开还是关,而后ARM2103作为微控制器处理接收到的报文作出相应的处理。其设计方框图如下图1所示:图表 1总设计电路图 第三章 系统硬件设计3.1 1SJA1000模块SJA1000用于汽车及一般工业的独立CAN总线控制器,使用了并行总线接口与MCU连接,ARM板通过地址线,数据线和控制线与SJA1000连接的,访问时,SJA1000的片选信号必须有效。以下是SJA1000的结构图;图表2SJ

    5、A1000结构图CAN总线定义了四种不同的信息帧:(1)数据帧:将数据从发送器传输到接收器;,用下面的图可以了解了;(2)远程帧:从某个节点发出,请求发送具有同样标识符的数据帧; 远程帧由6个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC校验场、ACK应答场和帧结束。与数据帧相反,远程帧的RTR位是隐性的。它没有数据域,所以数据长度代码的数值没有意义(可以标注为0-8范围里的任何值)o RTR位的极性表示了所发送的帧是一数据帧(RTR位显性)还是远程帧(RTR位隐性)。(3)错误帧:当有任何节点检测到总线错误时就发出错误帧.错误帧是由两个场组成第一个场是由来自各站的错误标志叠加得到的。

    6、第二个是出错界定符。一个节点有两种形式的错误标志,即主动错误标志和被动错误标志。 一个是主动错误标志由6个连续的显性位组成;另一个是被动错误标志由6个连续的隐性位组成,除非被其他节点的显性位重写。发生错误时,检测到错误条件的站通过发送主动错误标志指示错误。所有其他的站由此检测到错误条件,并与此同时开始发送错误标志。显性位序列导致个别站发送的不同的错误标志被叠加在一起。错误标志发出以后,每站就发送隐性位,并一直监视总线直到检测出一个隐性位为止。接着开始发送其余7个隐性位,这8个隐性位标志一个错误信令过程的结束。(4)过载帧:为了在先行的和后续的数据帧或远程帧之间附加一定的延时;以下两种过载条件会

    7、导致过载标志的传送:1)接收器的内部条件(此接收器对十下一数据帧或远程帧需要有一延时;2)间歇场期间检测到一显性位。由过载条件1 fn引发的过载帧,只允许起始十所期望的间歇场的第一个位时间。fn由过载条件2引发的过载帧,应起始十所检测到显性位之后的位。通常为了延时下一个数据帧或远程帧,两个过载帧都会产生。地址,所以不需要我们去设置相应的地址,PT2262/2272是一对带地址、数据编码功能的无线遥控发射/接收芯片。其中发射芯片PT2262-IR将载波振荡器、编码器和发射单元集成于一身,使发射电路变得非常简洁。编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字。当发射

    8、机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100的调幅。图表 4PT2262结构图PT2272-M4则表示数据输出为4位的暂存型无线遥控接收芯片,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与

    9、此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。图表 5 PT2272结构图3.4 ARM2103模块ARM2103是接触最多的了,它是一个基于支持实时仿真的16/32位ARM7 TDMI-S CPU的微控制器,并带有32kB的嵌入高速Flash存储器,128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行由于内置了宽范围的串行通信接口(2个UART、SPI、SSP和2个I2C)和8KB的片内SRAM,LPC2103也适合用在通信网关和协议转换器中。32/16位定时器、增强型10位ADC、定时器输出匹配PWM特性、多达13个边沿、电平触发的外

    10、部中断、32条高速GPIO,与此,它具有满足很多的项目的需求。在这里,我用到ARM2103接收SJA1000发过来的报文,处理车窗锁和车门(模拟是用LED1亮为车窗关,LED2亮为车门关,KEY1按下代表车门有人操作)。数据D0:7与SJA1000数据口相连,如图1总设计的一样显示的一样,以下是ARM板灯键图:图表 6ARM板灯键图第四章 系统软件设计4.1 主程序设计图其中检测信号Flag1为1时表示所有开关闭合,反之Flag=0,则断开;Flag2时表示SJA1000的中断标志变量,Flag2=1表示SJA1000有中断.图表 7主程序设计图4.2 SJA1000程序模块1.SJA1000

    11、初始化流程:SJA程序初始化程序: void SJA1000_Init(unsigned char btr0,unsigned char btr1,unsigned char *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);

    12、/ 配置验收代码/屏蔽寄存器 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发送程序char SJASengData(unsigned char*databuf,unsigned char cmd)char status=1;unsigned

    13、 char len;unsigned char dlc;if(ReadSJAReg(REG_CAN_SR)&(TBS_BIT|TCS_BIT)!=(TBS_BIT|TCS_BIT)status=0;elsedlc=(*databuf&0x0f);if(dlc8)dlc=8;switch(*databuf&0xC0)case 0x00: len=STD_FRAMEID_LENTH+dlc; break;case 0x40: len=STD_FRAMID_LENTH;case 0x80: len=EXT_FRAMEID_LENTH+dlc; break;case 0xC0: len=EXT_FRA

    14、MEID_LENTH;defalut: len=0; status=0; break;if(len0)WriteSJARegBlock(REG_CAN_TXFMINFO,databuf,len);SetSJASendCmd(cmd);status=1;return(status);SJA1000接收程序char SJARcvData(unsigned char *databuf)char status=1;unsigned char len;unsigned char dlc;if(ReadSJAeg(REG_CAN_SR)&RBS_BIT)=0) status=0;else*databuf=

    15、ReadSJAReg(REG_CAN_RXFMINFO);dlc=(*databuf&0x0f);if(dlc8)dlc=8;switch(*databuf&0xC0)case 0x00: len=STD_FRAMEID_LENTH+dlc; break;case 0x40: len=STD_FRAMID_LENTH;case 0x80: len=EXT_FRAMEID_LENTH+dlc; break;case 0xC0: len=EXT_FRAMEID_LENTH;defalut: len=0; status=0; break;if(len0)ReadSJARegBlock(REG_CAN

    16、_BXBUF1,databuf+1,len);status=SetBitMask(REG_CAN_CMR,RRB_BIT);return(status);SJA1000滤波器设置函数void SJA1000ConfigFilter(char mode,*Filter)SetBitMask(REG_CAN_MOD,RM_RR_BIT);if(mode0)SetBitMask(REG_CAN_MOD,AFM_BIT);elseClearBitMask(REG_CAN_MOD,AFM_BIT);WriteSJARegBlock(REG_CAN_ACR0,Filter,8);ClearBitMask(

    17、REG_CAN_MOD,RM_RR_BIT);4.3 ARM控制程序模块首先是中断模块,这里我用到的是ARM2103定时器0中断及计时count表示1S中断后+!,以下是中断函数,还有一些控制程序像KEY1,LED1和LED2的控制就是按图表7主程序设计图那样编译在调控。void Timer0_IntExt(void) T0TC = 0; T0PR = 0; T0MCR = 0x03; T0MR0 = Fpclk/400; T0TCR = 0x01;void _irq IRQ_Timer0(void) T0Flag = 1; count+; /这里是当车门开后用来计20S时间的 T0IR =

    18、0x01; VICVectAddr = 0;void IRQ_Init(void) VICIntSelect = 0x00; VICVectCntl0 = 0x20|4; VICVectAddr0 = (uint32)IRQ_Timer0; VICIntEnable = 14; 第5章 总结CAN自诞生以来,以其独特的设计思想、优良的性能和极高的可靠性越来越受到工业界的青睐。随着企业对CAN总线技术要求的不断提高,CAN总线技术将不断完善,各种更先进的通讯技术方案将被提出,在现有技术条件下从可靠性、经济性、可扩展性等方面尽量做出了最优化设计,希望以后有时间我继续研究探讨。参考文献1,周立功ARM嵌入式系统基础教程 北京航空大学出版社2,铃木雅臣晶体管电路设计 科学出版社3,周立功嵌入式接口技术4,石磊基于CAN总线的车门控制系统研制 吉林大学


    注意事项

    本文(基于CAN总线的车门控制.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开