当前位置: 首页 > >

嵌入式系统CAN总线通讯

发布时间:

景德镇高等专科学校毕业论文

数学与计算机系嵌入式系统 CAN 总线通讯

罗涛

二零零八年三月十九日

景德镇高等专科学校 数学与计算机系毕业设计
(2008 届)

课题名称: 课题名称:

嵌入式CAN总线通讯 总线通讯 嵌入式



名:

罗涛



号:

2005104019



业:

计算机及应用

所在班级: 所在班级:

05 计算机及应用班

指导老师: 指导老师:

洪耀球



间:

二零零八年三月十九日





第一章 摘要---------------------------------------------------------------------------5 关键词------------------------------------------------------------------------5 绪论---------------------------------------------------------------------------7 第二章 一、概述 2.1概述知识点--------------------------------------------------------------8 2.2CAN的优点--------------------------------------------------------------9 2.3设计预备知识-----------------------------------------------------------9 2.4设计设备及工具--------------------------------------------------------9 二、设计开发原理 ⑴CAN 总线的电气特性-------------------------------------------------10 ⑵CAN 总线的MAC 帧结构--------------------------------------------11 ⑶CAN 的特点-------------------------------------------------------------12 ⑷MCP2510 的控制命令-------------------------------------------------13 ⑸波特率的设置------------------------------------------------------------15 ⑹接受过滤器的设置------------------------------------------------------16 ⑺MCP2510 的初始化----------------------------------------------------17 ⑻MCP2510 发送和接收数据-------------------------------------------17 (9)CAN节点硬件构架------------------------------------------------------18 ⑽CAN程序设计--------------------------------------------------------------19

三、设计步骤 阅读和理解示意图--------------------------------------------------------21 四、结语--------------------------------------------------------------------21 第三章 参考文献--------------------------------------------------------------------22 致谢-------------------------------------------------------------------------23

第一章 摘要 CAN 总线通讯正在嵌入式系统中占有重要位置,了解CAN 总线的 结构,阅读CAN 控制器MCP2510 的芯片文档,掌握MCP2510 的相 关寄存器的功能和使用方法。编程实现UP-NetARM2410-S 之间的 CAN 总线通讯:两个UP-NetARM2410-S 通过CAN 总线相连接。 ARM 监视串行口,将接收到的字符发送给另一个开发板并通过串口 显示(计算机与开发板是通过超级终端通讯的)。即按PC 键盘通过 超级终端发送数据,开发板将接收到的数据通过CAN 总线转发,再 另一个PC 的超级终端上显示数据。 关键词 CAN 总线通讯

Abstract In the CAN main line communication embedded system is holding the key position, understood that the CAN mainline's structure, reads CAN controller MCP2510 the chip documents, grasps MCP2510 the related register's function and the application method. The programming realizes between the UP-NetARM2410-S CAN main line communication: Two UP-NetARM2410-S connects through the CAN main line. The ARM surveillance serial port, will receive the character transmission for another development board and through the serial port demonstrated that (computer and development board are adopt super terminal communication). Namely according to the PC keyboard through the super terminal transmission data, the data which the development board will receive through the CAN main line repeater, in the another PC super terminal demonstrates the data again 1.2 Key word word CAN main line communication

1.3.绪论 1.3 绪论 认真掌握UP-NetARM2410-S 上的CAN 总线通讯原理。编程实现 MCP2510 的CAN 线通讯。使两个UP-NetARM2410-S 通过CAN 总 线相连接。 掌握查询模式的CAN 总线通讯程序的设计方法。 CAN-bus 以其开发维护的低成本、高总线利用率、很远的传输距离(最远可达 10Km)、高速的传输速率(最高可达1Mbps)、根据优先级的多主结构、 可靠的错误检测和处理机制,全面弥补了传统RS485网络的低总线利 用率、单主从结构、无硬件错误检测的不足。使用户能组建起稳定、 高效的现场总线网络,获得最大的价值.CAN已经形成国际标准,并已 被公认为几种最有前途的现场总线之一。其典型的应用协议有: SAE J1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA 2000 等.

第二章

一.CAN 总线概述 2.1概述 概述.CAN 全称为Controller Area Network,即控制器局域网,是 概述 国际上应用最广泛的现场总线之一。最初,CAN 总线被设计作为汽 车环境中的微控制器通讯,在车载各电子控制装置ECU 之间交换信 息, 形成汽车电子控制网络。 比如, 发动机管理系统、 变速箱控制器、 仪表装备、电子主干系统中均嵌入CAN 控制装置。 一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。 但是,实际应用中节点数目受网络硬件的电气特性所限制。例如,当 使用Philips P82C250 作为CAN 收发器CAN 可提供高达1Mbit/s 的 数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定 特性也增强了CAN 的抗电磁干扰能力。它在汽车领域上的应用是最 广泛的, 世界上一些著名的汽车制造厂商, 如BENZ(奔驰)、 BMW(宝马)、 PORSCHE(保时捷)、 ROLLS-ROYCE(劳斯莱斯)和JAGUAR(美洲豹)等都采 用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据 通信。同时,由于CAN总线本身的特点,其应用范围目前已不再局限 于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、 纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域 发展。 .

