学 号:
1049721203588
课 程 设 计
现场总线
题 目
学 院
专 业
班 级
姓 名
指导教师
CAN 总线通信
自动化学院
电力电子与电力传动
自研 1203 班
袁广凯
许湘涟
2013 年 1 月 16 日
摘要
现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域
的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠
的数据通信提供了强有力的技术支持。CAN(Controller Area Network)属于现
场总线的范畴,是一种多主方式的串行通讯总线,数据通信实时性强。与
其它现场总线比较而言,CAN 总线具有通信速率高、容易实现、可靠性高、
性价比高等诸多特点。
本系统要在单片机中实现CAN总线的接口,通过CAN总线,实现两个
模块之间的数据通讯。系统主要由四部分所构成:PC机、微控制器80C51、
独立CAN通信控制器SJA1000和CAN总线收发器PCA82C250。微处理器
80C51负责SJA1000的初始化,通过控制SJA1000实现数据的发送和接收等
通信任务。CAN总线节点的软件设计主要包括三大部分:CAN节点初始化、
报文发送和报文接收。
本系统通过扩展 CAN 总线控制器 SJA1000,在单片机系统中实现了
CAN 总线的接口,并且编写了 SJA1000 的驱动程序,通过读写其的内部寄
存器,完成工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)
和接收代码寄存器(ACR)的设置、波特率参数设置和中断允许寄存器(IER)
的设置等基本操作;利用各基本操作,完成了对 SJA1000 的初始化,并且
实现了数据发送和接收。
目 录
第 1 章 原理与方案.......................................................................................... 1
1.1 设计目的与要求.......................................................................................1
1.2 CAN 总线介绍......................................................................................... 1
1.3 设计方案...................................................................................................2
1.3.1 硬件设计方案 ..................................................................................2
1.3.2 软件设计方案 ..................................................................................4
第 2 章 硬件连接与说明.................................................................................. 5
2.1 硬件连接...................................................................................................5
2.1.1 模块使用说明 ..................................................................................5
2.1.2 实验箱连线 ......................................................................................6
2.2 CAN 总线控制器 SJA1000..................................................................... 6
2.3 CAN 控制器接口 PCA82C250................................................................6
第 3 章 软件流程图及说明.............................................................................. 8
3.1 软件流程图...............................................................................................8
3.1.1 主程序流程图 ..................................................................................8
3.1.2 初始化子程序流程图 ..................................................................... 8
3.1.3 发送数据子程序流程图 ............................................................... 10
3.1.4 接收数据子程序流程图 ............................................................... 10
3.2 软件实现过程.........................................................................................10
第 4 章 结果分析及心得体会........................................................................ 13
4.1 结果分析.................................................................................................13
4.2 心得体会.................................................................................................14
4.2.1 CAN 应用中的问题 ...................................................................... 15
4.2.2 CAN 总线的其他应用 ..................................................................15
I
附录 程序清单................................................................................................ 16
参考文献............................................................................................................ 24
II
武汉理工大学《现场总线》课程设计说明书
第 1 章 原理与方案
1.1 设计目的与要求
扩展 CAN 总线控制器,在单片机系统中实现 CAN 总线的接口,并编
写接口芯片的驱动程序。通过 CAN 总线,实现两个模块之间的数据通讯,
CPU 控制第一个模块发送 1 帧数据,第二个模块收到这帧数据并送至另一
个 CPU 的内部存储器。
1.2 CAN 总线介绍
CAN 全称为“Controller Area Network”, 即控制器局域网,是国际上
应用最广泛的现场总线之一。最初 CAN 被设计作为汽车环境中的微控制器
通讯,在车载各电子控制装置 ECU 之间交换信息,形成汽车电子控制网络。
比如发动机管理、系统变速箱控制器、仪表装备中,均嵌入 CAN 控制装置。
一个由 CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实
际应用中,节点数目受网络硬件的电气特性所限制。例如当使用 Philips
PCA82C250 作为 CAN 收发器时,同一网络中允许挂接 110 个节点。CAN 可
提供高达 1Mbit/s 的数据传输速率,这使实时控制变得非常容易,另外硬件
的错误检定特性也增强了 CAN 的抗电磁干扰能力。
CAN 是一种多主方式的串行通讯总线。基本设计规范要求有高的位速
率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离
达到 10Km 时,CAN 仍可提供高达 50Kbit/s 的数据传输速率。由于 CAN 总
线具有很高的实时性能,因此 CAN 已经在汽车工业、航空工业、工业控制、
安全防护等领域中得到了广泛应用。
1
武汉理工大学《现场总线》课程设计说明书
1.3 设计方案
在本系统中,采用 80C51 单片机,80C51 与 PC 机串行通信,设置
SJA1000 工作于 Intel 模式,由 PC 机发送的数据写入 SJA1000 并通过 CAN
收发器发送。接收数据是通过中断进行的,CAN 总线传输过来的数据经
CAN 接口芯片 PCA82C250 接收并写入 SJA1000 的 RXFIFO,然后通过中
断提请 CPU 读取,读取的数据上传送给 PC 机。
总体设计框图如图 1-2 所示。
图 1-2 总体设计框图
1.3.1 硬件设计方案
1. 芯片介绍
SJA1000:独立式 CAN 控制器,具有 64 字节的 FIFO 作为接收缓存。
6N137:高速光隔,最高速度 10Mb/s,用于保护 CAN 控制器。
PCA82C250:CAN 总线收发器,是 CAN 控制器与 CAN 总线的接口器
件,对 CAN 总线差分式发送。
2. CAN 控制器与 CPU 接口设计
对于 CPU 来说,CAN 控制器是确保双方独立工作的存贮器映象外围设
备。CAN 控制器与外部 CPU 的接口是通过控制器接口逻辑(CIL)实现的,
2
武汉理工大学《现场总线》课程设计说明书
80C51 的 CPU 通过将地址总线(AB)和数据总线(DB)连接到 CIL 上来
完成与 CAN 控制器之间的信息交换,不需要专门的控制总线(CB),CPU
与 PCA82C250 之间的状态、控制和命令信号的交换在 CAN 控制器中完成。
SJA1000 与单片机的接口电路如图 1-3 所示。
图 1-3 SJA1000 与单片机的接口电路
3. CAN 控制器工作电路的连接
为了增强 CAN 总线节点的抗干扰能力,SJA1000 的 TX0 和 RX0 并不
是直接与 PCA82C250 的 TXD 和 RXD 相连,而是通过高速光隔 6N137 后
与 PCA82C250 相连,这样就很好的实现了总线上各 CAN 节点间的电气隔
离。
若 PCA82C250 处于 CAN 总线的网络终端,总线接口部分需加一个 120
欧姆的匹配电阻。
3
武汉理工大学《现场总线》课程设计说明书
CAN 控制器工作电路如下图所示:
图 1-4 CAN 控制器工作电路
1.3.2 软件设计方案
CAN 总线节点的软件设计主要包括三大部分:CAN 节点初始化、报
文发送和报文接收。熟悉这三部分程序的设计就能编写出利用 CAN 总线进
行通信的一般应用程序。当然要将 CAN 总线应用于通信任务比较复杂的系
统中,还需详细了解有关 CAN 总线错误处理、总线脱离处理、接收滤波处
理、波特率参数设置和自动检测以及 CAN 总线通信距离和节点数的计算等
方面的内容。
SJA1000 的初始化只有在复位模式下才可以进行,初始化主要包括工
作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)和接收代
码寄存器(ACR)的设置、波特率参数设置和中断允许寄存器(IER)的设
置等。在完成 SJA1000 的初始化设置以后,SJA1000 就可以回到工作状态,
进行正常的通信任务。
发送子程序负责节点报文的发送。发送时用户只需将待发送的数据按
特定格式组合成一帧报文,送入 SJA1000 发送缓存区中,然后启动 SJA1000
4