CAN总线通讯实验

合集下载

实验十三 CAN总线实验

实验十三 CAN总线实验
1
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总线的基本原理、工作方式和应用领域,提高学生对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总线实验

实验三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总线数据通讯[实验项目]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⽹络实验平台介绍⼀、系统概述本实验平台使⽤了⼀块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总线实验报告 北航

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. 波特率设置实验中,根据实际需求设置了不同的波特率。

结果表明,在不同波特率下,数据传输仍然稳定可靠。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)?。

相关文档
最新文档