基于dsPIC30F6011单片机的CAN总线扩展技术

发布者:JoyfulSunflower最新更新时间:2011-12-05 关键字:dsPIC30F6011  CAN总线  扩展技术 手机看文章 扫描二维码
随时随地手机看文章
0 引 言
    CAN总线是一种串行多主站局域网总线,被广泛应用于汽车控制系统、自动控制、楼宇自动化、医学设备等各个领域。其传输距离远,最远可达10 km,传输速率高,最高可达1 Mb/s,容错性能好,可靠性能高。但是由于CAN驱动器的驱动能力有限,CAN总线能够驱动的节点数有限,一般在100个左右,同时会随着传输距离的增加,最高传输速率会下降,如果距离过长会引起信号丢失、反射等故障。在实验室条件下测得在5 Kb/s的通信速率下最远通信距离能达到10 km;在18 Kb/s的通信速率下最远通信距离只能达到2 km;而在42 b/s的通信速率下,最远通信距离只能达到1 km。测试条件:线缆采用线径为0.75 mm2的屏蔽双绞线,线缆为盘装,室内测试。在实验中,发现随着随着通信距离的增加,通信速率迅速下降,而CAN总线的驱动节点数量也次第下降。而在通信距离远,通信节点多的大空间场所,比如矿井、电力监控等系统需要CAN总线来传输数据和监控信息的场所,CAN总线不能满足要求。
    如果要实现通信距离远、通信速率高、总线节点数量多CAN总线系统,实现CAN总线的扩展,就需要一个CAN网关进行桥接,把CAN总线划分为几个子网,增加CAN总线通信节点,延长CAN总线的传输距离,提高CAN总线的传输速率。在研究基于PIC单片机的CAN网关设计和扩展的CAN总线网络拓扑结构。


1 CAN网关总体设计及总线拓扑结构
1.1 CAN网关总体设计
    CAN网关作为一种转发设备,连接在两个不同的CAN网络中,能够实时接收来自两个子网中的信息,根据需要筛选或者无条件地把接收到的信息转发到另外一个网络中。CAN总线层次结构分为物理层、数据链路层和应用层,工作于ISO/OSI参考模式下。CAN网关在物理层和数据链路层完成两个CAN网的连接。CAN网关结构图如图1所示。

    CAN网关可以作为透明网关和源路由网关。透明网关完全按照接收到的帧格式转发,不改变帧结构,对于用户,网关相当于透明的。而源路由网关由用户提供路由信息,网关按照路由信息对消息进行过滤和有选择性的转发。

1.2 CAN总线网络拓扑结构
    带有网关的CAN网络拓扑结构如图2所示。在这个网路中,PC机为主节点,而CAN节点作为从节点。在网络的顶层,由PC机和网关构成一个主网,在这个主网中PC机和CAN网关作为CAN节点,总线驱动器驱动能力可以带100个cAN节点左右。主网中的CAN网关再作为下一个子网中的主节点,而其他CAN网关或是CAN节点作为从节点,构成一个子网。这样通过CAN网关可以逐环把网络扩展下去,直到最底层的CAN节点。而在应用层上,用户可以把网关配置成透明网关或是源路由网光。透明网关不影响网络结构,CAN拓展网络形成一个多节点,远距离的网络。源路由网关对消息具有过滤性,根据用户的配置信息把CAN网络在应用层上划分为几个小网。

    这样,解决了节点容量、通信距离、通信速率的问题。[page]

2 网关的硬件设计
    硬件电路开发采用集成电路,开发周期短,成本低。CPU采用Microchip公司的16位单片机dsPIC30F6011作为核心部件,其内部集成了两个CAN控制器,支持CAN 2.0A/B协议,CPU的速度可以达到30 MIPS,程序存储器空间有132 KB,内部RAM有6 144 B,数据程序存储器有2 048 B,集成的功能强大,体积小,性价比比较高。物理层采用两个CAN驱动器PCA82C250。其中一组的PCA82C250的RXD,TXD引脚不是和CPUdsPIC30F6011直接连接,而在中间用光速光藕6N137隔离。
    单片机dsPIC30F6011有两个通用的UART口,可以作为和PC机或其他上位机通信的接口来用。另外,dsPIC30F6011采用TQPF封装64引脚,利用通用I/O驱动LED灯作为指示灯,预留并行液晶显示器和 4×4行列式键盘的接口。
    CAN控制器和驱动器部分采用了光电隔离器,因此电源设计部分要求有两个隔离的5 V电源。考虑到可以会用到液晶显示器,因此一路电源设计采用输出容量1 A的开关电源LM9076,而另外一路采用隔离DC/DC模块电源。这样CAN子网之间实现了电气隔离,如果一个网络出了问题并不影响另外一个网络的正常工作,提高了CAN网络的抗干扰性能。硬件电路设计外围电路少、设计简单、成本低。设计的CAN网关硬件设计系统框图如图3所示。

