CAN总线通讯实验
- 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总线控制器MCP2510
UP-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中的命令
命令格式定义
复位1100
0000 设置内部寄存器为默认值,并设置MCP2510到配置状态
读取0000
0011
从选定的寄存器的地址开始读取数据