2.2CAN 的主要优点包括:

◆ 低成本 ◆ 极高的总线利用率 ◆ 很远的数据传输距离(长达10 公里) ◆ 高速的数据传输速率(高达1Mbit/s) ◆ 可根据报文的ID 决定接收或屏蔽该报文 ◆ 可靠的错误处理和检错机制 ◆ 发送的信息遭到破坏后可自动重发 ◆ 节点在错误严重的情况下具有自动退出总线的功能 ◆ 报文不包含源地址或目标地址仅用标志符来指示功能信息优先级 2.3设计预备知识 设计预备知识 设计 1、用ARM ADS1.2 集成开发环境,编写和调试程序的基本过程。 2、ARM 应用程序的框架结构。 3、会使用Source Insight 3 编辑C 语言源程序。 4、了解CAN 总线。 2.4 2.4设计设备及工具 硬件:ARM 嵌入式开发*台、用于ARM920T 的JTAG 仿真器、PC 机Pentium100 以上,CAN 通讯电缆。 软件:PC 机操作系统Win2000 或WinXP、ARM ADS1.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。如下图所示

__ CAN 总线的一个位时间 上述四个部分的设定和CAN 总线的同步、仲裁等信息有关。

总线的MAC 帧结构 ⑵.CAN 总线的

如下图所示, CAN 总线的帧数据有两种格式: 标准格式和扩展格式。

CAN 总线的帧数据 注:MCP2510 中,同时支持上述两种CAN 总线的帧格式。

⑶CAN的特点 CAN的特点. 的特点

UP-NETARM2410-S 上的CAN 总线控制 MCP2510UPNETARM2410-S 上采用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) ⑷.MCP2510 的控制命令

,MCP2510 的控制包括了 6 种命令: 命令 复位 格式 1100 0000 定义 设置内部寄存器为默认值,并设置

MCP2510 到配置状态 读取 据 写入 据 发送请求 1000 0nnn 送缓冲区中的数据 读取状态 1010 0000 修改位 0000 0101 轮流检测发送或者接收的状态 按位修改寄存器 设置一个或者多个发送请求位,发 0000 0010 向选定的寄存器的地址开始写入数 0000 0011 从选定的寄存器的地址开始读取数

各种命令的时序如下:

读取命令

单字节写入命令

发送请求命令

修改位命令

状态读取命令 ⑸波特率的设置: 波特率的设置 通过设置MCP2510 中的CNF1、CNF2、CNF3 三个寄存器,实现不 同时钟下,CAN 总线通讯的波特率的设置。在UP-NETARM2410-S 中, MCP2510 的输入时钟为16MHz。 可以按照如下方式定义CAN 总 线通讯的波特率。 MCP2510 的波特率设置 CAN 波特 率 125Kpbs 250Kpbs 500Kpbs 1Mbps 同步段 传输段 相位1 相位2 1 1 1 1 7 7 7 3 4 4 4 2 4 4 4 2 CNF1 0x03 0x01 0x00 0x00 CNF2 0x9E 0x9E 0x9E 0x9E CNF3 0x03 0x03 0x03 0x03

⑹.接受过滤器的设置 在MCP2510 中有两个Mask 过滤器,6 个Filter 过滤器。可以控制 CAN 节点收到指定的一个 (或者一组) 的数据。 ID Mask 和Filter 来 控制是否接收数据,遵循如下规律: Mask 和Filter Mask Filter 发送方的ID 是否接收数据 0 1 1 1 1 x 0 0 1 1 x 0 1 0 1 是 是 否 否 是

可见,如果要收到所有的数据,只要设置Mask 的所有位均为0 就可 以了。若要接收指定的ID 帧,只要将Mask 的所有位均设为1,然后 将验收滤波寄存器设置为相应的ID 即可。 本实验中使用的是标准帧,因此ID 的范围是0~0x7ff。发送报文中 的标准帧ID 在函数canWrite()中设置,接收报文端的ID 在函数 MCP2510_Write_Can_ID 中设置, () 此函数在函数init_MCP2510 中。 函数init_MCP2510 和canWrite()在main()函数中。

⑺.MCP2510 的初始化 MCP2510 的初始化如下步骤: 1、软件复位,进入配置模式 2、设置CAN 总线波特率 3、关闭中断 4、设置ID 过滤器 5、切换MCP2510 到正常状态(Normal) 6、清空接受和发送缓冲区 7、开启接收缓冲区,开启中断(可选) 发送和接收数据: ⑻.MCP2510 发送和接收数据 MCP2510 中有3 个发送缓冲区,可以循环使用。也可以只使用一个 发送缓冲区,但是,必须保证在发送的时候,前一次的数据已经发送 结束。MCP2510 中有2 个接收缓冲区,可以循环使用。数据的发送 和接收均可使用查询或者中断模式,这里,为编程简单,收发数据都 采用查询模式。通过状态读取命令(Read Status Instruction)来判断 是否接收到(或者发送出)数据。 注:关于MCP2510 的寄存器,操作方式等的详细情况请参考MCP2510 的datasheet。

CAN节点硬件构架 (9) CAN节点硬件构架 核心芯片: 选用PHILIPS公司的高性能8位微处理器P89C668。其突出特点如下: ◎ 80C51 中央处理单元; ◎ 内置可ISP(在系统编程)和IAP(在应用编程)的Flash 存储器, Boot ROM 可通过串口访问从而升级下载用户程序; ◎ 每个机器周期6 个时钟周期操作标准, 每个机器周期12 个时钟周 期操作可选,周期12 个时钟周期下速度高达33MHz; ◎ 8K字节RAM和64K字节FLASH; ◎ 4 个中断优先级,8 个中断源; ◎ 自带 串行接口序列; ◎ 5路可编程的计数器阵列PCA(PWM输出,捕捉/比较,高速输出三 种工作方式)。 无论从处理能力,存储容量,还是外围资源以及网络可扩展性方面来 评价,P89C668都是一款出色的微处理器,适用工控电子等各个领域。 尤其是其8K字节RAM的"海量"内存,更是许多高速存储应用场合的首 选



CAN程序设计

和硬件电路相比,软件的设计相对来说要复杂的多。而且,其中还涉 及到有关通讯协议的问题,对于不同的控制系统、不同的功能要求, CAN总线通讯软件的差别很大,在此不可能一一列出。但是,对于基 于SJA1000的CAN总线系统, 它们开始时都必须对SJA1000进行初始化, 而这种初始化的流程是基本一致的。下面给出用汇编语言编制的 SJA1000的初始化程序,假设SJA1000的首地址为0100H,其中设置波 特率的有关参数是针对晶振为12M,波特率为500Kbit/s计算出来的。 另外,在整个CAN总线系统中,所有节点设置的波特率必须一致,否 则,系统就不能正常工作。 MODE BTR0 BTR1 ACR0 AMR0 OCR RBSA CDR MOV MOV MOVX MOV EQU EQU EQU EQU EQU EQU EQU EQU A,#01H DPTR,#MODE @DPTR,A A,#0C0H 0100H MODE+6 MODE+7 MODE+16 MODE+20 MODE+8 MODE+30 MODE+31

MOV MOVX MOV MOV MOVX MOV MOV MOVX MOV MOV MOVX MOV MOV MOVX MOV MOV MOV

DPTR,# CDR @DPTR,A A,#1AH DPTR,# OCR @DPTR,A A,#85H DPTR,# BTR0 @DPTR,A A,#0B4H DPTR,# BTR1 @DPTR,A A,#00H DPTR,# RBSA @DPTR,A A,#0FFH DPTR,# AMR0 R0,#04H @DPTR,A

BEGIN10:MOVX INC DJNZ MOV MOV DPTR

R0,BEGIN10 A,#00H DPTR,#MODE

MOVX

@DPTR,A

三、设计步骤 1.新建工程,将“Exp7 CAN 总线通讯实验”中的文件添加到工程。 2.编写MCP2510 驱动函数(MCP2510.c),包括:CAN 初始化 (init_MCP2510)、发送数据(canWrite)、接收数据(canRead)、 查询数据(canPoll)。 3. 在主函数中实现将从串口0 接收到的数据发送到CAN 总线, 将从 CAN 接收到的数 据,发送到串口 0(Main.c):

四、结语 CAN 总线以其高性能、高可靠性及其独特的设计越来越受到 人们的重视,并被公认为最有前途的总线之一。我们在家庭控制器系 统中应用了这种总线技术, 设计了硬件电路和软件, 并得到实际应用。

第三章 参考文献 1.《UP-NETARM2410-S(Linux)嵌入式系统实验指导书》 北京博创 兴业科技有限公司 2.马忠梅,马广云,徐映慧,等《.ARM 嵌入式处理器结构与应用基础》. 北京:北京航空航天大学出版社,2002.

致 谢 通过这次对嵌入式系统开发实验设计, 使我学到了许多的嵌入式 开发知识,也掌握了UP-NetARM2410-S 上的CAN 总线通讯原理, 编写MCP2510 驱动函数(MCP2510.c).虽然还有很多不懂的地方, 有待学*和专研,但这不是最重要的,重要的是我对嵌入式系统开发 设计有了更深一步的了解。这次毕业设计过程中,我得到了我的指导 老师洪耀球老师的很多指点,才得以完成,他给我提供了很多有关嵌 入式开发的书籍和材料,并且在百忙中抽出时间帮我修改和纠正,在 此表示衷心的感谢!




友情链接: