can总线报告资料

合集下载

CAN总线汽车内部网络系统研究报告

CAN总线汽车内部网络系统研究报告

CAN总线汽车内部网络系统研究报告摘要:随着汽车电子技术的快速发展,汽车内部网络系统也越来越普遍。

本报告旨在研究CAN总线汽车内部网络系统的原理、应用和未来发展方向。

报告分为三部分:首先介绍CAN总线的基本原理和特点,其次探讨CAN总线在汽车内部网络系统中的应用,最后讨论CAN总线未来的发展方向。

一、CAN总线的基本原理和特点CAN(Controller Area Network)总线是一种高速数据通信协议,广泛应用于汽车行业的内部网络系统中。

CAN总线的基本原理是使用总线通信方式,将所有汽车内部的电子设备连接在一起。

CAN总线的特点包括高速、强健性、可靠性和低功耗等。

通过CAN总线,不同的电子设备可以相互通信和共享数据,从而实现汽车各个系统的协调工作。

二、CAN总线在汽车内部网络系统中的应用1.车身控制系统:通过CAN总线,汽车不同部件如引擎、制动系统、灯光系统等可以实时共享信息,从而实现更好的行车性能。

2.座舱电子系统:包括中控系统、音响系统、导航系统等。

CAN总线可以实现这些设备的互联和通信,提供更高的用户体验。

3.底盘系统:如悬挂系统、转向系统等。

CAN总线可以实现这些系统的协调工作,提高汽车的操控性能和安全性能。

三、CAN总线未来的发展方向在未来,随着汽车电子技术的不断发展,CAN总线也会有新的发展方向:1.高速化:随着汽车内部电子设备的增多和数据传输的需求增加,CAN总线需要不断提高传输速度,满足日益复杂的汽车内部网络系统需求。

2.网络安全性:随着车辆互联网的发展,汽车内部网络系统面临越来越多的网络攻击威胁。

CAN总线需要加强网络安全性,防止恶意攻击和数据泄露。

3.与其他通讯协议的集成:随着通讯技术的发展,CAN总线需要与其他通讯协议进行集成,实现更高效的数据传输和共享。

总结:CAN总线作为一种重要的汽车内部网络系统,具有广泛的应用前景。

本报告从CAN总线的基本原理和特点、在汽车内部网络系统中的应用以及未来的发展方向三个方面进行了研究。

can总线 开题报告

can总线 开题报告

can总线开题报告CAN总线开题报告一、引言CAN(Controller Area Network)总线是一种高可靠性、高实时性的串行通信协议,广泛应用于汽车电子领域。

本文将探讨CAN总线的基本原理、应用场景以及未来发展趋势。

二、CAN总线基本原理1. CAN总线的定义和特点CAN总线是一种多主控制器、多从控制器的串行通信协议,具有高可靠性和高实时性的特点。

它采用差分信号传输方式,能够抵抗电磁干扰和噪声,适用于复杂的汽车电子系统。

2. CAN总线的通信方式CAN总线采用基于事件触发的通信方式,即只有当总线上发生重要事件时,才会发送数据。

这种方式能够减少总线负载,提高通信效率。

3. CAN总线的数据帧格式CAN总线的数据帧包括标准帧和扩展帧两种格式。

标准帧由11位标识符和8位数据组成,扩展帧由29位标识符和8位数据组成。

数据帧还包括控制字段、CRC校验字段和帧结束字段。

三、CAN总线应用场景1. 汽车电子系统CAN总线在汽车电子系统中起到了至关重要的作用。

它可以实现车辆各个部件之间的通信,如发动机控制单元、制动系统、仪表盘等。

通过CAN总线,这些部件可以实时交换信息,提高整车的性能和安全性。

2. 工业自动化CAN总线也被广泛应用于工业自动化领域。

它可以连接各种传感器、执行器和控制器,实现设备之间的高效通信。

通过CAN总线,工业自动化系统可以实现实时监测、远程控制和数据采集等功能。

3. 航空航天CAN总线在航空航天领域也有广泛应用。

它可以实现飞机各个系统之间的数据交换,如飞行控制系统、导航系统和通信系统等。

CAN总线的高可靠性和实时性使得飞机能够快速响应各种复杂的飞行任务。

四、CAN总线的发展趋势1. 高速CAN总线随着汽车电子系统的发展,对CAN总线的通信速率要求越来越高。

目前,已经出现了高速CAN总线,其通信速率可以达到1 Mbps以上。

高速CAN总线可以满足大数据量传输和高实时性的需求。

2. CAN-FD总线CAN-FD(CAN with Flexible Data-Rate)总线是CAN总线的升级版,可以实现更高的数据传输速率和更大的数据传输量。

can总线接收实验报告

can总线接收实验报告

DSP实验报告实验名称:CAN总线数据采集和远程传输实验实验日期:2013-6-17——2013-7-05姓名:*****学号:*******指导教师:*****哈尔滨工业大学(威海)目录................................................................................................................ - 0 -DSP实验报告 .................................................................................. - 0 -1.理论准备.......................................................................................... - 2 -1.1 DSP应用的概述 ...................................................................... - 2 -1.2 CAN的简介............................................................................. - 3 -1.3 F2812简介 ............................................................................... - 3 -2.实验原理.......................................................................................... - 4 -2.1 软件流程图 .............................................................................. - 4 -2.2 can总线收发器通信的硬件原理............................................ - 5 -3.设计阶段.......................................................................................... - 5 -3.1接收过程: ................................................................................. - 5 -3.2 配置就收邮箱 .......................................................................... - 7 -3.3 接收消息 .................................................................................. - 7 -四.实验总结........................................................................................ - 7 -五.参考文献........................................................................................ - 8 -附录:.................................................................................................... - 8 -1.理论准备1.1 DSP应用的概述数字信号处理器(DSP)是一种适合完成数字信号处理运算的处理器。

can总线实验报告

can总线实验报告

can总线实验报告
《CAN总线实验报告》
一、实验目的
本实验旨在通过对CAN总线的实验研究,掌握CAN总线的基本原理、工作方式和应用领域,提高学生对CAN总线技术的理解和应用能力。

二、实验内容
1. CAN总线基本原理的学习和理解
2. CAN总线的工作方式和通信协议的研究
3. CAN总线在汽车电子控制系统中的应用实例分析
4. CAN总线通信协议的实验验证
三、实验步骤
1. 通过文献资料和教材学习CAN总线的基本原理和工作方式
2. 使用CAN总线开发板进行实验,验证CAN总线的通信协议
3. 分析汽车电子控制系统中CAN总线的应用实例
4. 结合实际案例,对CAN总线通信协议进行实验验证
四、实验结果
通过本次实验,我们深入了解了CAN总线的基本原理和工作方式,掌握了CAN总线通信协议的实验验证方法,并对CAN总线在汽车电子控制系统中的应用有了更深入的了解。

实验结果表明,CAN总线作为一种高可靠性、高性能的通信协议,在汽车电子控制系统中具有广泛的应用前景。

五、实验结论
通过本次实验,我们对CAN总线的基本原理、工作方式和应用领域有了更深入
的了解,提高了对CAN总线技术的理解和应用能力。

同时,我们也认识到了CAN总线在汽车电子控制系统中的重要作用,为今后的学习和研究打下了坚实的基础。

综上所述,本次实验取得了良好的实验效果,为我们进一步深入研究CAN总线技术奠定了坚实的基础。

希望通过今后的学习和实践,能够更好地应用CAN总线技术,为汽车电子控制系统的发展做出更大的贡献。

can总线多机通讯发送报文资料

can总线多机通讯发送报文资料

#include"SJA1000REG_1.h"#include<reg52.h>#include<stdio.h>#include<string.h>#include<intrins.h>#define STD_FRAMEID_LENTH 2 //标准帧ID长度#define EXT_FRAMEID_LENTH 4 //扩展帧ID长度#define LOW_BYTE(x) (unsigned char)(x)#define HIGH_BYTE(x) (unsigned char)((unsigned int)(x)>>8)#define OSCCLK 11059200UL#define CPUCLK (OSCCLK/12)#define SJA_BASE_ADDR 0X7E00#define T0_MASK 0x0fsbit LED=P2^5;sbit SJA1000_RST=P2^6;unsigned char xdata *SJA_CS_Point=(unsigned char xdata*)SJA_BASE_ADDR;void SJA1000_Init(unsigned char btr0,unsigned char btr1,unsigned char *filter);void WriteSJAReg(unsigned char RegAdr,unsigned char Value); //写寄存器unsigned char ReadSJAReg(unsigned char RegAdr); //读寄存器char SetBitMask(unsigned char RegAdr,unsigned char BitValue); //设置寄存器特定位char ClearBitMask(unsigned char RegAdr,unsigned char BitValue); //清除寄存器特定位char WriteSJARegBlock(unsigned char RegAdr,unsigned char *ValueBuf,unsigned char len);//连续写寄存器char ReadSJARegBlock(unsigned char RegAdr,unsigned char *ValueBuf,unsigned char len);//连续读寄存器char SetSJASendCmd(unsigned char cmd); //发送模式cmd 0为正常发送1为单次发送2为自发自收char SJASendData(unsigned char *databuf,unsigned char cmd); //sja1000发送函数,将数据写入sja1000发送缓冲区,再将其发到总线上char SJARcvData(unsigned char *databuf); //SJA1000接收函数读取接收缓冲区的CAN报文//void SJA1000_Config_Filter(char mode,char *Filter); //配置滤波器模式和滤波参数mode大于0为双滤波器,其他为单滤波unsigned char SJA_CAN_Filter[8]={ 0xea,0x40,0x00,0x00,0x00,0x0f,0xff,0xff};unsigned char UserData[8];typedef struct //结构定义{unsigned long ID;unsigned char FF;unsigned char RTR;unsigned char DLC;unsigned char CanData[8];}CanFrame_t;CanFrame_t UserSendData;void UserDataDeal(){UserData[0]=0x55;}void NumDataDeal(){UserSendData.ID=0x251;UserSendData.FF=0;UserSendData.RTR=0;UserSendData.DLC=8;UserSendData.CanData[0]=UserData[0];UserSendData.CanData[1]=UserData[1];UserSendData.CanData[2]=UserData[2];UserSendData.CanData[3]=UserData[3];UserSendData.CanData[4]=UserData[4];UserSendData.CanData[5]=UserData[5];UserSendData.CanData[6]=UserData[6];UserSendData.CanData[7]=UserData[7];}void timerInit(void) //串口初始化{TMOD&=~T0_MASK; //清除旧的设置(#define T0_MASK 0x0f)TMOD|=0x01;}void timerDelay(unsigned int n) //延时0.01×n{do{TL0=LOW_BYTE(65536UL-CPUCLK/100);TH0=HIGH_BYTE(65536UL-CPUCLK/100);TR0=1;while(!TF0);TR0=0;TF0=0;}while(--n!=0);}void SJA1000_Init(unsigned char btr0,unsigned char btr1,unsigned char *filter){SetBitMask(REG_CAN_MOD,RM_RR_BIT); //进入复位模式WriteSJAReg(REG_CAN_CDR,0x48); //配置时钟分频,选择peliCAN模式WriteSJAReg(REG_CAN_MOD,0x09); //配置模式寄存器,选择单滤波、正常模式WriteSJARegBlock(REG_CAN_ACR0,filter,8); //配置验收代码/屏蔽寄存器WriteSJAReg(REG_CAN_BTR0,btr0); //配置总线定时器0WriteSJAReg(REG_CAN_BTR1,btr1); //配置总线定时器1WriteSJAReg(REG_CAN_OCR,0x1A); //配置输出引脚TX0与RX0,推挽输出ClearBitMask(REG_CAN_MOD,RM_RR_BIT); //推出复位模式}void WriteSJAReg(unsigned char RegAdr,unsigned char Value) //写SJA1000寄存器{*(SJA_CS_Point+RegAdr)=Value;return;}unsigned char ReadSJAReg(unsigned char RegAdr) //读SJA1000寄存器{return(*(SJA_CS_Point+RegAdr));}char SetBitMask(unsigned char RegAdr,unsigned char BitValue) //设置指定寄存器指定位为1{char status=0;unsigned char temp;temp=ReadSJAReg(RegAdr);temp=temp|BitValue;WriteSJAReg(RegAdr,temp);if(ReadSJAReg(RegAdr)==temp){status=1;}else{status=0;}return(status);}char ClearBitMask(unsigned char RegAdr,unsigned char BitValue) //将指定寄存器的指定位清零{char status=0;unsigned char temp;temp=ReadSJAReg(RegAdr);temp=temp&(~BitValue);WriteSJAReg(RegAdr,temp);if(ReadSJAReg(RegAdr)==temp){status=1;}else{status=0;}return(status);}char WriteSJARegBlock(unsigned char RegAdr,unsigned char *ValueBuf,unsigned char len) //连续写多个寄存器RegAdr寄存器起始地址len要连续写入的寄存器数{unsigned char i;if(len!=0){for(i=0;i<len;i++){WriteSJAReg(RegAdr+i,ValueBuf[i]);}}return len;}char ReadSJARegBlock(unsigned char RegAdr,unsigned char *ValueBuf,unsigned char len) //连续读多个寄存器RegAdr寄存器起始地址len要读取的寄存器数{unsigned char i;if(len!=0){for(i=0;i<len;i++){ValueBuf[i]=ReadSJAReg(RegAdr+i);}}return len;}char SetSJASendCmd(unsigned char cmd) //发送模式cmd 0为正常发送1为单次发送2为自发自收{unsigned char ret;switch(cmd){default:case 0:ret=SetBitMask(REG_CAN_CMR,TR_BIT);break;case 1:ret=SetBitMask(REG_CAN_CMR,TR_BIT|AT_BIT);break;case 2:ret=SetBitMask(REG_CAN_CMR,TR_BIT|SRR_BIT);break;case 0xff:ret=SetBitMask(REG_CAN_CMR,A T_BIT);break;}return ret;}char SJASendData(unsigned char *databuf,unsigned char cmd) //sja1000发送函数,将数据写入sja1000发送缓冲区,再将其发到总线上{char status=1;unsigned char len;unsigned char dlc;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){case 0x00:len=STD_FRAMEID_LENTH+dlc+1;break;case 0x40:len=STD_FRAMEID_LENTH+1;break;case 0x80:len=EXT_FRAMEID_LENTH+dlc+1;break;case 0xc0:len=EXT_FRAMEID_LENTH+1;break;default:len=0;status=0;break;}if(len>0){WriteSJARegBlock(REG_CAN_TXFMINFO,databuf,len);SetSJASendCmd(cmd);status=1;}}return(status);}char SJARcvData(unsigned char *databuf) //SJA1000接收函数读取接收缓冲区的CAN报文{char status=1;unsigned char len;unsigned char dlc;if((ReadSJAReg(REG_CAN_SR)&RBS_BIT)==0)status=0;}else{*databuf=ReadSJAReg(REG_CAN_RXFMINFO);dlc=(*databuf&0x0f);if(dlc>8){dlc=8;}switch(*databuf&0xC0){case 0x00:len=STD_FRAMEID_LENTH+dlc;break;case 0x40:len=STD_FRAMEID_LENTH;break;case 0x80:len=EXT_FRAMEID_LENTH+dlc;break;case 0xC0:len=EXT_FRAMEID_LENTH;break;default:len=0;status=0;break;}if(len>0){ReadSJARegBlock(REG_CAN_RXBUF1,databuf+1,len);status=SetBitMask(REG_CAN_CMR,RRB_BIT);}}return(status);}/*void SJA1000_Config_Filter(char mode,char *Filter) //配置滤波器模式和滤波参数mode大于0为双滤波器,其他为单滤波{SetBitMask(REG_CAN_MOD,RM_RR_BIT);if(mode>0)SetBitMask(REG_CAN_MOD,AFM_BIT);}else{ClearBitMask(REG_CAN_MOD,AFM_BIT);}WriteSJARegBlock(REG_CAN_ACR0,Filter,8);ClearBitMask(REG_CAN_MOD,RM_RR_BIT);}*/int Hal_CanMsgSend(CanFrame_t *pCanFrame) //CAN控制器报文发送接口{unsigned char snd_buf[13];unsigned long id;snd_buf[0]=(pCanFrame->DLC&0xf);if(pCanFrame->FF){snd_buf[0]=(1<<7);}if(pCanFrame->RTR){snd_buf[0]|=(1<<6);}if(pCanFrame->FF){id=(pCanFrame->ID<<3);snd_buf[1]=(id>>24)&0xff;snd_buf[2]=(id>>16)&0xff;snd_buf[3]=(id>>8)&0xff;snd_buf[4]=(id>>0)&0xff;memcpy(&snd_buf[5],pCanFrame->CanData,pCanFrame->DLC);}else{id=(pCanFrame->ID<<5);snd_buf[1]=(id>>8)&0xff;snd_buf[2]=id&0xff;memcpy(&snd_buf[3],pCanFrame->CanData,pCanFrame->DLC);}return SJASendData(snd_buf,0);}int Hal_CanMsgRecive(CanFrame_t *pCanFrame) //CAN控制器报文接收{unsigned char rcv_buf[13];if(SJARcvData(rcv_buf)){pCanFrame->DLC=(rcv_buf[0]&0xf);if(rcv_buf[0]&(1<<7)){pCanFrame->FF=1;}else{pCanFrame->FF=0;}if(rcv_buf[0]&(1<<6)){pCanFrame->RTR=1;}else{pCanFrame->RTR=0;}if(rcv_buf[0]&(1<<7)){pCanFrame->ID=rcv_buf[1];pCanFrame->ID<<=8;pCanFrame->ID+=rcv_buf[2];pCanFrame->ID<<=8;pCanFrame->ID+=rcv_buf[3];pCanFrame->ID<<=8;pCanFrame->ID+=rcv_buf[4];pCanFrame->ID>>=3;memcpy(pCanFrame->CanData,&rcv_buf[5],8);}else{pCanFrame->ID=rcv_buf[1]<<8;pCanFrame->ID|=rcv_buf[2]<<0;pCanFrame->ID>>=5;memcpy(pCanFrame->CanData,&rcv_buf[3],8);}return 1;}elsereturn 0;}}int Hal_CanInit(void){SJA1000_RST=1;timerDelay(50);SJA1000_RST=0;SJA1000_Init( 0x00,0x14, SJA_CAN_Filter);return 1;}void main(){timerInit();Hal_CanInit();while(1){// unsigned char status,JiShu;// JiShu=0;UserDataDeal();NumDataDeal();if(Hal_CanMsgSend(&UserSendData)){LED=!LED;timerDelay(100);}}}。

