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总线实验报告》
一、实验目的
本实验旨在通过对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总线实验一.实验目的学习基于SJA1000的CAN总线标准帧通信,实现2个CAN通信节点之间的数据通信。
二、验设备及器件计算机(带串口)一台单片机实验仪一台三、实验内容编写一段程序,实现CAN节点的初始化,能够2节点之间的数据收发,用本节点的I/O控制另一个节点的LED灯。
四、实验步骤图3、SJA1000及82C250接口电路1、将2块CAN实验板的CAN总线的CANH、CANL同名连接,通过杜邦线从单片机实验板上将电源接给CAN实验板。
2、编写程序分别下载到各自的CAN实验板上,用杜邦线将JP的P2.0接地控制另一块板子的LED灯。
五、实验预习要求阅读关于CAN和CAN器件SJA1000的基本资料,具备CAN和CAN相关器件的基本知识,学习指导书的参考程序。
//CAN通信参考程序#include <STC_NEW_8051.H>#define uchar unsigned char#define uint unsigned int#define time0 -10000sfr WDT = 0xE1;sfr AUX = 0x8E;#define Raddr 1 //本机地址ID高8位#define Taddr 2 //目标地址ID高8位#define CAN_PORT P0 //CAN数据口//CAN2.0B的BasicCAN模式(标准帧模式)#define CAN_CR 0 //控制#define CAN_CMR 1 //命令#define CAN_SR 2 //状态#define CAN_IR 3 //中断#define CAN_ACR 4 //验收#define CAN_AMR 5 //屏蔽#define CAN_BTR0 6 //时序0#define CAN_BTR1 7 //时序1#define CAN_OCR 8 //输出#define CAN_TXB 10 //发送缓冲#define CAN_RXB 20 //接收缓冲#define CAN_CDR 31 //分频uchar pdata CAN[32] _at_(0); //定位CAN寄存器地址sbit LED2 = P2^5;sbit LED1 = P2^6;sbit KEY = P2^0;bit CANBUS,sta,LED,RUN;uchar tim;uchar idata TXB[10],RXB[10];void delay(uint p){while(p--);}void CAN_SEND() /*发送数据部分*/{uchar i,p;p=CAN[CAN_SR];if (p&0x04){p=CAN_TXB; /*p指向发送缓存首址*/for(i=0;i<10;i++) CAN[p++]=TXB[i];CAN[CAN_CMR]=0x01; /*请求发送*/}}void CAN_INT() interrupt 0 using 1/*接收中断*/ {uchar i,p;p=CAN[CAN_IR];if(p&0x01){p=CAN_RXB;for(i=0;i<10;i++){RXB[i]=CAN[p++];}CAN[CAN_CMR]=0x04; /*释放接收缓存*/ CANBUS=1;}}void CAN_INI() /*初始化部分*/{CAN[CAN_CR]=0x01;CAN[CAN_ACR]=Raddr;CAN[CAN_AMR]=Raddr;CAN[CAN_BTR0]=0x07;CAN[CAN_BTR1]=0xff;CAN[CAN_OCR]=0x1A;CAN[CAN_CR]=0x02;}void timer0() interrupt 1 using 3{TH0=time0>>8;TL0=time0;if(tim<250) tim++;}void main(){AUX=2; WDT=0x34;IE=0x83; IT0=1; TMOD=0x21;TH0=time0>>8; TL0=time0; TR0=1; LED1=0;LED2=0;delay(5000);LED1=1;LED2=1;KEY=1;CAN_INI();CANBUS=0;while(1){WDT=0x34;if(tim>10){tim=0;TXB[0]=T addr;TXB[1]=1;if(!KEY) TXB[2]=0; else TXB[2]=1;CAN_SEND();}if(CANBUS){CANBUS=0;LED1=!LED1;if(RXB[2]==0) LED2=0; else LED2=1;}}}。
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⽹络实验平台介绍⼀、系统概述本实验平台使⽤了⼀块51内核的MCU作为控制器,采⽤模块化分离式结构,板上拥有CAN控制器SJA1000,CAN收发器82C250,可以完整⽀持CAN2.0B协议。
同时还集成了LCD显⽰模块,H桥模块,温度传感模块,⽀持iCAN协议的4017模拟量输⼊模块以及4050数字量输⼊输出模块,⽅便⽤户⼆次开发。
⼆、硬件组成该实验系统可以完成BasicCAN通讯实验、PeliCAN通讯实验、iCAN通讯实验、电机控实验、温度检测实验。
其硬件资源主要包括:●数字量输⼊输出单元●模拟量输⼊单元●液晶显⽰单元●直流电机单元●温度传感单元●8bit的数字量输⼊(8位拨码开关)和8bit的数字量输出(8个LED灯显⽰)。
2、模拟量输⼊单元在该实验板上,使⽤了⼀个滑动变阻器调整电压⼤⼩,可进⾏AD实验。
3、液晶显⽰单元●标准1602LCD接⼝。
4、直流电机单元在该实验板上,使⽤了6个三极管组成H桥驱动电路,控制直流电机的正反转。
5、温度传感单元在该实验板上,使⽤的是⼀线制的串⾏DS18B20温度传感器。
它具有以下特点:●独特的单线接⼝⽅式,DS18B20在与微处理器连接时仅需要⼀条⼝线即可实现微处理器与DS18B20的双向通讯;●在使⽤中不需要任何外围元件;●⼯作电压⼴;实验板程序下载说明实验板使⽤了STC公司的STC89C52单⽚机,⽀持ISP下载,实验板上预留了串⼝ISP 下载接⼝。
通过USB下载器对芯⽚编程。
USB下载器实质上是⼀个USB转TTL串⼝的单元,它实现电脑USB直接与单⽚机串⼝进⾏通讯,可以对⽀持串⼝程序烧些的单⽚机进⾏程序下载,如STC系列51单⽚机。
USB下载器如图所⽰:⼀、驱动安装1. 解压USB-TTL客户包,⾸先安装驱动程序,XP ⽤户安装“PL-2303 WinXP DriverInstaller”,Vista或Win7 ⽤户安装“PL-2303 Vista&Win7 Driver Installer”;双击相应的驱动程序进⼊安装过程,所有选项全部默认直接下⼀步直到安装完成;2. 安装完驱动程序后,将USB-TTL插⼊电脑,电脑会提⽰发现新硬件,此时别动电脑,电脑会⾃动安装完驱动程序并提⽰安装完成;3. 此时电脑设备管理器中会出现相应的串⼝设备,注意记住COM号,下图例为COM4;如果电脑⾃动分配超过COM9,应⼿动将其改回COM9 以下,⼿动更改右击这个串⼝设备在属性⾥⾯可以找到更改串⼝号的地⽅;4. ⾄此驱动程序安装完成。
CAN总线实验报告 北航
学期 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)分析伺服控制指令格式,编程实现伺服机构的开环控制,及发送前进命令,伺服器就保持前进,发送后退命令,伺服器就保持后退。
汽车总线实验报告
一、实验目的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总线系统的可靠性和效率。
现场总线实验报告
一、实验目的1. 理解现场总线的基本概念和原理。
2. 掌握现场总线的硬件连接和软件配置方法。
3. 学习使用现场总线进行数据传输和设备控制。
4. 分析现场总线在实际应用中的优缺点。
二、实验原理现场总线(Field Bus)是一种用于工业自动化领域的通信网络,主要用于连接现场设备和控制系统。
它具有以下特点:1. 串行通信:现场总线采用串行通信方式,可以实现多节点之间的数据传输。
2. 多点通信:现场总线支持多点通信,可以实现多个设备之间的数据交换。
3. 抗干扰能力强:现场总线具有较好的抗干扰能力,可以在恶劣的工业环境中稳定运行。
本实验采用CAN总线(Controller Area Network)作为现场总线的通信协议,其基本原理如下:1. CAN总线采用双绞线作为传输介质,具有较高的抗干扰能力。
2. CAN总线采用多主从通信方式,任何一个节点都可以主动发送数据。
3. CAN总线采用帧结构进行数据传输,包括标识符、数据、校验和等字段。
三、实验内容1. 硬件连接(1)连接CAN总线模块和单片机开发板。
(2)连接电源线和地线。
(3)连接杜邦线,将CAN模块的TXD、RXD、GND等引脚与单片机开发板的相应引脚连接。
2. 软件配置(1)编写单片机程序,初始化CAN控制器,配置波特率、消息ID、接收滤波器等参数。
(2)编写数据发送和接收程序,实现节点之间的数据传输。
3. 实验步骤(1)启动单片机程序,初始化CAN控制器。
(2)发送数据:在主节点上编写发送程序,发送一个数据帧。
(3)接收数据:在从节点上编写接收程序,接收主节点发送的数据帧。
(4)分析接收到的数据,验证数据传输的正确性。
四、实验结果与分析1. 数据传输成功通过实验,成功实现了主从节点之间的数据传输。
发送的数据帧被从节点正确接收,验证了现场总线通信的正确性。
2. 波特率设置实验中,根据实际需求设置了不同的波特率。
结果表明,在不同波特率下,数据传输仍然稳定可靠。
CAN总线活动讲座二十二:CAN总线两节点通讯实验
实验内容
前提:您有两块我们的CAN总线学习板。
INT0按键为外部中断计数按键,每按一次,数码管1-2(自右向左)显示加1,并且发送数据到CAN节点2;接收到CAN节点2的数据在数码管3-4(自右向左)。
CAN节点2的功能与CAN节
点1功能相同。
实验目的
熟悉CAN总线通讯编程。
相关点评
(1)采用P23控制SJA1000复位管脚,可以通过软件复位芯片。
(2)增加通讯指示灯。
软件程序can-node.rar (44.28 KB)
实验步骤和实验现象与结果
(1)检查电路,判断电路是否短路。
(2)打开电源开关,分别下载CAN节点的程序。
下载程序时观察软件上显示是
否下载成功。
(3)下载完毕后,关闭电源,然后将两个总线学习板的CAN节点连接。
注意连
接方法。
(4)两个节点打开电源后,数码管1-2(自右向左)显示0;数码管3-4(自右
向左)显示0
(5)按CAN节点1上的INT0按键一次,其数码管1-2显示加1(十进制显示),自动发送数据到CAN节点2,并且在节点2的数码管3-4上显示。
(6)按CAN节点2上的INT0按键一次,其数码管1-2显示加1(十进制显示),自动发送到CAN节点1,并且在节点1的数码管3-4上显示。
实验注意事项
(1)实验前一定要检查电路,防止短路
(2)两个CAN节点连接时,是H——H,L——L。
CAN总线通讯实验
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总线实验
while(p--); } void CAN_SEND() /*发送数据部分*/ { uchar i,p; p=CAN[CAN_SR]; if (p&0x04) { p=CAN_TXB; /*p指向发送缓存首址*/ for(i=0;i<10;i++) CAN[p++]=TXB[i]; CAN[CAN_CMR]=0x01; /*请求发送*/ } } void CAN_INT() interrupt 0 using 1/*接收中断*/ { uchar i,p; p=CAN[CAN_IR]; if(p&0x01) { p=CAN_RXB; for(i=0;i<10;i++) { RXB[i]=CAN[p++]; } CAN[CAN_CMR]=0x04; /*释放接收缓存*/ CANBUS=1; } } void CAN_INI() /*初始化部分*/ { CAN[CAN_CR]=0x01; CAN[CAN_ACR]=Raddr; CAN[CAN_AMR]=Raddr;
//CAN通信参考程序 #include <STC_NEW_8051.H> #define uchar unsigned char #define uint unsigned int #define time0 -10000 sfr WDT = 0xE1; sfr AUX = 0x8E; #define Raddr 1 //本机地址ID高8位 #define Taddr 2 //目标地址ID高8位 #define CAN_PORT P0 //CAN数据口 //CAN2.0B的BasicCAN模式 (标准帧模式) #define CAN_CR 0 //控制 #define CAN_CMR 1 //命令 #define CAN_SR 2 //状态 #define CAN_IR 3 //中断 #define CAN_ACR 4 //验收 #define CAN_AMR 5 //屏蔽 #define CAN_BTR0 6 //时序0 #define CAN_BTR1 7 //时序1 #define CAN_OCR 8 //输出 #define CAN_TXB 10 //发送缓冲 #define CAN_RXB 20 //接收缓冲 #define CAN_CDR 31 //分频 uchar pdata CAN[32] _at_(0); //定位CAN寄存器地址 sbit LED2 = P2^5; sbit LED1 = P2^6; sbit KEY = P2^0; bit CANBUS,sta,LED,RUN; uchar tim; uchar idata TXB[10],RXB[10]; void delay(uint p) {
汽车can总线实验报告
汽车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总线的稳定性和可靠性。
CAN总线实验报告
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模块以及模块的初始化有了详细的认识并且在以后的应用中会更熟练。
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 equ0de02h ;状态寄存器 ir equ 0de03h ;中断寄存器 ier equ 0de04h ;中断使能寄存器 btr0 equ 0de06h ;总线定时寄存器一 btr1 equ 0de07h ;总线定时寄存器二ocr equ 0de08h ;输出控制寄存器alc equ 0de0bh ;仲裁丢失捕捉寄存器ecc equ0de0ch ;错误代码捕捉寄存器 txerr equ 0de0fh ;发送错误计数器 acr0 equ 0de10h ;验收代码寄存器0 acr1 equ 0de11h ; 1 acr2equ 0de12h ; 2 acr3 equ 0de13h ; 3 amr0 equ 0de14h ;验收屏蔽寄存器0 amr1 equ 0de15h ; 1 amr2 equ0de16h ; 2 amr3 equ 0de17h ; 3 fin equ0de10h ;发送/接收帧信息 id1 equ 0de11h ;发送/接收缓冲区之标示符一id2 equ 0de12h ;发送/接收缓冲区之标示符二 data1 equ 0de13h ;发送/接收数据首址 rbsa equ 0de1eh ;接收缓冲器起始地址寄存器 cdr equ0de1fh ;时钟分频寄存器 org 4000h jmp start org 4080h start: mov r1,#8 mov r0,#27h fill: mov b,#10hmov a,r1 mul ab mov @r0,a dec r0 djnz r1,fill mov r0,#0aah lcall initcan ;can初始化(can片选为cs0:0de00h) ;-------------------------发送------------------ retran: mov dph,#0deh mov r0, #20h lcall send ;发送20h为首址的1桢数据(前三字节为:08h、bbh、ffh,后8字节任意)lcall delay;-----------------------接收数据-------------------------- movdph, #0deh mov r0, #30h lcall recv nop ;在此处设置断点,以观察结果 jmp$ initcan:mov dptr,#mode ;初始化子程序,dph、r0为入口参数 mov a,#01h movx @dptr,a ;模式寄存器,单验收滤波器,进入复位模式 mov dptr,#cdrmov a,#88hmovx @dptr, a ;时钟分频r,选择增强can模式,关闭clkout输出 mov dptr,#iermov a,#0dh movx @dptr,a ;中断使能寄存器,开溢出、错误、接收中断 mov dptr,#btr0mov a,#03hmovx @dptr,a ;总线定时寄存器一 mov dptr,#btr1 mov a,#0ffh movx @dptr,a ;总线定时寄存器二,6mhz晶振,波特率30kbps movx a, @dptrmov mov movx mov mov movx mov mov movx mov inc movx inc movxmov mov movx inc mov movx inc movx inc movx mov mov movxmov movx mov movx mov mov movx ret send: dptr,#ocr a,#0aah @dptr,a dptr,#acr0 a, 00h @dptr,a dptr,#acr1 a,#2fh @dptr,a a,#0ffh dptr@dptr,a dptr@dptr,a dptr,#amr0a,#0ffh @dptr,a dptr a,#0ffh @dptr,a dptr@dptr,a dptr@dptr,a dptr, #rbsa a, #00h @dptr, a dptr, #txerr @dptr, a dptr, #ecc@dptr, a dptr,#modea,#08h @dptr,a ;输出控制寄存器 ;验收代码acr0 ;无关 ;无关;无关;modify #00 to #0ff ;验收屏蔽寄存器amr0=00h ;amr1 ;amr2 ;amr3验收屏蔽:只有acr0是相关项 ;接收缓冲器fifo起始地址为0 ;清除发送错误计数器 ;清除错误代码捕捉寄存器 ;单滤波方式,返回工作方式篇二:can总线接收实验报告dsp实验报告哈尔滨工业大学(威海)目录............................................................................ .................................... - 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)是一种适合完成数字信号处理运算的处理器。
40. CAN通信实验
1-16 个 tq 长度(CAN_BS1_1/2/3…16tq)。 CAN_BS2:用于设置 CAN 位时序中的 BS2 段的长度,它可以被配置为
CAN_RFLM:用于设置是否使用锁定接收 FIFO(ENABLE/DISABLE),锁定接 收 FIFO 后,若FIFO 溢出时会丢弃新数据,否则在 FIFO 溢出时以 新数据覆盖旧数据。
CAN_TXFP:用于设置发送报文的优先级判定方法(ENABLE/DISABLE),使 能时,以报文存入发送邮箱的先后顺序来发送,否则按照报文 ID 的 优先级来发送。
{
uint16_t CAN_Prescaler; //
uint8_t CAN_Mode;
//
uint8_t CAN_SJW;
//
uint8_t CAN_BS1;
//
uint8_t CAN_BS2;
//
FunctionalState CAN_TTCM; //
FunctionalState CAN_ABOM; //
C.回环模式
普中STM32开发板带您进入ARM世界
D.静默回环模式
普中STM32开发板带您进入ARM世界
2.位时序及波特率
普中STM32开发板带您进入ARM世界
(2)标号2:发送邮箱 它含有3个发送邮箱,软件可通过三个发送邮箱设置消息。发送调度
程序负责决定首先发送哪个邮箱的内容。 (3)标号3:验收筛选器
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
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-bus通信原理,实现基本的CAN-bus双节点通信。
掌握CANE-E接口卡和CANalyst-Ⅱ分析仪的基本使用方法。
2.1.2 实验设备及器件PC机一台iCAN教学实验开发平台一台2.1.3 实验内容利用实验平台上的CANET-E及CANalyst-Ⅱ分析仪构成两个CAN节点,实现单节点自发自收,双方数据的收发。
2.1.4 实验要求实现CAN-bus网络上两个节点的双向对发实验。
2.1.5 实验预习要求了解CAN-bus通信原理,CAN-bus网络拓扑结构,CAN-bus传输介质等相关内容。
2.1.6 实验步骤CAN节点的连接;CAN节点初始化;单节点收发;双节点收发。
2.1.7 实验测试示例图简单CAN网络如图所示为两个CAN节点的连接示意图,两个CAN节点要进行正常的CAN通信,必需保证两节点的通信波特率一致。
该实验中的CAN-bus通信波特率为500kbps(默认用户不需另行设置)。
1.CANalyst-Ⅱ分析仪的自接收实验ZLGCANTest 的设置将CANalyst-II分析仪通过USB线缆连接到PC机的USB端口。
打开ZLGCANTest软件,点击主菜单中的类型,从下拉列表中选择USBCAN2,如所示:图在ZLGCANtest选择USBCAN2在“设备操作”菜单中选择“打开设备”项。
出现图所示的属性对话框。
图设置CANalyst设置验收码为0x00000000,屏蔽码为0xffffffff,实验平台的CAN 网络的波特率为500kbps,据此设置定时器0:0x00,定时器1:0x1c,滤波方式为双滤波,模式为正常工作模式。
点击“确定”按钮,完成设置,出现如图所示的收发界面。
图ZLGCANtest 收发界面选择发送方式为:自收自发,每次发送5 帧,帧类型为:标准帧,帧ID为:00000000,数据为:00 01 02 03 04 05 06 07,帧格式为:数据帧。
现场总线通信实验
实验一CAN总线通信实验实验目的通过CAN总线通信实验,掌握CAN通信协议实现过程,了解CAN节点硬件设计、软件调试等环节。
实验内容1)熟悉相关实验设备,分析所给CAN节点硬件电路;2)了解CAN节点软件设计过程,包括设计环境、编译、调试、CAN节点通信代码的生成;3)通过串口调试软件监视CAN节点之间通信过程;实验设备硬件:PC机两台、CAN通信节点两个、数据线软件:Keil4程序设计软件、串口调试程序实验步骤1、设备连接;2、在Keil环境下,进行节点通信程序调试、编译、生成hex文件;3、串口调试程序中将已生成hex文件下载到CAN节点;4、按下中断按键,产生中断计数,数码管后1、2位显示计数值。
同时将计数值通过CAN总线发送到另一节点的数码管3、4位上显示,完成通信过程。
附件:1、硬件原理图USB--232模块电源模块MCU模块CAN控制模块数码管电路晶振中断复位MCU接口2、实验图片上电后状态通信状态3、串口调试工具4、Keil程序编辑软件注:1、数码管从右到左分别是1~4位。
1~2位显示要发送的数据。
3~4位显示接收到的数据。
紧靠电源开关的按键S2为外部中断按键。
2、CAN之间通讯实验分为数码管显示和中断计数两个部分。
按一下中断按键,产生中断计数。
数码管1~2位显示现在的计数值。
计数值通过CAN总线发送到另外一节点的数码管高位上显示。
实验二:RS485实验实验目的通过实验,掌握RS485串行通信协议实现过程,了解节点硬件设计、软件调试等环节。
实验内容1)熟悉相关实验设备,分析RS485硬件电路设计过程;2)了解节点软件设计过程,包括设计环境、编译、调试、CAN节点通信代码的生成;3)通过串口调试软件监视CAN节点之间通信过程;实验设备硬件:PC机两台、CAN通信节点两个、数据线软件:Keil4程序设计软件、串口调试程序实验步骤1、设备连接;2、在Keil环境下,进行节点通信程序调试、编译、生成“接收”、“发送”程序的hex文件;3、串口调试程序中将已生成hex文件,分别下载到两个节点;4、下载成功后,分别将J2、J4的1、2端的跳线拨下,将2、3端连接。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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、用EW ARM集成开发环境,编写和调试程序的基本过程。
2、ARM应用程序的框架结构。
3、会使用Source Insight 3 编辑C语言源程序。
4、了解CAN总线。
四、实验设备及工具硬件:ARM嵌入式开发平台、用于ARM920T的JTAG仿真器、PC机Pentium100以上,CAN通讯电缆。
软件:PC机操作系统Win2000或WinXP、EW ARM集成开发环境、仿真器驱动程序、超级终端通讯程序五、实验原理及说明1.CAN总线概述CAN全称为Controller Area Network,即控制器局域网,是国际上应用最广泛的现场总线之一。
最初,CAN总线被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。
比如,发动机管理系统、变速箱控制器、仪表装备、电子主干系统中均嵌入CAN控制装置。
一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。
但是,实际应用中节点数目受网络硬件的电气特性所限制。
例如,当使用Philips P82C250 作为CAN 收发器时,同一网络中允许挂接110个节点。
CAN可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。
另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。
CAN的主要优点包括:◆低成本◆极高的总线利用率◆很远的数据传输距离(长达10公里)◆高速的数据传输速率(高达1Mbit/s)◆可根据报文的ID决定接收或屏蔽该报文◆可靠的错误处理和检错机制◆发送的信息遭到破坏后可自动重发◆节点在错误严重的情况下具有自动退出总线的功能◆报文不包含源地址或目标地址仅用标志符来指示功能信息优先级2.CAN总线的电气特性CAN能够使用多种物理介质进行传输,例如:双绞线、光纤等。
最常用的就是双绞线。
信号使用差分电压传送,两条信号线被称为CAN_H和CAN_L,静态时均是2.5V左右,此时状态表示为逻辑1也可以叫做“隐性”。
用CAN_H比CAN_L高表示逻辑0,称为“显性”。
此时,通常电压值为CAN_H=3.5V和CAN_L=1.5V。
当“显性”位和“隐性”位同时发送的时候,最后总线数值将为“显性”。
这种特性,为CAN总线的总裁奠定了基础。
CAN总线的一个位时间可以分成四个部分:同步段,传播段,相位段1和相位段2,每段的时间份额的数目都是可以通过CAN总线控制器(比如MCP2510)编程控制的,而时间份额的大小tq由系统时钟tsys和波特率预分频值BRP决定:tq=BRP/tsys。
如下图所示:图9-1 CAN总线的一个位时间上述四个部分的设定和CAN总线的同步、仲裁等信息有关,请读者参考CAN总线方面的相关资料。
3.CAN总线的MAC帧结构如下图所示,CAN总线的帧数据有两种格式:标准格式和扩展格式。
图9-2 CAN总线的帧数据注:MCP2510中,同时支持上述两种CAN总线的帧格式。
4.UP-NETARM2410-CL上的CAN总线控制器MCP2510UP-NETARM2410-CL上采用MicroChip公司的MCP2510 CAN总线控制器。
其特点如下:◆支持标准格式和扩展格式的CAN数据帧结构◆ 0-8字节的有效数据长度,支持远程帧◆最大1Mbps的可编程波特率◆两个支持过滤器(Fliter、Mask)的接收缓冲区,三个发送缓冲区◆支持回环(Loop Back)模式◆ SPI高速串行总线,最大5MHz(4.5V供电)◆ 3V到5.5V供电平台间的连接方式是将要用于通信的平台的CAN_H和CAN_H相连,CAN_L和CAN_L相连。
系统中,S3C2410X通过SPI同步串行接口和MCP2510相连。
MCP2510的片选信号,通过接在S3C2410X的GPH0上来控制。
通过定义如下宏实现MCP2510的片选:#define MCP2510_Enable() GPHDAT=GPHDAT&0x7fe#define MCP2510_Disable() GPHDAT=GPHDAT|0x01上述的两个宏定义就是对GPH0端口的置1和清0操作。
S3C2410X带有高速SPI接口,可以直接和MCP2510通讯。
通过如下两个函数:SPISend ()//向同步串口发送数据(spi.c)SPIRecv ()//从同步串口读取数据(spi.c)5.MCP2510的控制字如下表所示,MCP2510的控制包括了6种命令:表9-1 MCP2510中的命令命令格式定义复位11000000 设置内部寄存器为默认值,并设置MCP2510到配置状态读取00000011从选定的寄存器的地址开始读取数据写入00000010向选定的寄存器的地址开始写入数据发送请求10000nnn设置一个或者多个发送请求位,发送缓冲区中的数据读取状态10100000轮流检测发送或者接收的状态修改位00000101按位修改寄存器各种命令的时序如下:图9-4 读取命令图9-5 单字节写入命令图9-6 发送请求命令图9-7 修改位命令图9-8 状态读取命令6.波特率的设置:通过设置MCP2510中的CNF1、CNF2、CNF3三个寄存器,实现不同时钟下,CAN 总线通讯的波特率的设置。
在UP-NETARM2410-CL 中,MCP2510的输入时钟为16MHz 。
可以按照如下方式定义CAN 总线通讯的波特率。
表9-2 MCP2510的波特率设置CAN 波特率 同步段 传输段 相位1 相位2 CNF1 CNF2 CNF3 125Kpbs 1 7 4 4 0x03 0x9E 0x03 250Kpbs 1 7 4 4 0x01 0x9E 0x03 500Kpbs 1 7 4 4 0x00 0x9E 0x03 1Mbps1 32 20x000x9E0x037.接受过滤器的设置在MCP2510中有两个Mask过滤器,6个Filter过滤器。
可以控制CAN节点收到指定的一个(或者一组)ID的数据。
Mask和Filter来控制是否接收数据,遵循如下规律:表9-3 Mask和Filter可见,如果要收到所有的数据,只要设置Mask的所有位均为0就可以了。
若要接收指定的ID帧,只要将Mask的所有位均设为1,然后将验收滤波寄存器设置为相应的ID即可。
本实验中使用的是标准帧,因此ID的范围是0~0x7ff。
发送报文中的标准帧ID在函数canWrite()中设置,接收报文端的ID在函数MCP2510_Write_Can_ID()中设置,此函数在函数init_MCP2510中。
函数init_MCP2510和canWrite()在main()函数中。
8.MCP2510的初始化MCP2510的初始化如下步骤:1、软件复位,进入配置模式2、设置CAN总线波特率3、关闭中断4、设置ID过滤器5、切换MCP2510到正常状态(Normal)6、清空接受和发送缓冲区7、开启接收缓冲区,开启中断(可选)9.MCP2510发送和接收数据:MCP2510中有3个发送缓冲区,可以循环使用。
也可以只使用一个发送缓冲区,但是,必须保证在发送的时候,前一次的数据已经发送结束。
MCP2510中有2个接收缓冲区,可以循环使用。
数据的发送和接收均可使用查询或者中断模式,这里,为编程简单,收发数据都采用查询模式。
通过状态读取命令(Read Status Instruction)来判断是否接收到(或者发送出)数据。
注:关于MCP2510的寄存器,操作方式等的详细情况请参考MCP2510的datasheet。
六、实验步骤1. 启动JLink 仿真器并进行初始化配置。
2.启动IAR EW ARM新建或打开工程:CAN总线通讯实验。
3.编写MCP2510驱动函数(MCP2510.c),包括:CAN初始化(init_MCP2510)、发送数据(canWrite)、接收数据(canRead)、查询数据(canPoll)。
4.在主函数中实现将从串口0接收到的数据发送到CAN总线,将从CAN接收到的数据,发送到串口0(Main.c):图9-9 主函数5.在IAR集成开发环境中编译、调试和运行工程程序。
6. 配合PC机的超级终端实现数据收发。
七、思考题1.CAN总线通讯最少需要几根线?如果多个节点应该如何连接?2.为什么CAN总线的可靠性高,传输数率却可以速度比RS232串口快(可达到1Mbps)?。