3 网关的软件设计
    CAN网关作为消息的转发器,要准确、实时地接收两个CAN发送的信息,并且要实时发出去。对于不断发出信息的问题节点要及时屏蔽,避免错误信息蔓延到另一个CAN网络。如果CAN网关被设置成透明网关则直接把一个CAN网络的信息转发到另外一个网络中即可,如果CAN网关被设置成和某个区间ID相关,则要做一些信息过滤和屏蔽处理。当CAN网关检测到总线有错误时,要通过备用的UART口将错误信息上发到上位机或其他信息处理主机。

[page]

    CAN网关的信息接收通过硬件中断来完成。当总线上有消息时,引起硬件中断,进入中断程序后根据中断标志位的区别把接收到的信息存放到相应的缓冲区中。缓冲区是一个FIFO的存储区。而主程序则一直检测两个CAN控制器对应的两个接收缓冲区,当检测到缓冲区不为空时则把缓冲区内的信息顺序发送到另一个网络中。从而形成一个具有一定的错误检测能力的双向通道,完成了两个CAN网络的信息转发。CAN网关的主程序框图如图4所示,中断程序框图如图5所示。

4 结 语
    详细介绍了CAN总线扩展技术的网络拓扑结构和系统构成,给出了CAN网关的硬件设计原理及软件设计框图。这样的CAN总线扩展网络,因为引入CAN网关而增加了消息的传递时间,但是这个增加的时间很小,是微秒级的,可以忽略不计。而带来的优势明显,因为把CAN网络在物理层上划分为几个网络,彼此之间不相互影响,因而增加了CAN网络的抗干扰性,同时,扩展灵活,只需要增加一个CAN网关来增加子网即可;通信速率可通过增加网关来提高,通信距离可以扩展到很远。通过CAN网关增加了CAN总线的容量、提高了CAN总线的通信速率、扩展了CAN总线的传输距离。

关键字:dsPIC30F6011  CAN总线  扩展技术 引用地址:基于dsPIC30F6011单片机的CAN总线扩展技术

上一篇:基于PIC16F874单片机的可编程电源的设计与应用
下一篇:基于PIC单片机的嵌入式CAN智能节点及其与PC通信

推荐阅读最新更新时间:2024-03-16 12:47

车用线束与CAN总线控制车内通信技术动向
在现代汽车上,电子控制系统与线束有着密切关系。如果把微机、传感器与执行元件的功能用人体来比喻,可以说微机相当于人脑,传感器相当于感觉器官,执行元件相当于运动器管。显然,只有头脑和各种器官,没有神经和血管,人体的手足将不能发挥应有的功能。 连接汽车的电气电子部件并使之发挥功能的电线束,就是起汽车中“神经与血管”的作用。线束是由构成电路的电线组成,它既要确保传送电信号,也要保证连接电路的可靠性,向电子电气部件供应规定的电流值,防止对周围电路的电磁干扰,并要排除电器短路。 汽车的线束从功能来分,有传递传感器输入指令的信号线和运载驱动执行元件(作动器)电力的电力线二种。信号线是不运载电力的细电线(光纤维通信),电力线则是运送大电流的粗电
[嵌入式]
CAN总线接口保护电路设计指南
CAN总线 的应用范围广,应用环境相当复杂,一些静电、浪涌等干扰很容易耦合到总线上,并直接作用于 CAN总线 接口。为了满足一些高等级EMC的要求,有必要添加额外的外围保护电路。 为什么需要保护电路 一般的CAN收发器芯片ESD、浪涌防护等级较低,如SM1500隔离CAN收发器虽隔离耐压为3500VDC,裸机情况下,CAN接口ESD可达6kV,但无法满足常见的浪涌测试要求。工业产品对通信接口的EMC等级要求较高,许多应用要求满足IEC61000-4-2静电放电4级,IEC61000-4-5 浪涌抗扰4级等要求,在此情况下,必需增加必要的保护电路,才能满足要求。 接口保护及工作原理 1. 推荐电路 图1为CAN
[汽车电子]
<font color='red'>CAN总线</font>接口保护电路设计指南
基于CAN总线的镍氢电池管理系统
  1 前言   蓄电池剩余容量的准确测量在电动汽车的发展中一直是一个非常关键的问题。有效的电池管理系统有利于电池的寿命提高。所以对蓄电池SOC的准确估计成为电动车电池能量管理系统的中心问题。如果能够正确估计蓄电池的SOC,就能合理利用蓄电池提供的电能,延长电池组的使用寿命。   方案采用总线式方式组网,应用现场总线完成各个节点之间的数据交换。在分布式方案中,多能源控制器为主控ECU,它通过现场总线和多个下位ECU通信。工作过程中,每个控制器的通信子模块以定时器或者中断的方式在后台运行,完成数据的收发工作,节省主流程资源开支。如图1所示。   电池的SOC值是电池控制器通过CAN总线发送给多能源控制器,而整车的工作