CAN总线实验报告

CAN总线实验报告

实验三:双节点通信1、实验要求CAN节点A(ID:0x00)、B(ID:0x01),要求A节点进行数据发送(标准数据帧),B节点可以进行数据接收并显示接收到数据,同时反馈信息给A节点。

2、实验目的(1)熟悉双CAN通信原理;(2)掌握双节点通信的设计。

3、所需设备(1)CPU挂箱2(2)接口挂箱2(3)CPU模块(80C31)2(4)CAN总线模块2块4、实验内容两个实验台运行程序CAN.ASM,发送实验台全速运行程序,接收实验台要在程序中设置断点,查看30H~37H中的数与程序中发送的数据是否一致。

5、实验原理两个CAN节点通信,验收滤波设置正确后,可实现双节点通信。

硬件原理图与图2.4类似,只不过将1个节点改为2个节点。

图略。

附图2.4见下(2)模块跳线接LCS0(CAN基址为0xDE00);(3)模块上的A接CANL,B接CANH;(4)在各自试验台上,将CPU挂箱右侧的“DATA PORT”和“ADDRESS PORT”分别用5P、14P、20P连线与接口挂箱的相应插座连接.(5)将两个CAN节点的CANL、CANH直连。

2、运行程序CAN.ASM,在初始化结束、发送接收结束处各设置断点,查看两个模块的30H~37H中的数据是否一致。

7、实验结果两个模块的30H~37H中的数据一致。

8、1)程序流程图2)实验程序:MODE EQU 0DE00H ;模式寄存器CMR EQU 0DE01H ;命令寄存器SR EQU 0DE02H ;状态寄存器IR EQU 0DE03H ;中断寄存器IER EQU 0DE04H ;中断使能寄存器BTR0 EQU 0DE06H ;总线定时寄存器一BTR1 EQU 0DE07H ;总线定时寄存器二OCR EQU 0DE08H ;输出控制寄存器ALC EQU 0DE0BH ;仲裁丢失捕捉寄存器ECC EQU 0DE0CH ;错误代码捕捉寄存器TXERR EQU 0DE0FH ;发送错误计数器ACR0 EQU 0DE10H ;验收代码寄存器0ACR1 EQU 0DE11H ; 1ACR2 EQU 0DE12H ; 2ACR3 EQU 0DE13H ; 3AMR0 EQU 0DE14H ;验收屏蔽寄存器0AMR1 EQU 0DE15H ; 1AMR2 EQU 0DE16H ; 2AMR3 EQU 0DE17H ; 3FIN EQU 0DE10H ;发送/接收帧信息ID1 EQU 0DE11H ;发送/接收缓冲区之标示符一ID2 EQU 0DE12H ;发送/接收缓冲区之标示符二DATA1 EQU 0DE13H ;发送/接收数据首址RBSA EQU 0DE1EH ;接收缓冲器起始地址寄存器CDR EQU 0DE1FH ;时钟分频寄存器ORG 4000HJMP STARTORG 4080HSTART: MOV R1,#8MOV R0,#27HFILL: MOV B,#10HMOV A,R1MUL ABMOV @R0,ADEC R0DJNZ R1,FILLMOV R0,#0AAHLCALL INITCAN ;CAN初始化(CAN片选为CS0:0DE00H) ;-------------------------发送------------------RETRAN: MOV DPH, #0DEHMOV R0, #20HLCALL SEND ;发送20H为首址的1桢数据(前三字节为:08H、BBH、FFH,后8字节任意)LCALL DELAY;-----------------------接收数据--------------------------MOV DPH, #0DEHMOV R0, #30HLCALL RECVNOP ;在此处设置断点,以观察结果JMP $INITCAN:MOV DPTR,#MODE ;初始化子程序,DPH、R0为入口参数MOV A,#01HMOVX @DPTR,A ;模式寄存器,单验收滤波器,进入复位模式MOV DPTR,#CDRMOV A,#88HMOVX @DPTR, A ;时钟分频R,选择增强CAN模式,关闭CLKOUT输出MOV DPTR,#IERMOV A,#0DHMOVX @DPTR,A ;中断使能寄存器,开溢出、错误、接收中断MOV DPTR,#BTR0MOV A,#03HMOVX @DPTR,A ;总线定时寄存器一MOV DPTR,#BTR1MOV A,#0FFHMOVX @DPTR,A ;总线定时寄存器二,6MHz晶振,波特率30Kbps MOVX A, @DPTRMOV DPTR,#OCRMOV A,#0AAHMOVX @DPTR,A ;输出控制寄存器MOV DPTR,#ACR0MOV A, 00HMOVX @DPTR,A ;验收代码ACR0MOV DPTR,#ACR1MOV A,#2FHMOVX @DPTR,A ;无关MOV A,#0FFHINC DPTRMOVX @DPTR,A ;无关INC DPTRMOVX @DPTR,A ;无关MOV DPTR,#AMR0MOV A,#0FFH ;modify #00 to #0FFMOVX @DPTR,A ;验收屏蔽寄存器AMR0=00HINC DPTRMOV A,#0FFHMOVX @DPTR,A ;AMR1INC DPTRMOVX @DPTR,A ;AMR2INC DPTRMOVX @DPTR,A ;AMR3验收屏蔽:只有ACR0是相关项MOV DPTR, #RBSAMOV A, #00HMOVX @DPTR, A ;接收缓冲器FIFO起始地址为0MOV DPTR, #TXERRMOVX @DPTR, A ;清除发送错误计数器MOV DPTR, #ECCMOVX @DPTR, A ;清除错误代码捕捉寄存器MOV DPTR,#MODEMOV A,#08HMOVX @DPTR,A ;单滤波方式,返回工作方式RETSEND:MOV DPTR,#SR ;状态寄存器MOVX A,@DPTR ;从SJA1000 读入状态寄存器值JB ACC.4,SEND ;判断是否正在接收正在接收则等待SEND0:MOVX A,@DPTRJNB ACC.3,SEND0 ;判断上次发送是否完成未完成则等待发送完成SEND1:MOVX A,@DPTRJNB ACC.2,SEND1 ;判断发送缓冲区是否锁定锁定则等待SEND2:MOV DPTR,#FIN ;SJA1000 发送缓存区首址MOV A, #08HMOVX @DPTR, AINC DPLMOV A, #00HMOVX @DPTR, AINC DPLMOV A, #4FHMOVX @DPTR, AINC DPLMOV R2, #08HSEND3:MOV A, @R0 ;R0为发送数据首址MOVX @DPTR, AINC R0INC DPLDJNZ R2, SEND3MOV DPTR,#CMR ;命令寄存器地址MOV A,#10H ;发送请求MOVX @DPTR,A ;启动SJA1000 发送RETRECV: MOV DPTR,#SR ;状态寄存器地址MOVX A,@DPTRANL A, #0C3H ;读取总线脱离、错误状态、接收溢出、有数据等位JNZ PROCRET ;无上述状态,结束PROC: JNB ACC.7, PROC1BUSERR: MOV DPTR, #IR ;IR中断寄存器,出现总线脱离MOVX A, @DPTR ;读中断寄存器,清除中断位MOV DPTR, #MODEMOV A, #08HMOVX @DPTR, A ;将方式寄存器复位请求位清0RETNOPPROC1: MOV DPTR, #IR ;总线正常MOVX A, @DPTR ;读取中断位JNB ACC.3, OTHEROVER: MOV DPTR, #CMR ;数据溢出处理MOV A, #0CHMOVX @DPTR, A ;清除数据溢出位,释放接收缓冲区RETNOPOTHER: JB ACC.0, RECELJMP RECOUT ;接收缓冲区无数据NOPRECE: CLR P1.0SETB P1.7MOV DPTR, #FIN ;接收缓冲区有数据MOVX A,@DPTRJNB ACC.6, RDATAMOV DPTR, #CMR ;远程桢处理MOV A, #04HMOVX @DPTR, ALJMP RECOUTNOPRDATA: MOV DPTR, #DA TA1 ;将接收数据传至R0为首址的内存中MOV R2, #08HRDATA1: MOVX A, @DPTRMOV @R0, AINC DPLINC R0DJNZ R2, RDATA1MOV DPTR, #CMRMOV A, #04HMOVX @DPTR, ARECOUT: MOV DPTR, #ALC ;释放仲裁丢失捕捉寄存器和错误捕捉寄存器MOVX A, @DPTRNOPRETDELAY: MOV R2, #40DELAY1: MOV R4, #255DELAY2: NOPDJNZ R4, DELAY2DJNZ R2, DELAY1RETEND1。

CAN总线实验报告

CAN总线数据通讯[实验项目]CAN总线数据通讯[实验目的]基于SJA1000 CAN总线控制器和单片机系统完成CAN总线数据收发实验、掌握CAN总线波特率设置、消息ID和接收滤波器配置,完成两个以上节点的数据通讯。

[实验仪器设备]SJA1000 CAN接口模块单片机最小系统板串行下载线(USB转TTL电平串口线)USB转DC5.5mm供电线杜邦线[实验原理]1、CAN通信板原理图复位电路TJA1050T外围电路振荡电路2、单片机板原理图单片机最小系统主要包括3部分:电源,晶振和复位电路。

晶振采用11.0592MHz,复位采用RC电路。

由于单片机P0口开漏输出,需要外接10K的上拉电阻。

3、原理简述SJA1000通过并行总线与MCU连接,包括地址/数据线、读/写控制信号、片选、中断等十多根信号线。

通过对单片机进行编程,来控制CAN节点的初始化、帧的发送和接受等。

初始化流程:数据发送流程:中断接收流程:查询接收流程:[实验内容](1)硬件连接1、单片机和SJA1000的连接使用杜邦把CAN模块的P0口连接到单片机开发板的P0扩展口上;把ALE,WR,RD,INT0,CS,KEY分别对应连接到单片机的ALE,P3.6,P3.7,P3.2,P2.0和P2.5上;把5V和GND分别对应接到单片机的电源接口上。

2、SJA1000节点间的连接将两个SJA1000节点的CAN_H,CAN_L对应连接,即高接高,低接低,即可完成通信线路的连接。

3、单片机与下载器的连接按如下图所示的接线方式连接下载器(即USB转TTL电平串口)和51单片机系统板。

其中5V、3.3V电源线不接,只连接GND并交叉连接RX和TX,即TX接单片机的P3.0,RX接单片机的P3.1。

可三根采用杜邦线将下载器的三个引脚接至51系统板的排插相应引脚上。

(2)软件编程1、在KeilC开发环境下编写STC89C52程序,测试程序的下载和运行。

2、编写STC89C52串行通讯程序,能够通过串口向PC机发送字符,显示程序运行状态。

can总线报告资料

can总线报告资料一、概述CAN(Controller Area Network)总线是一种广泛应用于汽车和工业领域的串行通信协议。

它具有高可靠性、高实时性和高带宽的特点,被广泛应用于车辆电子控制系统、工业自动化控制系统等领域。

本报告旨在介绍CAN总线的基本原理、应用领域和技术特点。

二、CAN总线的基本原理1. 物理层CAN总线采用双绞线进行数据传输,通信速率可达到1Mbps。

它采用差分信号传输,具有抗干扰能力强的特点。

CAN总线的物理层标准有CAN 2.0A和CAN 2.0B两种,分别适用于不同的应用场景。

2. 数据链路层CAN总线采用CSMA/CD(Carrier Sense Multiple Access with Collision Detection)的数据链路层协议。

它通过监听总线上的数据活动来实现多节点之间的数据传输。

当多个节点同时发送数据时,会发生冲突,此时通过冲突检测和重新发送机制来解决冲突问题。

3. 帧格式CAN总线的数据传输以帧为单位进行。

CAN帧由起始位、标识符、控制位、数据域和校验位组成。

其中,标识符用于区分不同的数据帧,数据域用于传输实际数据,校验位用于检测数据的正确性。

三、CAN总线的应用领域1. 汽车电子控制系统CAN总线被广泛应用于汽车电子控制系统,如发动机控制单元(ECU)、制动系统、空调系统等。

它可以实现多个控制单元之间的高速数据传输和实时协同工作,提高整车的性能和安全性。

2. 工业自动化控制系统CAN总线在工业自动化领域的应用也非常广泛。

它可以连接各种传感器、执行器和控制器,实现工业设备之间的数据交换和控制。

通过CAN总线,工业自动化系统可以实现高效、可靠的数据传输和实时控制。

3. 其他领域除了汽车和工业领域,CAN总线还被应用于其他领域,如航空航天、医疗设备、军事装备等。

它的高可靠性和实时性使得CAN总线成为这些领域中的首选通信协议。

四、CAN总线的技术特点1. 高可靠性CAN总线采用差分信号传输和冲突检测机制,具有抗干扰能力强的特点。

CAN总线综述报告

目录CAN现场总线综述报告 - 1 -1.CAN总线的产生和发展 - 1 -2.CAN总线网络结构 - 1 -3.协议通信方法 - 2 -4.CAN总线技术介绍 - 2 -4.1 位仲裁 - 3 -4.2 CAN的报文格式 - 3 -4.3数据错误检测 - 4 -4.3.1 循环冗余检查(CRC) - 4 -4.3.2 帧检查 - 4 -4.3.3 应答错误 - 4 -4.3.4 总线检测 - 4 -4.4 位填充 - 4 -5.典型CAN总线器件及其应用 - 4 -5.1 CAN通信控制器82C200 - 5 -5.2 SJA1000 CAN控制器 - 6 -5.3 PCA82C250 CAN 收发器 - 6 -6.总结 - 7 -6.1 CAN总线具有如下基本特点 - 7 -6.2 CAN总线的优点总线的优点总线的优点总线的优点 - 7 -CAN现场总线综述报告1.CAN总线的产生和发展控制器局部网(CAN-CONTROLLER AREA NETWORK)是BOSCH公司为现代汽车应用领先推出的一种多主机局部网,由于其卓越性能现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。

控制器局部网将在我国迅速普及推广。

随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。

由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制面向多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。

分散式工业控制系统就是为适应这种需要而发展起来的。

这类系统是以微型机为核心,将 5C技术--COMPUTER(计算机技术)、CONTROL(自动控制技术)、COMMUNICATION(通信技术)、CRT(显示技术)和 CHANGE(转换技术)紧密结合的产物。

它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性 [4]。

CAN总线网络实时性分析研究中期报告

CAN总线网络实时性分析研究中期报告摘要:CAN总线是一种在工业控制和汽车电子中广泛使用的网络技术。

它具有高可靠性、高带宽和成本低廉的优点。

尽管CAN总线在实时系统中有着广泛的应用,但其实时性能仍然需要进一步研究和分析。

本文介绍了CAN总线网络实时性分析的研究进展,并根据已有研究提出了一些未来进一步探索的方向,对未来的研究提供了一些参考意见。

关键词:CAN总线;实时性分析;网络技术;研究进展;未来发展方向1. 前言CAN总线是一种广泛应用于工业控制和汽车电子领域的网络技术。

它具有高可靠性、高带宽和成本低廉的优点,已经成为最受欢迎的实时控制网络之一。

在实时系统中,保证数据的实时传输是一项极为重要的任务。

因此,对CAN总线网络实时性的分析和研究,对于保证实时系统的可靠性和稳定性至关重要。

本文介绍了CAN总线网络实时性分析的研究进展,并根据已有研究提出了一些未来进一步探索的方向,对未来的研究提供了一些参考意见。

2. CAN总线网络实时性分析的研究进展CAN总线网络实时性分析主要涉及到以下几个方面:数据传输延迟、数据传输带宽、系统周期和CAN消息丢失率。

2.1 数据传输延迟分析数据传输延迟是指CAN总线上数据从发送节点传输到接收节点所需的时间。

正是由于传输延迟的存在,导致数据无法实时传输。

因此,在实时系统中,对于数据传输延迟的控制是非常重要的。

已有研究表明,CAN总线上的延迟时间主要分为传输延迟和处理延迟。

其中,传输延迟是指一个CAN消息从发送节点经过总线传输到接收节点所需的时间,处理延迟则是指接收节点在接收到CAN消息后进行处理所需的时间。

2.2 数据传输带宽分析数据传输带宽是指CAN总线所能够传送数据的最大速度。

在实时系统中,保证数据传输带宽是非常重要的。

如果CAN总线的传输带宽不足以支持实时系统的运行,将导致数据传输失败或数据丢失,从而影响实时系统的可靠性和稳定性。

2.3 系统周期分析系统周期是指实时系统进行周期性任务的时间间隔。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

得分评卷教师哈尔滨远东理工学院CAN总线在中央空调监控系统中的应用姓名:郭爱强分院:机器人科学与技术学院专业:电子信息工程学号:13030104摘要中央空调控制系统是智能建筑中不可缺少的组成部分。

传统的控制方法是采用DDC(直接数字控制器)方式,将各个温度、湿度检测点和控制点连接到一台或多台DDC上,实行多点实时监控。

由于现代智能建筑楼层较多,多个空调风机位于不同楼层,温、湿度检测点分布于各个房间,采用DDC方式进行控制具有引线过长、施工不便、系统通信的实时性和可靠性不高等缺点,而面向工业控制的现场总线技术是目前解决工业控制现场数据实时通信问题的最佳方案。

本文在研究国内中央空调监控系统的发展现状与特点的基础上,设计了基于CAN总线的中央空调监控系统。

整个中央空调监控系统以基于PCI总线的CAN通信卡作为总线数据采集器,采用接口芯片PCI9052实现CAN通信卡同PC机之间的通信,外置CAN芯片SJA1000实现CAN总线的物理层和数据链路层功能。

通过对CAN通信卡的驱动程序设计,实现对CAN总线上节点的监视和控制。

本文详细分析了CAN总线和PCI总线的技术特点及通信机理,研究了独立CAN控制SJA1000和CAN总线驱动器的工作原理,完成了通信卡的硬件设计及驱动程序设计。

关键词中央空调监控系统;CAN总线;PCI总线;PCI9052目录摘要 (3)第1章本文内容 (1)第2章 CAN总线技术研究 (5)2.1 CAN 总线特点 (5)22 CAN总线技术介绍 (5)2.2.2 CAN与其他通信方案的比较 (6)2.2.3 CAN的报文格式 (6)2.3 数据错误检测 (7)第3章中央空调控制系统设计 (7)3.1 系统的主要功能 (7)3.2 中央空调控制整体结构 (8)3.3 硬件设计 (9)3.3.1 信号采集电路设计 (10)3.3.2 CAN 通信电路设计 (13)3.3.3 电路硬件抗干扰 (15)3.4 软件设计 (15)3.4.1 主程序设计 (15)3.4.2 A/D转换程序设计 (16)结论...................................................... X VIII 参考文献................................................... X IX1.本文内容本文对现在中央空调控制系统的总体结构做出分析,对CAN总线技术进行了详细介绍,其中包括CAN总线的产生和发展、CAN总线特点、CAN总线技术介绍以及数据错误检测等。

