CAN总线实验报告
实验十三 CAN总线实验

1.2 CAN 总线技术的优点 使用 CAN 总线后,对其优点进行了总结,得出以下结论: 1) 如果数据扩展以增加新的信息,只需升级软件即可。 2) 控制单元对所传输的信息进行实时检测,检测到故障后存储故障码。 3) 使用小型控制单元及小型控制单元插孔可节省空间。 4) 使传感器信号线减至最少,控制单元可做到高速数据传输。 5) CAN 总线符合国际标准,因此可应用不同型号控制单元间的数据传输。
datanum = 8; loopnum = str.GetLength() / 8; if((str.GetLength() % 8) == 0) loopnum -= 1; temp = loopnum; while(loopnum >= 0){
for(int i = 0; i < datanum; i++) {
信息,而不分主从,通信方式灵活,且无需站地址等节点信息。利用这一点可方便地构 成多机备份系统。 CAN 网络上的节点信息分成不同的优先级,可满足不同的实时要求,高优先级的数据 最多可在 134us 内得到传输。 CAN 采用非破坏性总线性仲裁技术,当多个节点同时向总线发送信息时,优先级较低 的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据,从而大大 节省了总线冲突仲裁时间。尤其是在网络负载很重的情况下也不会出现网络瘫痪情况 (以太网则可能)。 CAN 只需通过帧滤波即可实现点对点、一点对多点及全局广播等几种方式传送接受数 据,无需专门的“调度”。 CAN 采用 NRZ 编码,直接通信距离最远可达 10km(速率 5kbps);通信速率最高可达 1Mbps(此时通信距离最长为 40m)。 CAN 上的节点数主要取决于总线驱动电路,目前可达 110 个;标示符可达 2032 种 (CAN2.0A),而扩展标准(CAN2.0B)的标示符几乎不受限制。 CAN 采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果,每帧信息都 有 CRC 效验及其他检错措施,保证数据出错率极低。 CAN 的通信介质可为双铰线、同轴电缆或光纤,选择灵活。 CAN 节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不 受影响。
CAN总线网络组建实训报告

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总线通讯的运用以及汽车仪表功能设计+实验报告----

《汽车电控技术》课程设计与实践报告《汽车电控技术》课程设计与实践报告实验说明:本次试验,我们小组五人分为两个部分,一部分负责CAN总线的编程调试,另一部分负责汽车仪表功能的设计,最后将仪表与2个三位旋钮开关之间进行联调,通力合作完成本次实验,实验步骤基本同步进行。
为了展开叙述,在实验步骤环节以CAN总线的编程调试为先。
设计题目:汽车CAN总线通讯的运用以及汽车仪表功能的设计实验目的:1、初步学习CAN总线应用协议的制定。
学习汽车CAN总线控制系统的工作原理以及过程,熟悉控制器的工作原理,学习usb—can的应用。
2、学习传统指针仪表与液晶仪表的工作过程,理解掌握仪表的电气连接,学习Murphy PV750调试程序的使用。
设计内容:本次实验使用intercontrol FI控制器、Murphy仪表公司的PV750和PVA指针仪表为硬件基础,配合配套软件prosyd1131、Murphy Configuration Tool 2.1完成。
设计中根据操控设计实验的需求,通过FI控制器程序,将开关量以及模拟量的输入转换成CAN总线信号发送至总线上,并将CAN总线信号利用CANtools 采集。
选择使用不同指针仪表,并利用Murphy Configuration Tool 2.1编写所需PV750界面。
实验器材:硬件:intercontrol_FI控制器,Murphy PV750仪表1块,PVA仪表1块,usb—can, 24V、5V开关电源各一块,三位旋钮开关2个,端子排若干,电气连线若干。
软件:prosyd1131编程工具,Murphy仪表PV750调试软件Murphy Configuration Tool 2.1,cantools。
实验步骤:1.初步了解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总线技术的理解和应用能力。
二、实验内容
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总线实验报告

实验三:双节点通信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总线采用差分信号传输和冲突检测机制,具有抗干扰能力强的特点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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机发送字符,显示程序运行状态。
3、编写SJA1000芯片CAN数据发送程序和查询方式的数据接收程序,完成CAN 数据帧的发送和接收。
4、编写SJA1000芯片CAN数据发送程序和中断方式的数据接收程序。
[实验数据记录及处理]1、查询收发数据每次按下CAN实验板上的按键KEY,则该CAN节点发送数据帧,单片机通过串口与PC通讯,显示"SEND MSG n,(0xc) ",其中n表示第n次发送。
一个CAN节点发送数据帧后,另一个CAN节点通过查询方式接收数据,同样利用串口显示"RECV MSG n:data",其中n表示第n次接收,data表示接收的数据。
实验结果如下图所示:2、中断收发数据发送数据同上,一个CAN节点发送数据帧后,另一个CAN节点进入中断,接收数据帧,利用串口显示"RECV MSG by INT0 n:data",其中n表示第n次接收,data表示接收的数据。
实验结果如下图所示:[实验出现的问题及解决办法]问题1:程序无法下载到单片机解决办法:更新下载软件STC_ISP,成功下载程序。
问题2:CAN节点只能发送一次分析原因:由于发送后没有节点接受应答,故不能进行下一次发送。
解决办法:通过把两个CAN节点相连,成功实现了数据的收发。
问题3:利用中断接收数据解决办法:编写中断服务程序,进入中断后,调用CAN_RecvMsg()函数,进行数据的接收。
[实验结论]通过对单片机进行编程,利用SJA1000 CAN总线控制器构成CAN总线数据收发系统,通过修改寄存器的值可以进行CAN总线初始化,可以进行CAN总线波特率设置、消息ID和接收滤波器配置等操作。
CAN总线控制器的基地址与连接方式有关,本次实验用线选法,把CS与单片机的P2.0相连,故基地址为0XFE00。
接收方式可以分为查询法和中断法。
通过这次实验,实现了两个节点的数据通讯,每个节点都可以发送和接收数据,顺利地完成了本次实验。
[回答思考题]1、若已知CAN接口板的基地址=7F00H,请问PeliCAN模式下,SJA1000的控制寄存器的物理地址=?答:7F00H2、请将BasicCAN下地址分配表中的32个单元地址,用C语言宏常量定义方法,定义成SJA1000.h文本文件,并在Keil工程文件中调用。
#define CAN_ADDR 0XFE00 //P2.0为初始地址#define REG_CONTROL CAN_ADDR+0x00 //内部控制寄存器#define REG_COMMAND CAN_ADDR+0x01 //命令寄存器#define REG_STATUS CAN_ADDR+0x02 //状态寄存器#define REG_INTERRUPT CAN_ADDR+0x03 //中断寄存器#define REG_INTENABLE CAN_ADDR+0x04 //中断使能寄存器#define REG_BTR0 CAN_ADDR+0x06 //总线定时寄存器0#define REG_BTR1 CAN_ADDR+0x07 //总线定时寄存器1#define REG_OCR CAN_ADDR+0x08 //输出控制寄存器#define REG_TEST CAN_ADDR+0x09 //测试寄存器#define REG_RESVER1 CAN_ADDR+0x0A //保留1#define REG_ARBITRATE CAN_ADDR+0x0B //仲裁丢失捕捉#define REG_ERRCATCH CAN_ADDR+0x0C //错误代码捕捉#define REG_ERRLIMIT CAN_ADDR+0x0D //错误报警限额#define REG_RXERR CAN_ADDR+0x0E //接收错误计数器#define REG_TXERR CAN_ADDR+0x0F //发送错误计数器#define REG_ACR1 CAN_ADDR+0x10 //验收代码寄存器#define REG_ACR2 CAN_ADDR+0x11 //验收代码寄存器#define REG_ACR3 CAN_ADDR+0x12 //验收代码寄存器#define REG_ACR4 CAN_ADDR+0x13 //验收代码寄存器#define REG_AMR1 CAN_ADDR+0x14 //验收屏蔽寄存器#define REG_AMR2 CAN_ADDR+0x15 //验收屏蔽寄存器#define REG_AMR3 CAN_ADDR+0x16 //验收屏蔽寄存器#define REG_AMR4 CAN_ADDR+0x17 //验收屏蔽寄存器#define REG_TXBuffer1 CAN_ADDR+0x10 //发送缓冲区1#define REG_TXBuffer2 CAN_ADDR+0x11 //发送缓冲区2#define REG_TXBuffer3 CAN_ADDR+0x12 //发送缓冲区3 #define REG_TXBuffer4 CAN_ADDR+0x13 //发送缓冲区4 #define REG_TXBuffer5 CAN_ADDR+0x14 //发送缓冲区5 #define REG_TXBuffer6 CAN_ADDR+0x15 //发送缓冲区6 #define REG_TXBuffer7 CAN_ADDR+0x16 //发送缓冲区7 #define REG_TXBuffer8 CAN_ADDR+0x17 //发送缓冲区8 #define REG_TXBuffer9 CAN_ADDR+0x18 //发送缓冲区9 #define REG_TXBuffer10 CAN_ADDR+0x19 //发送缓冲区10 #define REG_TXBuffer11 CAN_ADDR+0x1A //发送缓冲区11 #define REG_TXBuffer12 CAN_ADDR+0x1B //发送缓冲区12 #define REG_TXBuffer13 CAN_ADDR+0x1C //发送缓冲区13 #define REG_RXBuffer1 CAN_ADDR+0x10 //接收缓冲区1 #define REG_RXBuffer2 CAN_ADDR+0x11 //接收缓冲区2#define REG_RXBuffer3 CAN_ADDR+0x12 //接收缓冲区3#define REG_RXBuffer4 CAN_ADDR+0x13 //接收缓冲区4#define REG_RXBuffer5 CAN_ADDR+0x14 //接收缓冲区5#define REG_RXBuffer6 CAN_ADDR+0x15 //接收缓冲区6#define REG_RXBuffer7 CAN_ADDR+0x16 //接收缓冲区7#define REG_RXBuffer8 CAN_ADDR+0x17 //接收缓冲区8#define REG_RXBuffer9 CAN_ADDR+0x18 //接收缓冲区9#define REG_RXBuffer10 CAN_ADDR+0x19 //接收缓冲区10#define REG_RXBuffer11 CAN_ADDR+0x1A //接收缓冲区11#define REG_RXBuffer12 CAN_ADDR+0x1B //接收缓冲区12#define REG_RXBuffer13 CAN_ADDR+0x1C //接收缓冲区13#define REG_RXCOUNT CAN_ADDR+0x1D //RX报文计数器#define REG_RBSA CAN_ADDR+0x1E //接收缓冲区起始地址#define REG_CDR CAN_ADDR+0x1F //时钟分频寄存器[心得体会]在这次实验中,遇到了一些问题,比如开始软件不对导致程序不能正确下载,以及后面用中断实现所遇到的困难,我们组通过仔细考虑,检查,以及求助学长,最终顺利完成了实验,通过这次的实验,将课本理论与实际相结合,进一步加深了对理论知识的理解,同时,增强了动手操作,加强了团队协作。