[电源管理]
基于<font color='red'>CAN总线</font>的镍氢电池管理系统
CAN总线局部网络管理机制及实现
近年来,汽车的节能问题备受关注,消减不必要的能源损耗是一种非常有效的方法。当前,大多数车辆在点火钥匙打到OFF档之后,部分功能仍需要使用,例如:车辆防盗、电子驻车功能等。为了降低电量消耗,避免蓄电池电量消耗过多导致汽车无法启动,需要KL30节点在OFF档之后能进入低功耗状态,关闭大部分不需要的功能,尽可能减少电量消耗。对于分布式功能网络,由于连接到总线上的节点需要协同工作,所以各节点遵循同样的协议以实现同步睡眠及唤醒。 当前,大多数的车辆都是遵循OSEK或者AUTOSAR网络管理协议,来实现节点休眠唤醒功能的。由于目前车辆的电子电气系统越来越复杂,KL30节点也越来越多,当前的网络管理协议也逐渐呈现出一些弊端。例如:IG OF
[嵌入式]
CAN总线和CANopen到底是什么样的关系?
不管有多少设备,往双绞线(CANH、CANL)上面一挂,在各个单元中只需要通过对CAN控制器的读和写就能实现必要的数据接收和发送了啊,这就构成了一个CAN总线系统。那么CANOPEN到底是干啥的?   CANopen是协议。它规定了许多的规约,你必须去遵守。这样一来可以对网络上的各个节点进行更加高效的管理。相像一下,如果让你控制主机来对网络上的30个节点来分别读取10帧的数据,你都点多少次按钮。而如果网络上的各个点都用到了CANopen协议。那行,你只需要在主节点进行一个非常简单的设置,再按一下按钮,就能实现上面的操作了。CANopen协议在形式上也是一些代码。
[嵌入式]
基于CAN总线的单片机与数字信号处理器通信系统设计
0 引 言 众所周知,虽然目前8位单片机正逐渐被速度高,性能强的16位或32位微处理器所取代,但8位单片机仍以其低廉的价格、丰富的外围芯片以及众多的多功能产品而在低端应用市场占据主流地位。数字信号处理器(Digital Signal Processor,DSP)作为一种具有高速数字信号处理能力的新型单片机,在通信、自动控制、航天航空、军事、医疗等领域广泛应用。在比较复杂的测控系统中,如微机电动机保护装置,要求在毫秒级的短时间内对电动机实现实时保护和测量,所以对装置硬件系统的实时数据处理能力要求较高,而传统的基于单 CPU微处理器的方案己经难以胜任。因此,这里采用数字信号处理器与单片机构成的双CPU结构。由数字信号处理器完成多
[单片机]
基于<font color='red'>CAN总线</font>的单片机与数字信号处理器通信系统设计
基于MCP2515的CAN总线扩展
    CAN(Controller Area Network)即控制器局域网络总线,是德国Bosch公司在1986年面向汽车各子系统间通信而开发出的通信协议,被认为是目前最有前途的现场总线之一,广泛应用于工业自动化监控网络中,具有高质量、低成本、易实现、安全性高的特点。TMS320F2812数字信号处理器是TI(Texas Instruments)美国德州仪器公司最新推出的32位定点DSP控制器,是目前控制领域最先进的处理器之一,其频率高达150 MHz,提高了控制系统的精度和芯片的处理能力。TMS320F2812本身集成了一路CAN总线接口,仅依靠TMS320F2812不能满足本测试设备对双冗余的CAN总线设计要求。文中采用TM
[嵌入式]
基于ARM的CAN总线智能节点的设计
摘要:CAN总线是一种应用广泛的实时性现场总线,提出了基于具有ARM7TDMI内核的32位微控制器的CAN总线智能节点设计方案。详细介绍了ARM控制(LPC2294)的特点、智能节点的结构以及系统软件设计,同时结合现场实际使用给出了硬件抗干扰措施。 关键词:CAN总线 ARM 嵌入式控制器 CAN(Controller Area Network)即控制器局域网,CAN总线是国际上应用最广泛的现场总线之一。它最早是由德国Bosch公司推出的,CAN通信协议是一种用于汽车内部测量与执行部件之间的数据通信协议。 作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,CAN总线已被广泛应用于各个自动化控制系统中。例如
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved