第 5卷第 2期
2005年 6月
南 京 工 业 职 业 技 术 学 院 学 报
Journal of Nanjing Institute of Industry Technology
Vol. 5, No. 2
Jun. , 2005
文章编号 : 1671
4644 (2005) 02
0054
03
基于 SJA1000的 CAN总线接口电路的设计
杨红科 1 ,雷立英 2
(1. 南京工业职业技术学院 机械系 ,江苏 南京 210016;
2. 娄底职业技术学院 机电系 ,湖南 娄底 417000)
摘 要 :给出了一种基于 MCS—51和 SJA1000的 CAN总线节点设计方法 ,并对软硬件进行了相应的说明 。
关键词 : CAN总线 ; SJA1000;节点
中图分类号 : TP336 文献标识码 : A
引言
CAN (Controller A rea Network)即控制器局域网
络 。由于其高性能 、高可靠性 、及独特的设计 , CAN
已经被广泛应用于汽车 、机器人 、数控机床 、自动化
仪表等领域 。在 CAN总线的节点设计中 ,绝大部分
是通过单片机来实现的 。有的单片机 ,已经嵌入了
CAN控制器的功能 , 比如 Philip s的 P8XC592, Mo
torola 的 68HC05X4 等 。但 对 于 应 用 最 为 普 及 的
MCS—51系列单片机 ,本身并不嵌有 CAN 控制器的
功能 。针对这种情况 ,笔者设计了一种基于 MCS—
51单片机和 SJA1000的 CAN总线节点电路 ,并编写
了相应的初始化程序 ,给出的软硬件均已通过调试 。
1 CAN总线
CAN最早是由德国 Bosch公司推出 ,用于汽车
内部测量与执行部件之间的数据通信 。由于 CAN
总线具有很强的纠错能力 ,支持差分收发 ,因而适合
高噪声环境 ,而且传输距离比较远 。另外 ,象 Phil
ip s,Motorola, Intel等半导体制造商相继开发出了支
持 CAN协议的集成芯片 ,更是推动了 CAN 的应用 。
现在 , CAN的应用范围已经不再局限于最初的汽车
行业 ,在机器人 、智能楼宇 、医疗器械 、工业控制等领
域也取得了广泛的应用 。1993年 ,国际标准化组织
正式颁布了 CAN 国际标准 ISO11898。CAN 属于总
线式串行通讯网络 ,与一般的通讯总线相比 , CAN
总线的数据通讯具有突出的可靠性 、实时性和灵活
性 ,其具体特性如下 :
(1) CAN为多主方式工作 ,网络上任一节点均
可在任意时刻主动地向网络上的其他节点发送信
息 ,而不分主从 ,而且在通讯中没有节点地址信息 。
(2) CAN网络上的节点信息可以分成不同的优
先级 ,用来满足不同的实时要求 。
(3) CAN采用非破坏性总线仲裁技术 ,当多个
节点同时向总线发送信息时 ,低优先级的节点会依
此退出发送 ,而最高优先级的节点正常发送 ,不会受
到任何影响 ,极大地节省了总线冲突仲裁时间 。
(4) 发送期间若丢失仲裁或由于出错而遭破坏
的帧可自动重发送 。
(5) CAN的直接通讯距离最远可达到 10km (速
率 5kbp s以下 ) ,通讯速率最高可以达到 1Mbp s (此
时通讯距离最长为 40m ) 。
(6) CAN的每帧信息都有 CRC校验及其它检
错措施 ,保证了出错率很低 。
(7) CAN节点在错误严重的情况下具有自动关
闭 ,退出总线的功能 ,从而使总线上的其它接点不受
影响 。
2 SJA1000介绍
SJA1000是 Philip s生产的独立 CAN 总线控制
器 , 它 是 早 期 的 PCA82C200 的 替 代 产 品 。它 与
PCA82C200在管脚 、电气特性上完全兼容 ,不仅有
12
收稿日期 : 2004
25
作者简介 :杨红科 (1971
研究与开发。
) ,男 ,陕西凤翔人 ,南京工业职业技术学院讲师 ,南京航空航天大学 2002级硕士研究生 ,主要从事单片机应用系统的
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
第 5卷第 2期
杨红科 ,雷立英 :基于 SJA1000的 CAN总线接口电路的设计
55
和 PCA82C200一样的基本 CAN (BasicCAN )工作模
式 ,而且新增加了增强 CAN ( PeliCAN )工作模式 ,这
种模式支持具有很多新特性的 CAN2. 0B 协议 。经
过简单 连 接 和 正 确 设 置 的 SJA1000, 能 自 动 完 成
CAN总线物理层和数据链路层的所有功能 ,对于单
片机来说 ,只要把它看成一个基本的 I/O 设备即可 ,
使用非常简单 、方便 。 SJA1000的主要特性如下 :
(1) 扩展的接 受缓 冲器 ( 64 字节 , 先进 先出
F IFO ) 。
(2) 和 CAN2. 0B协议兼容 。
(3) 同时支持 11位和 29位识别码 。
(4) 位速率最高可达 1Mbits/ s。
(5) 支持多种微处理器接口 。
(6) 可编程的 CAN输出驱动器配置 。
3 硬件电路设计说明
运用 80C51 和 SJA1000 设计的 CAN 总线节点
电路如图 1 所示 。其中 , TLP113 和 PCA82C250 是
用来进行隔离和增加驱动能力 ,提高系统的可靠性 。
整个硬件电路并不复杂 ,但结合本文作者设计 、现场
调试的体会 ,给出下面几点说明 。
图 1 CAN总线节点原理图
(1) 80C51 和 SJA1000 最好都有各自独立的晶
振电路 。在有的资料中指出 ,可以用 SJA1000 的时
钟输出信号 CLKOUT来驱动单片机 。但这样做并不
可靠 ,有时 SJA1000有 CLKOUT信号输出 ,但并不能
驱动单片机工作 ,对于初步涉足 CAN 总线的人 ,更
应注意这一点 。
(2) SJA1000的复位信号并不是单纯地经单片
机的复位电路加一反相器获得 ,而是通过单片机的
一 I/O口来控制 ,这样 , SJA1000的复位就可以方便
地由单片机通过软件来控制 。
(3) SJA1000的地址 /数据端和单片机的 P0 口
相连时 ,不需要再加锁存器 ,因为它内部已经有地址
锁存功能 。
(4) CAN 总线上的匹配电阻 R8、R9 一定不能
省略 ,如果去掉它们 ,系统的抗干扰能力就会大大降
低 ,甚至不能正常工作 。
4 软件部分
软件部分相对于硬件电路来说 ,要稍难一些 。
下面给出用 MCS—51 汇编语言编制的对 SJA1000
的初始化程序 ,假设 SJA1000的首地址为 8000H,其
中设置波特率的有关数据是针对晶振为 12M ,波特
率为 500Kbits/ s计算出来的 。有一点需要注意 ,在
整个 CAN总线系统中 ,所有节点设置的波特率必须
一致 ,否则 ,系统就不能正常工作 。
CAN _MODE EQU 8000H
CAN _BTR0 EQU CAN _MODE + 6
CAN _BTR1 EQU CAN _MODE + 7
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
65
状态
清零
南 京 工 业 职 业 技 术 学 院 学 报
第 5卷第 2期
CAN _ACR0 EQU CAN _MODE + 16
CAN _AMR0 EQU CAN _MODE + 20
CAN _OCR EQU CAN _MODE + 8
CAN _RBSA EQU CAN _MODE + 30
CAN _CDR EQU CAN _MODE + 31
MOV A , #01H
MOV DPTR, #CAN _MODE ;通过软件设置复位
MOVX @DPTR , A
MOV A , #0C0H
MOV DPTR, # CAN _CDR
MOVX @DPTR , A ;设置为增加 CAN模式
MOV A , #1AH
MOV DPTR, # CAN _OCR ;输出方式配置
MOVX @DPTR , A
MOV A , #85H
MOV DPTR, # CAN _BTR0
MOVX @DPTR , A ;波特率为 500Kbits/ s
MOV A , #0B4H
MOV DPTR, # CAN _BTR1
MOVX @DPTR , A
MOV A , #00H
MOV DPTR, # CAN _RBSA ; 接受缓冲器首址
MOVX @DPTR , A
MOV A , #0FFH
MOV DPTR , # CAN _AMR0
MOV R0, #04H
START10: MOVX @DPTR , A ;全部接受收到的
INC DPTR
DJNZ R0, START10
MOV A , #00H
MOV DPTR , #CAN _MODE ;初始化结束 ,进入
信息
正常工作状态
MOVX @DPTR , A
5 结束语
该设计可以作为 CAN总线节点的一个模块 ,能
够和仪器仪表等设备相结合 ,使其具有网络通讯的
能力 ,大大提高其性价比 。
参考文献 :
[ 1 ] Philip s Sem iconductors. SJA1000 Stand_alone CAN control
ler [ S]. 2000.
[ 2 ]阳宪惠. 现场总线技术及其应用 [M ]. 北京 :清华大学出
版社 , 1999.
[ 3 ]岑雪松. SJA1000在 CAN总线系统节点的应用 [ J ]. 单片
机与嵌入式系统应用 , 2002, (3) : 50
54.
D esign of CAN Bus In terface C ircu it Ba sed on SJA1000
YANG Hong
ke, LE IL i
ying
(1. N an jing Institu te of Industry Technology , N an jing 210016, Ch ina;
2. L oud i V oca tiona l Techn ica l Institu te, L oud i 417000, Ch ina)
Abstract: This paper p resents a kind of design of CAN Bus node based on MCS—51 and SJA1000, and its hand
ware and sofeware is expounded.
Key words: CAN Bus; SJA1000; Node
(责任编辑 周 源 )
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net