I 匐 似 CAN总线技术及其应用 CAN bus technology and its application 韩成浩 ,高晓红’ HAN Cheng.hao1-一.GAO Xiao.hong1 (1.吉林建筑工程学院电气与电子信息工程学院,长春130021;2.吉林大学机械科学与工程学院,长春130022) 摘要:CAN总线技术是较实用的现场总线技术。文中分析了CAN总线控制器和驱动器的内部结构 和工作原理,介绍了CAN总线技术在智能小区单元门禁控制系统设计中的应用,重点阐述了 CAN总线的硬件电路设计和SdA1 000总线控制器的初始化和接收、发送报文的软件设计。 关键词:CAN总线技术;仲裁机制;报文传输;SUA1 000控制器 中图分类号.TP211+.5 文献标识码A 文章编号.1 009-01 34(2oi 0)02-0146-04 0引言 1986年德国最大的工业企业之一Rober Bosch 公司首次提出了应用于汽车内各种传感器和执行器 之间相互通信的CAN总线(Controller Area Network)技术以来,以其可靠性、实时性和灵活性 强的特点,得到了诸多汽车开发商的青睐。本文介 绍了CAN总线的通信协议,分析了CAN总线控制 器SJA1000和驱动器PCA82C250的内部结构和工作 原理,主要阐述了CAN总线技术在智能小区门禁控 制系统中的应用。 时间t 1 CAN总线的特点 图1 CAN总线的位数值传输方式 1.1 CAN总线的位数值表示与通信距离 CAN总线协议是建立在国际标准组织的开放系 统OSI 7层互连参考模型基础之上的。其模型结构 只有3层,即只取OSI底层的物理层、数据链层和 1.2报文传输 CAN技术的报文传输为多主方式工作,网络上 任意节点均可在任意时刻主动地向网络上其它节点 发送信息,而不分主从。CAN节点只需通过对报文 的标示符滤波即可实现点对点、一点对多点及全局 应用层,保证了节点间无差错的数据传输。 CAN总线上用“显性”(Dominant)和“隐性” (Recessive)两个互补的逻辑值表示“0”和“1”。如 图1所示,VCNA—H和VCAN—L为CAN总线收发器 与总线之间的两接口引脚,信号是以两线之间的“差 分”电压形式出现。在隐性状态,VCNA—H和VCAN— L被固定在平均电压电平附近,Vdif近似于0。显性 广播等几种方式发送、接收数据。 CAN总线的数据传输(报文传输)采用帧格式。 按帧格式的不同,分为含有11位标识符的标准帧和 含有29位标识符的扩展帧。CAN总线的帧类型分为 数据帧、远程帧、错误帧和过载帧。 位以大于最小阀值的差分电压表示Ⅲ。CAN总线的 1.3仲裁(Arbitration) 只要总线空闲,任何单元都可以开始发送报 文。如果两个或两个以上节点同时开始传送报文, 通信距离最远可达10Kin(位速率为5 kbps),通信速 率最快可达1Mbps(此时最长通信距离为40m)。 收稿日期:2009—07-22 基金项目:建设部科研计划资助项目(2007.K9—34) 作者简介:韩成浩(1972一),男,吉林图们人,副教授,硕士,研究方向为信息采集和处理技术及智能控制。 [1461 第32卷第2期2010—2 务I 那么就会有总线访问冲突。通过使用标识符的逐位 仲裁可以解决这个冲突。仲裁的机制确保了报文和 时间均不损失。当具有相同标识符的数据帧和远程 化 的报文,才能被保存在接收缓冲器中。 位流处理器(BSP)是一个控制发送缓冲器、接 收FIFO和CAN总线之间数据流的程序装置。它还 执行总线上的错误检测、仲载、总线填充和错误处 帧同时发送时,数据帧优先于远程帧 。在仲裁期间, 每一个发送器都对总线进行监测,如果发送和接收 电平相同,则该节点可以继续发送报文。比如发送的 是一“隐性”电平,而监视到的是一“显性”电平, 理。位时序逻辑(BTL)监视串行的CAN总线和位 时序。它在信息开头“弱势支配”的总线传输时,同 步CAN总线位流(硬同步),接收报文时再次同步 那么这个节点就失去了仲裁,必须退出发送状态。 2 CAN总线控制器和驱动器 2.1 CAN总线控制器SJA1000的内部结构 CAN总线控制器主要保证数据链路层和物理层 的通信质量。SJA10o0是一种独立的CAN总线控制 器。SJA1000的内部结构如图2所示。 控制总线 接口管理逻辑 8位地址/ 数据总线 内部总线 报文缓冲器 TXO 位流 位时序 TX1 l发送 处理 逻辑 RXO 缓冲器 器 RX1 lI缓冲器l磊] 验收 错误管 ....................._’J 滤波器 理逻辑 图2 SJA1000内部结构图 各功能模块的作用如下: 接口管理逻辑(IML)负责解释来自CPU的命 令,控制CAN寄存器的寻址,向主控制器(CPU) 提供中断信息和状态信息。发送缓冲器(TXB)是 CPU和位流处理器(BSP)之间的接口,负责存储 发送到CAN总线上的一条完整的报文。发送缓冲器 的长度为13个字节,由CPU写入、位流处理器读出。 接收缓冲器(RXB、长度为13个字节)是验收 滤波器和CPU之间的接口,用来存储从CAN总线 上接收并被确认的信息。作为接收FIFO(RXFIFO, 长度为64字节)的一个窗口,接收缓冲器可被CPU 访问。CPU在接收FIFO的支持下,可以在处理一条 报文的同时接收其他报文。 验收滤波器(ACF)将一条接收到的报文标识 码与验收滤波器中的预设值相比较,以决定是否接 收这条报文口】。在纯粹的接收测试中,所有的报文都 保存在接收FIFO中,但只有验收滤波通过且无差错 下一次传送(软同步)。 错误管理逻辑(EML)负责限制传输层模块的错 误。它接收来自位流处理器的出错报告,然后把有关 错误统计告诉位流处理器和接口管理逻辑(IML)。 2.2 SJA1000的内部寄存器 SJA1000有两种工作模式,即BasicCAN模式和 PeliCAN模式。在这两种模式中,SJA1000寄存器 从数量、地址分配到功能等方面都有所区别。 SJA1000在复位状态下的默认模式为BasicCAN模 式。CAN控制器在两种模式中又都有两种状态模式, 分别称为操作模式和复位模式。处在这两种不同状 态的模式中,对寄存器的访问操作功能是不同的。 SJA1000的控制寄存器、命令寄存器、状态寄 存器、发送缓冲器(均为8位)等各种寄存器分配 在0~31地址单元中。设置各寄存器中的参数可实 现不同的操作功能H】。 2.3 CAN总线驱动器PCA82C250 总线驱动器PCA82C250是CAN控制器与物理 总线之间的接口。该器件对总线提供了差动发送能 力,同时对CAN控制器提供了差动接收能力。它可 以用高达1Mbps的位速率在两条有差动电压的总线 上传输数据,总线可连接l 10个节点。总线驱动器 PCA82C250的功能参如图3所示。 图3 PCA82C250的功能框图 图3中,引脚8(Rs)用于选定PCA82C250的 第32卷第2期2010—2 11471 1 工作模式。PCA82C250的工作模式有3种,即高速 模式、斜率控制模式和待机模式。对于高速工作模 式,发送器的输出级晶体管尽可能快速启动和关闭。 在这种模式下,不采取任何措施限制上升和下降的 勺 化 要。SJA1000的初始化只有在复位模式下才能进行, 初始化的关键是设置SJA1000内部寄存器的参数。 其包括:设置工作方式、设置接收滤波方式,设置 斜率。采用斜率控制模式(Slope Contro1),可降低 射频干扰。 接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)、 设置波特率参数和中断允许寄存器(IER)等。在完 成SJA1000的初始化设置以后,返回工作状态,进 辩3 CAN总线技术应用设计 行报文的发送和接收通信。图5为SJA1000的初始 化程序流程图。 3.1硬件电路设计 初始化 利用CAN总线技术实现了智能小区单元门禁控 开始 设置总线定时寄存器 制器和小区保安部门之间数据的快速、准确传递,提 高了小区智能化管理水平。图4为小区单元门禁控制 关闭SIA1000 器的CAN总线通信部分电路。值得注意的是控制器 所有中断源 设置输出控制寄存器 AT89S52为高电平复位,而SJA1000为低电平复位。 为了增强CAN总线各节点的抗干扰能力, SJA1000的TX0、RX0和PCA82C250之间设置光电 耦合器TLP521-2(即图4中的U3),实现了CAN总 线上各用户之间的电气隔离。同时,两根总线与地 之间分别接了一个防雷击管P6KE6.8,当两输入端 与地之间出现瞬变干扰时,通过防雷击管的放电可 墅 盼 是 起到一定的保护作用f5 。 入栅 式一 豁 1.设置时钟分频寄存器 2选择Basi” cCAN模式 打开SJA1000 另外,PCA82C250的CANH和CANL之间接 或PeliCAN模式 所有中断源和 单片机的外部中断0 l20Q阻抗匹配电阻是非常必要,否则会影响总线的 数据传输距离和传输质量。 设置接收屏蔽寄存器 设黄接收代码寄存器 初始化 3.2 CAN总线的软件设计 结束 CAN总线技术的软件设计主要包括:CAN总线 图5 SJA1000初始化程序流程 控制器的初始化、报文发送和报文接收。SJA1000总 发送报文子程序负责完成报文的发送。发送时 \ 线控制器的初始化对CAN总线的正常工作非常重 式一 用户只需将待发送的报文按特定格式组合成一帧报 / +SV +jⅦ +jv T 鼬 j00 t,3 n R5 啪 D2 瞵_8 图4 CAN总线硬件电路设计 [1481 第32卷第2期2010—2 习竺 羹图7接收报文程序流程图 图6发送报文程序流程图 信方式,保证了报文传输的可靠性、准确性、快速 文,送入SJA1000发送缓存区中,然后启动SJA10o0 性和实时性。正因为如此,国外很多公司生产的控 制芯片内置CAN总线控制器(如:Philips公司生产 的发送位,即可发送报文。以查询方式发送报文的 程序流程如图6所示。 的P8xC591、Atmel公司生产的AT90CAN128等器 接收报文子程序负责完成报文的接收以及其他 件),方便了用户的使用,缩短了开发周期。 情况处理。接收子程序比发送子程 参考文献: 序要复杂一些,因为在处理接收报文的过程中, [1]甘永梅,李庆丰等.现场总线技术及其应用[MI.北京:机械 同时要对总线关闭、错误报警、接收溢出等情况进 工业出版社,2005. 行处理。图7为以查询方式接收报文的程序流程图。 [2]饶运涛,邹继军等.现场总线CAN原理与应用技术【M】.北 京:北京航空航天大学出版社,2004. 4结论 [3】姜幼卿,左国华等.基于CAN总线的温室自动控制系统的 通信设计[J]_仪表技术与传感器.2005(4):60・62. CAN总线技术是较实用的现场总线技术,该总 【4】邬宽明.现场总线技术应用选编(1)【M】.北京:北京航空航 线以CAN总线控制器和驱动器为硬件基础,采用了 天大学出版社,2003. 开放式仲裁机制和“隐性”、“显性”位信号差分通 【5]张毅刚.单片机原理及应用[M】.北京:高等教育出版社,2007. 蠢‘ k 如‘ 兜I 靠‘{岛‘ 岛‘ 量‘ 靠● ‘. 岛‘ 蠢‘ 岛‘ 矗‘ 岛‘. ‘. 岛‘ 岛‘ 蠢● 盎● 岛● 蠢● 岛I 【上接第88页l 佳路径搜索方法,该算法能在较复杂障碍物环境情 径规划【J】.控制与决策,2004,l9(2):168—170. 况下有效的绕开障碍物规划出一条最优全局路径, 【4]M Dorigo,G Di Caro.Ant Algorithms for Discreat Opetimiza- 该方法过程简单,容易实现,并通过仿真实验验证 don[J].Artificial Life,2007,(5):137-172. 【5】陈雄,袁杨.一种机器人路径规划的蚁群算法[J].系统工程 了该算法的有效性。 与电子技术,2008,30(5):952.955. 参考文献: 【6】N.Meuleauand,M.Dofigo.AnicolonyoPtimizationandstoehas— tiegradientdescent[J1.Artif.Life,2002,8(2):103-121. 【1】曲道奎,杜振军,徐殿国.移动机器人路径规划方法研究[J]. 【7】Duan H B,Wang D B,Zhu J Q.Anovel method based on ant 机器人,2008,30(2):97—106. colony optimization algorithm for solving il1.conditioned [2】Tamba,Tua Agustinus,Mobile Robot Contr—olArchitecture linearsystems of equations[J].Journal of System Engineering for Reflexive Avoidance of Moving Obstacles【J】.Advanced and Electronics,2005,16(3):606-610. Robofi—CS,2008,22(4):13—16. [8】张勇德,黄莎白.多目标优化问题的蚁群算法研究[J】.控制 【3】樊晓平,罗熊.复杂环境下基于蚁群优化算法的机器人路 与决策,2005,20(2):1 70—173. 第32卷第2期2010-2 [14gl