CAN总线实验报告
- 格式:doc
- 大小:418.00 KB
- 文档页数:21
CAN总线心得总结(不可多得)CAN总线学习心得:zlg关于can帖子汇总SJA1000的常用标准波特率设置,为什么基本上都是单次采样?即使是低速的时候也是这样的,既然TSEG1的设置周期都很大,比如都大于10了,为什么不让他采样三次呢?答:是不好理解,但那是CiA推荐的值。
用51系列芯片和两个SJA1000接口还要外扩一个RAM,请问51的ALE能否同时与三个芯片的ALE管脚相连(地址不同)? 有哪位高手做过双SJA1000冗余的请指教答:能同时连接。
请问CAN总线在想传输1000m的情况下,最快的速度能到多少呢?答:50kbps = 1300m。
如果一个网络中只有2个节点,其中一个处于监听模式,另一个节点发送报文会使处于监听模式的节点进入中断吗?答:能进入接收中断,你自己的试验也可以证明。
想组建一个简单的CAN网络,已经有两个节点,我想问CAN总线如何组建,终端电阻安装在哪里?小弟还没有入门,大虾们指点一下。
答1:直接将节点CANH和CANL连到总线上,终端电阻接在总线两端,大约120欧。
答2:推荐北航出版《现场总线CAN原理与应用技术》,研读一下。
请问各位老师:我是一名can总线的新手,我正在做can总线的开发,控制器用sja1000t(我自己两个控制板互通),但我在发送数据后将出现总线关闭,我看到发送错误计数器在不断增加,直到0xff,最后恢复到0x7f,谢谢各位老师帮我解答这个问题。
或者对我给与启发答1;首先调通单个节点。
答2:这是单节点发送没有成功(或者由于网络中其他节点没有收到帧并在响应场响应);建议参考网站CAN应用方案。
我想请教各位can远程贞有何作用?如何应用?在什么情况下才需要用到远程贞?谢谢了!答:远程幀的用与不用完全取决你自己的协议,can有远程幀的功能,是可用可不用的!用网站提供的计算波特率的工具算出的数,12k以上的都正确,无论是自接收还是两个节点通讯都没有任何问题。
CAN总线网络组建实训报告CAN总线是一种串行数据通信协议,被广泛应用于网络化测量技术中,本文正是利用将RS232通讯转换成CAN通讯网络,实现了建立远程通讯网络。
整个通讯网络实时性好、可靠性高、传输距离远(长达10km),应用灵活。
利用RS232和CAN总线协议转换组建CAN 控制网络。
1、CAN总线概述CAN总线即控制器局域网,是目前应用最广的现场总线国际标准之一。
CAN总线是一种多主方式的串行通讯总线,可以实现较高通讯速率、高抗电磁干扰性,而且能够检测出产生的任何错误,以保证实时通讯的可靠性。
此外,CAN总线具有很远的数据传输距离(长达10k。
)和高速的数据传输速率(高达IMbps),当信号传输距离达到skm时,CAN 总线仍可提供高达roKbPs的数据传输速率。
CAN总线通讯速率与传输距离的关系同时内嵌了CAN和SCI模块,为实现把RS232通讯网络转换成CAN通讯网络提供了极大的方便。
CAN模块是一个16位的外设模块。
它完全支持CANZ.OB协议;可工作在标准模式和扩展模式。
2、RS232与CAN转换原理及硬件设计RS232总线与CAN总线通信协议转换单元的原理框图如图1所示。
RS电平转换采用TI公司的RS232电平转换芯片,它可以把输入的+3.3V电源电压变换成RS232输出电平所需要的电压。
该电路采用了符合RS232标准的驱动芯片MAX3232进行串行通信。
MAX3232芯片功耗低,集成度高,+3.3V供电,具有两个接收和发送通信,由于TMS32LF2407采用+3.3V供电,所以在MAX3232与TMS32LF2407之间不需要加电平转换电路。
CAN收发器也直接采用了+3.3V供电的CAN收发器SN65HVD230,它是驱动CAN控制器和物理总线间的接口,提供对总线的差动发送和接收功能,硬件原理图如下图2所示。
由于TI公司的SN65HVD230是提供+3.3V供电,同时由于LF2407也是使用3.3V供电,因此也不需要做电平转换。
CAN总线回环实验这一节我们将向大家介绍STM32的CAN总线的基本使用。
有了STM32,CAN总线将变得简单,俗话说“百闻不如一见”,应当再加上“百见不如一试”。
在本小节,我们初始化CAN总线,分别测试轮询模式和中断模式下的CAN总线环回,并通过神舟IV号的LED和串口等指示CAN环回的数据传送结果。
本节分为如下几个部分:1 CAN总线回环实验的意义与作用2 实验原理3 软件设计4 硬件设计5 下载与验证6 实验现象z意义与作用什么是CAN总线?CAN,全称“Controller Area Network”,即控制器局域网,是国际上应用最广泛的工业级现场总线之一。
它是一种具有国际标准而且性能价格比又较高的现场总线,当今自动控制领域的发展中能发挥重要的作用。
最初CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。
比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
CAN控制器局部网是BOSCH公司为现代汽车应用领先推出的一种多主机局部网,由于其卓越性能现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。
在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。
近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。
控制器局部网将在我国迅速普及推广。
由于CAN为愈来愈多不同领域采用和推广,导致要求各种应用领域通信报文的标准化。
为此,1991年9月 PHILIPS SEMICONDUCTORS制订并发布了 CAN技术规范(VERSION 2.0)。
该技术规范包括A和B两部分。
2.0A给出了曾在CAN技术规范版本1.2中定义的CAN报文格式,而2.0B给出了标准的和扩展的两种报文格式。
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总线技术,为汽车电子控制系统的发展做出更大的贡献。
实验三:双节点通信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总线数据通讯[实验目的]基于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总线的基本原理和特性。
CAN总线是一种常见的工业控制网络,具有高速、可靠、抗干扰等特点。
在实际应用中,我们需要对CAN总线的波形进行检测,以验证其正常工作。
下面是我在进行CAN总线波形检测实验中的一些心得体会。
首先,我们需要准备一些基本的设备和工具,例如CAN总线分析仪、示波器、信号发生器等。
在进行波形检测之前,我们需要对这些设备进行正确的连接,以确保信号正常传输。
同时,我们需要对所使用的设备进行正确的配置,例如设置波特率、校验模式、帧格式等。
其次,在进行波形检测之前,我们需要先了解CAN总线的标准波形,以便于对波形进行比较和分析。
在实际检测过程中,我们需要观察CAN总线上的各种信号波形,例如起始边沿、同步边沿、数据帧等。
通过对这些波形的分析,我们可以判断CAN总线的工作状态是否正常。
最后,我们需要对检测结果进行分析和处理。
在实际应用中,我们需要对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)是一种适合完成数字信号处理运算的处理器。
学期 2013-2014(1)研究生实验课程CAN总线实验院(系)名称自动化科学与电气工程学院专业名称0学生姓名0学号02013年12月CAN总线实验报告第 1 页实验一CAN数据信息的发送与接收1.实验内容(1)将USB-CAN模块连接到计算机的USB口,启动试验程序,通过实验平台软件,完成帧信息传送,帧信息传送模拟;(2)完成并观察CAN数据信息的发送与接收。
认真阅读并思考示例程序,分析程序动态连接库中收发函数的调用及接收处理方法。
(3)在示例程序的基础上进行修改,实现两个CAN口的通信连接发送和接受实验。
实验过程与结果:(1)调试过程为:第一要初始化CAN设备的参数,如设备类型号、索引号等;第二是连接与启动设备;最后是帧的发送与接收,发送帧时要配置发送格式、帧ID、帧类型、帧格式和发送的数据,接收数据时,只需要从缓冲区中读出数据。
主要了解到了VCI_transmit和VCI_receive两个函数的使用和波特率等参数的设置以及对编程软件的熟悉。
实验界面:CAN总线实验报告第 2 页实验二CAN总线实验数据采集与输入输出控制1.实验内容(1)利用实验平台软件,完成实验箱AD采集对象的过程数据,在计算机上显示出来,完成相应的CAN总线应用编程。
(2)研究高速AD的指令,编程实现AD数据的采集,以及数据转换实验过程与结果:第二个实验是在第一次实验的基础上编程实现对电压的AD采集,根据第一次实验,需要更改对CAN总线进行一系列的初始化。
这里要计算控制指令的选取和电压值的换算。
在发送帧的时候,帧ID为80,读取下拉列表的通道号1,配置数据帧的格式:00 80 01 01,这样就能控制高速AD转换1通道的电压值。
在电压值的换算时,需要将第七个字节的第四位和第六个字节组合成12位AD值,再判断第五个字节确定电压的正负号,再通过相应的换算关系得到实际电压值。
知道了CAN总线ID号的应用,了解了实验中AD模块转换位长的认识,知道了定时器的应用;实验界面为:CAN总线实验报告第 3 页实验三基于CAN总线的位移伺服控制1.实验内容(1)利用实验平台软件,完成伺服机构的控制(2)分析伺服控制指令格式,编程实现伺服机构的开环控制,及发送前进命令,伺服器就保持前进,发送后退命令,伺服器就保持后退。
西安邮电大学CAN总线实验报告(一)专业:测控技术与仪器班级:测控100206102043学号:姓名:刘宇实验一SJA1000初始化一、实验要求:正确完成对SJA1000初始化,初始化成功后用LED点亮,表示初始化完成;否则LED 不亮。
二、实验内容:1.实现SJA1000的初始化设置2.理解SJA1000的相关寄存器的设置。
三、实验系统硬件设计:图1是89C51与SJA1000连接图。
MCU与SJA1000连接图。
选择适合的电阻和电容。
此实验选择了51KR电阻与1UF电容,开机后给电容充电,电容电压由0V升至5V,SJA1000可靠复位。
I/O复位,由单片机某一I/O引脚控制SJA1000复位引脚,使单片机在可靠复位之后完成SJA1000的复位,避免时间偏差。
芯片复位,可以通过外围芯片进行复位。
四、实验系统软件设计程序开始采用宏定义,初始化开始。
设置模式寄存器进入复位模式;然后配置时钟分频寄存器(CDR)选择PeliCAN模式,关闭CLKOUT输出;然后是输出控制寄存器(OCR),再设置位定时(BTR0/BTR1)6MHz晶振,波特率30Kbps;然后配置验收滤波;最后再次设置模式寄存器推出复位状态并且设置单验收滤波,然后以状态寄存器自测模式退出复位模式。
图1系统软件设计框图进入复位模式(MODE )设置时钟分频寄存器(CDR)设置位定时器(BIT0/BIT1)设置验收滤波(ACR/AMR )设置输出控制寄存器(OCR )状态寄存器是否为0CH 初始化结束初始化开始Y N 程序如下:MODE EQU 0DE00HCMR EQU0DE01H ;命令寄存器 SR EQU0DE02H ;状态寄存器 IR EQU0DE03H ;中断寄存器 IER EQU0DE04H ;中断使能寄存器 BTR0EQU 0DE06H ;总线定时寄存器一 BTR1EQU 0DE07H ;总线定时寄存器二 OCR EQU0DE08H ;输出控制寄存器ALC EQU 0DE0BH ;仲裁丢失捕捉寄存器 ECC EQU 0DE0CH ;错误代码捕捉寄存器TXERR EQU 0DE0FH ;发送错误计数器ACR0EQU 0DE10H ;验收代码寄存器0 ACR1EQU 0DE11H ; 1 ACR2EQU 0DE12H ; 2 ACR3 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 4080H;---------------------------------------------------------------- START:MOV DPTR,#MODE ;复位模式MOV A,#09HMOVX @DPTR,AMOV DPTR,#CDR ;时钟分频R,选择增强CAN模式,关闭CLKOUT输出MOV A,#88HMOVX @DPTR,AMOV DPTR,#IER ;中断使能寄存器,开溢出、错误、接收中断MOV A,#0DHMOVX @DPTR,AMOV DPTR,#AMR0 ;验收屏蔽MOV A,#00HMOVX @DPTR,AINC DPTRMOV A,#0FHMOVX @DPTR,AINC DPTRMOV A,#0FFHMOVX @DPTR,AINC DPTRMOVX @DPTR,AMOV DPTR,#ACR0 ;验收滤波MOVX @DPTR,AINC DPTRMOV A,#20HMOVX @DPTR,AINC DPTRMOV A,#00HMOVX @DPTR,AINC DPTRMOV A,#00HMOVX @DPTR,AMOV DPTR,#BTR0 ;总线定时寄存器一MOV A,#03HMOVX @DPTR,AMOV DPTR,#BTR1 ;总线定时寄存器二,6MHz晶振,波特率30Kbps MOV A,#0FFH ;设置波特率MOVX @DPTR,AMOV DPTR,#OCR ;输出控制寄存器MOV A,#0AAHMOVX @DPTR,AMOV DPTR,#RBSA ;接收缓冲器起始地址为0MOV A,#0MOVX @DPTR,AMOV DPTR,#TXERR ;清除发送错误计数器MOV A,#0MOVX @DPTR,AMOV DPTR,#ECC ;清除错误代码捕捉寄存器MOVX @DPTR,AMOV DPTR,#MODE ;返回工作方式MOV A,#0CHMOVX @DPTR,ACJNE A,#0CH,STARTCLR P1.2END实验截图:六.实验心得本次实验是第一次现场总线实验,我们对于仪器的操作很不熟悉。
一、实验目的1. 了解汽车总线的概念、作用和分类;2. 掌握汽车总线系统的基本组成和工作原理;3. 通过实验,验证汽车总线在实际应用中的可靠性和效率;4. 培养学生的动手能力和实际操作技能。
二、实验原理汽车总线是一种用于汽车内部电子设备之间进行数据传输和控制的通信网络。
汽车总线系统由通信线路、控制单元、执行单元和传感器等组成。
汽车总线可以降低布线成本,提高数据传输速度和可靠性,是实现汽车智能化和网络化的基础。
目前,常见的汽车总线有CAN(控制器局域网络)、LIN(局部互连网络)、FlexRay和MOST(媒体导向系统传输)等。
三、实验内容1. CAN总线实验(1)实验设备:CAN总线实验板、示波器、PC机等;(2)实验步骤:① 将实验板与PC机连接,运行CAN总线实验软件;② 配置CAN总线参数,如波特率、节点地址等;③ 发送和接收数据,观察示波器波形;④ 分析数据传输过程,验证CAN总线系统的可靠性和效率。
2. LIN总线实验(1)实验设备:LIN总线实验板、示波器、PC机等;(2)实验步骤:① 将实验板与PC机连接,运行LIN总线实验软件;② 配置LIN总线参数,如波特率、节点地址等;③ 发送和接收数据,观察示波器波形;④ 分析数据传输过程,验证LIN总线系统的可靠性和效率。
3. FlexRay总线实验(1)实验设备:FlexRay总线实验板、示波器、PC机等;(2)实验步骤:① 将实验板与PC机连接,运行FlexRay总线实验软件;② 配置FlexRay总线参数,如波特率、节点地址等;③ 发送和接收数据,观察示波器波形;④ 分析数据传输过程,验证FlexRay总线系统的可靠性和效率。
4. MOST总线实验(1)实验设备:MOST总线实验板、示波器、PC机等;(2)实验步骤:① 将实验板与PC机连接,运行MOST总线实验软件;② 配置MOST总线参数,如波特率、节点地址等;③ 发送和接收数据,观察示波器波形;④ 分析数据传输过程,验证MOST总线系统的可靠性和效率。
CAN总线通讯实验一、实验目的1.掌握UP-NetARM2410经典版上的CAN总线通讯原理。
2.学习编程实现MCP2510的CAN总线通讯。
3.掌握查询模式的CAN总线通讯程序的设计方法。
二、实验内容学习CAN总线通讯原理,了解CAN总线的结构,阅读CAN控制器MCP2510的芯片文档,掌握MCP2510的相关寄存器的功能和使用方法。
编程实现UP-NetARM2410-CL之间的CAN总线通讯:两个UP-NetARM2410-CL通过CAN总线相连接。
ARM监视串行口,将接收到的字符发送给另一个开发板并通过串口显示(计算机与开发板是通过超级终端通讯的)。
即按PC 键盘通过超级终端发送数据,开发板将接收到的数据通过CAN总线转发,再另一个PC的超级终端上显示数据。
三、预备知识1、用EWARM集成开发环境,编写和调试程序的基本过程。
2、ARM应用程序的框架结构。
3、会使用Source Insight 3 编辑C语言源程序。
4、了解CAN总线。
四、实验设备及工具硬件:ARM嵌入式开发平台、用于ARM920T的JTAG仿真器、PC机Pentium100以上,CAN通讯电缆。
软件:PC机操作系统Win2000或WinXP、EWARM集成开发环境、仿真器驱动程序、超级终端通讯程序五、实验原理及说明1.CAN总线概述CAN全称为Controller Area Network,即控制器局域网,是国际上应用最广泛的现场总线之一。
最初,CAN总线被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。
比如,发动机管理系统、变速箱控制器、仪表装备、电子主干系统中均嵌入CAN控制装置。
一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。
但是,实际应用中节点数目受网络硬件的电气特性所限制。
例如,当使用Philips P82C250 作为CAN 收发器时,同一网络中允许挂接110个节点。
汽车can总线实验报告汽车CAN总线实验报告一、实验目的1. 了解汽车CAN总线的基本原理和工作方式;2. 学会使用CAN总线进行数据通信;3. 掌握CAN总线的调试方法。
二、实验器材1. CAN总线模块;2. CAN总线调试软件;3. CAN总线通信设备。
三、实验步骤1. 连接CAN总线模块和计算机:将CAN总线模块的CAN_H和CAN_L线分别连接到CAN总线通讯设备的CAN_H和CAN_L端口。
然后将CAN总线通讯设备的USB端口连接到计算机上。
2. 打开CAN总线调试软件:启动CAN总线调试软件,并选择正确的通讯设备。
3. 设置CAN总线模块的参数:在CAN总线调试软件中设置CAN总线的参数,包括波特率、滤波模式等。
4. 开始通信:在CAN总线调试软件中点击“开始”按钮,开始进行CAN总线通信。
5. 发送数据:在CAN总线调试软件中选择要发送的CAN帧的ID和数据,并点击“发送”按钮。
6. 监测数据:在CAN总线调试软件中监测接收到的CAN总线数据帧,包括ID 和数据。
7. 分析数据:通过分析接收到的数据帧,判断CAN总线的数据传输是否成功。
8. 模拟故障:可以在CAN总线调试软件中模拟故障,比如断开CAN总线的连接,观察CAN总线的通信情况。
9. 结束实验:实验完成后,关闭CAN总线调试软件和计算机。
四、实验结果1. 成功建立CAN总线通信:在实验过程中,通过设置正确的CAN总线参数,成功建立CAN总线通信。
2. 数据传输成功:经过多次实验,发现发送的CAN帧的数据能够成功传输到接收端,并且数据的准确性也得到了验证。
3. 故障模拟结果:在模拟故障的情况下,可以观察到CAN总线的通信中断,并且可以通过CAN总线调试软件得到相应的报错信息。
五、实验总结通过本次实验,我们对汽车CAN总线的基本原理和工作方式有了更深入的了解,并且掌握了使用CAN总线进行数据通信的方法。
我们学会了通过CAN总线调试软件进行CAN总线的参数设置、数据发送和数据接收,并且可以通过模拟故障的方式来验证CAN总线的稳定性和可靠性。
实验报告学院:电气工程学院专业:测控技术与仪器班级:测仪101实验内容利用实验平台上的USBCAN 及CANalyst分析仪构成两个CAN 节点,实现单节点自发自收,双方数据的收发。
实验数据1、CAN节点的连接图2、CAN节点初始化:(1)打开ZLGCANTest 软件,并在设备类型中选择USBCAN-Ⅱ接口卡如下图(2)打开ZLGCANTest 测试软件,设置定时器0:0x00,定时器1:0x1C,其余项为默认值。
此时USBCAN-Ⅱ接口卡的波特率即为500kbps,点击如下图(3)启动CAN 才可以进行CAN报文的收发测试,如下图为启动CAN 示意图。
点击“启动CAN”按钮即可以启动CAN通道。
3、单节点收发:在完成以上步骤后,就可以对一个节点进行自发自收了。
按图2.4 点击发送,将看到如下图所示的自发自收示意图。
4、双节点收发:(1)在设置好USBCAN-Ⅱ接口卡接口卡和CANalyst-Ⅱ分析仪分析仪后(此步骤略),即可进行双方的对发实验。
请确保双方的波特率一致。
在CANalyst 分析仪的发送窗口中,选择设定的报文数据,并双击报文数据。
发送窗口如下(2)接受窗口如下如上图所示,可以观察到CANalyst 软件接收窗口中接收到了10 帧报文,报文ID 为0x00,报文数据为:00 01 02 03 04 05 06 07,如USBCAN-Ⅱ接口卡发送的数据是一致的。
实验总结本实验让我了解到ICAN教学实验开发平台的广泛性和优越性,通过对这个平台的了解使我了解现场总线技术,进一步使学生理论与实践相联合,是我更深刻的了解所学知识。
指导教师意见签名:年月日实验报告学院:电气工程学院专业:测控技术与仪器班级:测仪101实验步骤1、系统接线连接。
2、上电运行。
3、开关量输出控制。
4、开关量输入检测。
5、模拟输入、输出信号检测。
6、热电阻输入配置。
7、热电阻输入测试。
8、热电偶中iCAN通信协议测试9、实验总结。
实验18 CAN总线传输【实验目的】1、了解CAN总线工作原理;2、学习LPC系列处理器CAN总线模块的使用方法;【实验要求】1、正确配置LPC处理器IO端口并正确初始化CAN总线模块;2、编写程序实现CAN总线数据传输。
【实验原理】一、LPC系列处理器CAN总线模块及CAN总线的原理参见《ARM与嵌入式系统——基于LPC2470和IAR开发环境》中有关CAN总线的章节,重点掌握CAN总线工作原理及CAN总线模块的寄存器使用、数据传输操作方法等内容。
本实验提供程序实现LPC处理器两个CAN总线模块之间的数据传输。
程序通过串口把CAN 发送数据读入LPC处理器,处理器把数据从CAN模块1发出,数据通过对连线发到CAN 模块2;程序把数据从CAN模块2读出进行比较,验证数据传输正确后从串口回显传输数据。
本程序使用了两种中断源:串口接收数据中断和CAN模块接收中断。
二、CAN总线收发器TJA1040简介LPC处理器拥有两个CAN总线通道控制器,所以实验板只要增加CAN总线收发器就可以方便实现CAN总线。
LPC处理器两个CAN总线通道各使用一片TJA1040。
TJA1040是一款符合CAN 2.0规范,数据率可高达1Mbps的CAN总线收发器。
TJA1040器件主要引脚功能说明如表18-1所示。
表16-1三、实验板CAN总线电路1.原理图图16-22.说明TJA1040的STB接地,使器件工作在正常模式下,RXD和TXD分别接CAN总线模块的RD和TD引脚。
所以程序在初始化CAN模块时要先初始化I/O模块,正确配置引脚P0.0~1和P0.4~5。
四、程序工程模板说明实验提供的程序工程模板中,主要有以下几个目录:1.Common:共有四个源程序文件:cstartup.s79芯片的初始化汇编代码、target.c目标板的初始化C语言代码、irq.c中断实现程序、timer.c定时器程序。
2.Target:存放CAN模块的源程序CAN.c和串口模块源程序UART0.c。
CAN总线实验报告实验一SJA1000初始化一、实验要求:正确完成对SJA1000初始化,初始化成功后用LED点亮,表示初始化完成;否则LED 不亮。
二、实验内容:1.实现SJA1000的初始化设置2.理解SJA1000的相关寄存器的设置。
三、实验系统硬件设计:图1是89C51与SJA1000连接图。
MCU与SJA1000连接图。
选择适合的电阻和电容。
此实验选择了51KR电阻与1UF电容,开机后给电容充电,电容电压由0V升至5V,SJA1000可靠复位。
I/O复位,由单片机某一I/O引脚控制SJA1000复位引脚,使单片机在可靠复位之后完成SJA1000的复位,避免时间偏差。
芯片复位,可以通过外围芯片进行复位。
四、实验系统软件设计程序开始采用宏定义,初始化开始。
设置模式寄存器进入复位模式;然后配置时钟分频寄存器(CDR)选择PeliCAN模式,关闭CLKOUT输出;然后是输出控制寄存器(OCR),再设置位定时(BTR0/BTR1)6MHz晶振,波特率30Kbps;然后配置验收滤波;最后再次设置模式寄存器推出复位状态并且设置单验收滤波,然后判断状态寄存器是否位OXOC以确认初始化是否成功,如果成功则点亮LED,否则重新初始化。
图1系统软件设计框图程序如下:MODE EQU 0DE00HCMR 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 4080H;----------------------------------------------------------------START:MOV DPTR,#MODEMOV A,#01HMOVX @DPTR,AMOV DPTR,#IERMOV A,#0DHMOVX @DPTR,AMOV DPTR,#ACR0MOV A,#00HMOVX @DPTR,AMOV DPTR,#ACR1MOV A,#10HMOVX @DPTR,AMOV DPTR,#ACR2MOV A,#00HMOVX @DPTR,AMOV DPTR,#ACR3MOV A,#00HMOVX @DPTR,AMOV DPTR,#AMR0 MOV A,#00H MOVX @DPTR,AMOV DPTR,#AMR1 MOV A,#0FH MOVX @DPTR,AMOV DPTR,#AMR2 MOV A,#0FFH MOVX @DPTR,AMOV DPTR,#AMR3 MOV A,#0FFH MOVX @DPTR,AMOV DPTR,#BTR0 MOV A,#6DH MOVX @DPTR,AMOV DPTR,#BTR1 MOV A,#2AH MOVX @DPTR,AMOV DPTR,#OCR MOV A,#01CH MOVX @DPTR,AMOV DPTR,#TXERR MOV A,#00H MOVX @DPTR,AMOV DPTR,#MODE MOV A,#00H MOVX @DPTR,AMOV DPTR,#SR MOVX A,@DPTRCJNE A,#0CH,START CLR P1.2END五.频率计算:晶振6MHz,由实验运行截图可得BTR0=6DH, BTR1=2AH=2 46=2 46/ 6=46/3us设同步段为1个系统时钟周期,=1= (8 +2×1+1)=112=2= + + =14 =644/3usf=1/ =46.6kbps六.实验心得这次实验是第一次在试验台上做实验,刚去对操作台的布局及功能都不太熟悉,经过老师的讲解、演示,我们开始在操作台上操作练习,通过实践操作,对SJA1000模块以及模块的初始化有了详细的认识并且在以后的应用中会更熟练。
在对SJA1000的初始化设置时计算了它的频率,完成对SJA1000初始化,初始化成功后用LED点亮,表示初始化完成;否则LED不亮。
在实验过程中也遇到了一些困难,关键是不熟悉试验台,不知道具体的操作。
刚开始可能因为我们没有插好板子,指示灯不亮,我们还以为操作台坏了,最后重新插了一下板子,硬件问题解决了,编程时也遇到了问题,出现了几个错误,最后在我们几个的探讨下终于完成了本次实验。
实验二 SJA1000局部自检测一.实验要求进行单节点自测实验,要求CAN节点自发自收标准数据帧,观察所收数据与发送数据是否一致。
二.实验目的1.实现CAN节点的初始化及CAN节点的自发收。
2.学会对CAN节点的基本操作,理解CAN通信的基本流程。
三.实验器材计算机一台、CAN模块一个四.实验内容1.流程图2..实验步骤(1)将CPU挂箱右侧的“DATA PORT”和“ADDRESS PORT”分别用5P、14P、20P连线与接口挂箱的相应插座连接.(2)将模块1上CS0用跳线帽短接,模块2上CS1用跳线帽短接.(3)将模块上的JUMP-4的两个跳线短接在Single侧.(4)有且只能有一块模块上的A短接到CANL,B短接到CANH. (5)将模块插入接口挂箱插槽内.(6)接通电源,运行本测试程序.五.实验结果1.实验截图2.SJA1000自检测源程序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 4080H;---------------------------------------------------------------- START: MOV R1,#8MOV R0,#20HFILL: MOV B,#11HMOV A,R1MUL ABMOV @R0,AINC R0DJNZ R1,FILLMOV R0,#0AAHLCALL INITCAN ;CAN初始化(CAN片选为CS0:0DE00H) ;------------------------- CAN1发送桢数据------------------ RETRAN: MOV DPH, #0DEHMOV R0, #20HLCALL SEND ;发送20H为首址的1桢数据(前三字节为:08H、BBH、FFH,后8字节任意)LCALL DELAY;----------------------- CAN1接收数据--------------------------MOV DPH, #0DEHMOV R0, #30HLCALL RECVNOP ;在此处设置断点,以观察结果JMP $INITCAN:MOV DPTR,#MODE ;初始化子程序,DPH、R0为入口参数MOV A,#09HMOVX @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, R0MOVX @DPTR,A ;验收代码ACR0MOV DPTR,#ACR1MOV A,#0FFHMOVX @DPTR,A ;无关INC DPTRMOVX @DPTR,A ;无关INC DPTRMOVX @DPTR,A ;无关MOV DPTR,#AMR0MOV A,#0FFH ;modify #00 to #0FF MOVX @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,#0cHMOVX @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, #0BBHMOVX @DPTR, AINC DPLMOV A, #0FFHMOVX @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, #DATA1 ;将接收数据传至R0为首址的内存中 MOV R2, #08HRDATA1: MOVX A, @DPTRMOV @R0, AINC DPLINC R0DJNZ R2, RDATA1MOV DPTR, #CMRMOV A, #04HMOVX @DPTR, ARECOUT: MOV DPTR, #ALC ;释放仲裁丢失捕捉寄存器和错误捕捉寄存器 MOVX A, @DPTRMOV DPTR, #ECCMOVX A, @DPTRNOPRETDELAY: MOV R2, #40DELAY1: MOV R4, #255DELAY2: NOPDJNZ R4, DELAY2DJNZ R2, DELAY1RETEND六.实验心得本次实验实践了课本上关于CAN节点的初始化及CAN节点的自发收以及学会对CAN节点的基本操作,更进一步理解了CAN通信的基本流程。