而且还对系统的软硬件进行设计,硬件包括对信号采集电路设计、CAN通信电路设计、电路抗干扰设计,软件包括对主程序设计和AD转换程序设计。

2 CAN总线技术研究2.1 CAN 总线特点CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。

通信速率可达1MBPS。

CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。

CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。

采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。

数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。

同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。

CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。

CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。

另外,CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。

CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。

CAN总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。

CAN总线插卡可以任意插在PC AT XT兼容机上,方便地构成分布式监控系统[5]。

2.2 CAN总线技术介绍2.2.1位仲裁要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。

在几个站同时需要发送数据时,要求快速地进行总线分配。

实时处理通过网络交换的紧急数据有较大的不同。

一个快速变化的物理量,如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求更短的延时。

CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。

这种优先级一旦在系统设计时被确立后就不能再被更改。

总线读取中的冲突可通过位仲裁解决。

当几个站同时发送报文时,站1的报文标识符为011111;站2的报文标识符为0100110;站3的报文标识符为0100111。

所有标识符都有相同的两位01,直到第3位进行比较时,站1的报文被丢掉,因为它的第3位为高,而其它两个站的报文第3位为低。

站2和站3报文的4、5、6位相同,直到第7位时,站3的报文才被丢失。

注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。

在此例中,站2的报文被跟踪。

这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。

所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。

CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据报文在整个系统中的重要性按顺序处理的。

这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放在每个报文中了,这可以保证在实时系统中较低的个体隐伏时间。

对于主站的可靠性,由于CAN协议执行非集中化总线控制,所有主要通信,包括总线读取(许可)控制,在系统中分几次完成。

这是实现有较高可靠性的通信系统的唯一方法。

2.2.2 CAN与其他通信方案的比较实践中,有两种重要的总线分配方法:按时间表分配和按需要分配。

在第一种方法中,不管每个节点是否申请总线,都对每个节点按最大期间分配。

由此,总线可被分配给每个站并且是唯一的站,而不论其是立即进行总线存取或在特定时间进行总线存取。

这将保证在总线存取时有明确的总线分配。

在第二种方法中,总线按传送数据的基本要求分配给一个站,总线系统按站所希望的传送分配(如:Ethernet CSMA/CD)。

因此,当多个站同时请求总线存取时,总线将终止所有站的请求,这时将不会有任何一个站获得总线分配。

为了分配总线,多于一个总线存取是必要的。

CAN实现总线分配的方法,可保证当不同的站申请总线存取时,明确地进行总线分配。

这种位仲裁的方法可以解决当两个站同时发送数据时产生的碰撞问题。

不同于Ethernet网络的消息仲裁,CAN的非破坏性解决总线存取冲突的方法,确保在不传送有用消息时总线不被占用。

甚至当总线在重负载情况下,以消息内容为优先的总线存取也被证明是一种有效的系统。

虽然总线的传输能力不足,所有未解决的传输请求都按重要性顺序来处理。

在CSMA/CD这样的网络中,如Ethernet,系统往往由于过载而崩溃,而这种情况在CAN中不会发生。

2.2.3 CAN的报文格式在总线中传送的报文,每帧由7部分组成。

CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。

在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场。

RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。

控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。

它还包括一个保留位(ro),为将来扩展使用。

它的最后四个字节用来指明数据场中数据的长度(DLC)。

数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。

应答场(ACK)包括应答位和应答分隔符。

发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。

用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。

报文的尾部由帧结束标出。

在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态[6]。

2.3 数据错误检测不同于其它总线,CAN协议不能使用应答信息。

事实上,它可以将发生的任何错误用信号发出。

CAN协议可使用五种检查错误的方法,其中前三种为基于报文内容检查。

1. 循环冗余检查(CRC)在一帧报文中加入冗余检查位可保证报文正确。

接收站通过CRC可判断报文是否有错。

2. 帧检查这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。

3. 应答错误如前所述,被接收到的帧由接收站通过明确的应答来确认。

如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK场已损坏或网络中的报文无站接收。

CAN协议也可通过位检查的方法探测错误。

3 中央空调控制系统设计3.1 系统的主要功能在现代化的大型建筑中,一般都采用中央空调系统。

众所周知,空调系统的作用就是对室内空气进行处理,使空气的温度、流动速度及新鲜度、洁净度等指标符合场所的使用要求。

为此必须对空气进行冷却或加热、降温或加湿,以及过滤等处理措施。

其相应设备有制冷机组、热水炉、风机盘管系统、风管系统、水管系统等。

例如,空调系统中,冷水机组是由设备生产厂成套供应的,它一般是根据空气调节原理及规律等由微处理器自动控制的。

冷水机组由压缩机、冷凝器与蒸发器组成,压缩机把制冷剂压缩,压缩后的制冷剂进入冷凝器,被冷却水冷却后,变成液体,析出的热量由冷却水带走,并在冷却塔里排入大气。

液体制冷剂由冷凝器进入蒸发器进行蒸发吸收,使冷冻水降温,然后冷冻水进入水冷风机盘管吸收空气中的热量,如此循环不已,把房间的热量带出。

因此,中央空调系统的监控设计,可从以下三个方面考虑:1.机组基本参数的测量、设备的启停控制;2.基本的能量调节;3.冷热源及水管系统的全面调节与控制。

所以设计中央空调监控系统以具备CAN总线通信功能的PC机为主站,以具备独立故障诊断和控制功能的冷冻机、冷冻水控制系统,冷却水控制系统,补水控制系统等子控制系统为从站的中央空调监控系统结构。

相关文档
最新文档