基于ARM处理器的网关通信模块研制

发布者:数字火箭最新更新时间:2012-07-23 来源: 现代电子技术 关键字:CAN总线  ARM  MVB总线 手机看文章 扫描二维码
随时随地手机看文章
    MVB多功能车辆总线是在国际标准IEC61375列车通信网络(TCN)中被详细定义的一种现场总线,按照TCN标准,列车通信网分为两级,第一级绞线式列车总线实现车辆间的数据通信,第二级多功能车辆总线MVB主实现同车辆内各个功能控制单元之间的数据通信。MVB以其高实时性、高可靠性及可管理性等多方面的优势而广泛应用在列车总线控制当中。但是由于MVB是专门针对列车通信网络而开发的,其实用范围、供货商、经济型均不如CAN总线。CAN总线作为现场设备级的通信总线具有很高的可靠性和性价比。目前很多机车车辆的列车通信网络系统都采用MVB总线和CAN总线共同组成的异构网络。因此,本文提出了一种基于μC/OS-Ⅱ的ARM7内核芯片LPC2294的MVB-CAN双向通信模块。

1 MVB多功能车辆总线
    MVB是国际标准IEC61375-1的车辆总线部分,它主要用于具有互操作性和互换性要求的互联设备之间通信的串行数据总线。MVB采用主帧/从帧应答方式,可以实现设备和介质冗余,实时性靠RTP实时协议保证。MVB介质分为3种:电气短距离介质为RS 485差分传输导线对,传输距离为20 m;电气中距离介质为双绞屏蔽线,传输距离为200 m;电气长距离介质为光纤,传输距离为2 km。
    MVB作为主从方式的串行通讯总线,是可以实现过程控制优化的总线。MVB具有良好的实时响应,一般用作车辆内部设备之问的数据通信,其采用曼彻斯特编码方式,数据传输速率为1.5 MHz。MVB多功能车辆总线主要由通信介质、MVBC协议控制器和MVB链路软件3部分构成。
    MVB具有2种帧格式,一种是只能由总线主设备发送的主设备帧,简称主帧;另一种是为响应主帧而由从设备发送的从设备帧,简称从帧。总线主设备在每一个特征周期里通过发主帧的方式对进程数据进行轮询,相应地从设备发送从帧进行真正的数据传输。报文由主帧和响应此主帧而送出的从帧组成。一个主帧应以主起始分界符开始,其后为16 b帧数据,接着为8 b校验序列。
    一个从帧应以从起始分界符开始;接着为(16,32,64,128或256)b帧数据,在每64个数据位包含一个8 b的校验序列,当帧数据只有16 b或32 b时将一个8 b的校验序列附加其后。

2 CAN总线
    控制器局域网(Conteoller Area Network,CAN)是国际上应用最广泛的现场总线之一,最早由德国BOSCH公司推出,是一种用于汽车内部测量与执行部件之间的数据通信协议,CAN总线作为一种技术先进,可靠性高,功能完善,成本合理的远程网络通信控制技术,CAN总线已被广泛应用于各个领域。它为分布式控制系统实现各功能节点之间实时、可靠的数据通信提供强有力的技术支持。其报文结构可以分为2种不同的帧格式,两种帧格式的不同之处为标识符的长度不同:具有11位标识符的帧称为标准帧,具有29位标识符的帧称为扩展帧。本设计中主要考虑标准帧的情况。标准帧的报文由4种不同类型的帧构成表示:数据帧、远程帧、出错帧和超载帧。以数据帧为例:数据帧由7个不同部分构成:帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束。

3 通信网关模块硬件设计
    网关模块的硬件框图如1所示。

a.JPG


    处理器采用基于ARM7的LPC2294。LPC2294是一款基于16 b/32 b ARM7TDMI-S内核,内带16 KB RAM和256 KB高速FLASH的微处理器,最
大时钟速率60 MHz。内带2路CAN通道,其CAN控制器集成了数据链路层功能,符合CAN2.0A和CAN2.0B的规范。
    CAN收发器采用Philips PCA82C250。主要提供对总线的差分发送能力和对CAN控制器的差动分接收能力。微处理器对CAN控制器进行相应配置后,收发器自动完成相应的CAN总线动作。

b.JPG


    MVB通信控制器采用MVBC02专用芯片,它采用16 b数据总线,提供了丰富的接口控制信号,简化了与各种宿主CPU以及通信存储器的接口设计,支持MVB协议中链路层及物理层的功能。MVB物理层接口采用电气短距离介质ESD+接口,系统信号通道使用光耦实现主系统与外界的电隔离,从而提高了系统的可靠性。使用RS 485芯片LTC1485I作为收发器,并使用过压保护模块以防止瞬间过压对器件造成损坏。MVB物理层接口电路如图2所示。
[page]

4 软件实现方案
    在本设计中,关键是实现MVB总线和CAN总线之间的数据交换,它具有MVB检测和接入功能,以及CAN总线检测和接入功能,通过处理器控制数据帧的解析和重新封装,实现符合CAN总线V2.0规范和MVB标准格式帧的相互转换。因此从CAN侧接收到的数据要通过MVB传输,就需要按照一定的格式把CAN帧中的数据组合成MVB帧的数据格式;同样从MVB侧接收到的数据要通过CAN传输,也需要按照一定的格式对MVB帧中的数据进行分帧处理。另外,为了实现透明传输需要在MVB端口中将各种变量的含义按照一定的规则和CAN总线侧帧的标识符等信息对应,从而形成一个表格,同样在CAN总线侧也将CAN侧的标识符与MVB侧的过程数据的数据集进行对应形成表格。
    软件主要由主函数调度模块、MVB控制模块、CAN控制模块以及2个数据缓冲组成。当CAN应用层有数据要发送到MVB网络时,主函数需调度模块得到CAN数据传输后调度CAN控制模块接收数据,解码分析获取标识符,依据标识符查询索引表找出对应MVB端口相关变量,后将报文中的相关数据提取出来发送到数据缓冲区B。主函数调度模块通知MVB控制模块从缓冲区B中提取数据,并进行完整的MVB报文封装,发送到MVB总线上,释放缓冲区B。反过来,当MVB应用层有数据要发送到CAN节点时,首先,数据发送到MVB上,主函数调度模块检测MVB上是否有数据传输,通知MVB控制模块接受数据,并对信息解码分析,从中获取端口相关变量,依据端口相关变量查询索引表找出对应CAN标识符,同时将数据发送到数据缓冲区A。此时,总调度模块通知CAN控制模块从缓冲区A中提取数据,并进行完整的CAN报文封装,发送到CAN总线上,释放缓冲区A。CAN控制模块主要负责从CAN数据包中解析出完整CAN协议报文,存入数据缓冲区B。同时,将数据缓冲区A中的CAN数据封装成完整的CAN协议报文后发送到CAN总线上。MVB控制模块主要负责从MVB数据包中解析出完整MVB协议报文,存入数据缓冲区A。同时,将数据缓冲区B中的MVB数据封装成完整的MVB协议报文后发送到MVB上。总调度模块主要起到综合调度和监控作用,同时,它还用于整个传输过程中的中断响应。
    图3说明了软件流程框图。

c.JPG



5 结语
    本文描述了基于ARM7处理器LPC2294的MVB-CAN通信模块的实现方法,概述了MVB网络和CAN总线网络的报文结构,提出通信模块的硬、软件实现方法。通过考核该通信模块实现了MVB与CAN总线间的数据传递,其性能稳定,可靠性高。各种现场总线都有各自应用特点及优势。所以,多类型总线异构组网方式在列车通信网络中的应用越来越广泛。MVB及CAN总线的异构组网方式具有广阔的市场前景。MVB-CAN通信模块的设计为列车通信网络的多元化发展提供了支持,也为其他网络异构组网(例如:RS 485/RS 422-MVB,HDLC-MVB等)方式的网络通信模块设计提供了参考。

关键字:CAN总线  ARM  MVB总线 引用地址:基于ARM处理器的网关通信模块研制

上一篇:基于ARM+Linux 的仪器控制系统设计
下一篇:S1D13506显示控制器与AT91RM9200的接口设计

推荐阅读最新更新时间:2024-03-16 13:04

ARM学习之路(一) linux操作指令学习
一linux操作指令学习 1 ls a,ls l 查看文件。ls ./tmp/查看当前目录下tmp里面的东西 2 useradd lilu 添加用户lilu 3 cp r 目录,cp 文件 4 cd ..返回上一层 cd -返回上一步, 5 mv f强制删除文件,mv rf强制删除目录 6 mkdir 创建目录mkdir p创建没有路径的目录 7 tar cvf name.tar 打包 8 tar xvf name.tar 解压打包的文件name 9 tar cvzf name.tar.gz 打包压缩 10 tar xvzf name.tar.gz 解压 11 df k 查看磁
[单片机]
基于Android的ARM汇编语言系列之一:ARM汇编语言开篇
章节列表 之一:ARM汇编语言开篇 之二:C/C++程序生成ARM汇编程序的过程分析 之三:ARM汇编语言程序结构 之四:ARM处理器的寻址方式 之五:ARM指令集与Thumb指令集 之六:NEON指令集与VFP指令集 这是博文的开篇文章,这里会先介绍一下ARM处理器的大致分类和作用。 一 ARM处理器与ARM指令集 整个ARM处理器被分为三个部分: Classic Embedded Application Classic被称为经典系列。 ARM1~ARM11一直都以数字来命名,ARM12以后改为用Cortex命名。Cortex有以下几个分类: Cortex-A:广泛用于智能手机、上网本、电子书以及
[单片机]
基于Android的<font color='red'>ARM</font>汇编语言系列之一:<font color='red'>ARM</font>汇编语言开篇
ARM异常---一个Uart中断的触发处理过程
首先给出一些定义: //2440addr.inc INTOFFSET EQU 0x4a000014 ;Interruot request source offset //option.inc _ISR_STARTADDRESS EQU 0x33ffff00 //2440init.s MACRO $HandlerLabel HANDLER $HandleLabel $HandlerLabel sub sp,sp,#4 ;decrement sp(to store jump address) stmfd sp!,{r0} ;PUSH the work regi
[单片机]
基于CAN总线的分布式电池管理系统
摘要:主要探讨了汽车和电动汽车数字化技术、计算机控制系统的结构以及现场通讯的相关问题。以蓄电池能源系统为应用背景,研究和设计出采用双CAN总线作为内外通讯方式及具有多模块分布式结构的管理系统。该系统分为若干模块,分别实现各自独立的功能,包括数据采集、测量多路电压、电流和温度、进行电量估算和通讯管理以及大液晶屏的显示。     为满足系统发展所需要的高性能、安全性和可扩展的要求,提出双CAN总线通讯、分布处理的管理系统结构思想。重点介绍了CAN总线设计、电路和应用的技术问题。关键词:电池管理系统;CAN总线;分布结构;电动汽车 Distributed Battery Management System Basedon CAN
[电源管理]
基于<font color='red'>CAN总线</font>的分布式电池管理系统
基于STM32的CAN总线通信程序
#include #include sys.h #include delay.h #include CAN.h CAN_msg CAN_TxMsg; //发送邮箱 CAN_msg CAN_RxMsg; //接收邮箱 u8 CAN_TxRdy=0; //发送就绪标志 u8 CAN_RxRdy=0; //接收就绪标志 u8 CAN_TDTxR_DLC; //数据长度,最高为1111 /////////////////CAN设置///////////////////////////////////// void CAN_setup(void) { u8 brp=20;
[单片机]
ARM嵌入式平台的VGA接口设计
大多数嵌入式产品的显示终端都选择LCD,但在某些需要大屏幕显示的应用中,工业级LCD的价格比较昂贵,且现有的大屏幕显示器(包括CRT显示器和LCD显示器)一般都采用统一的15针VGA显示接口。三星公司ARM9芯片S3C2410以其强大的功能和高性价比在目前嵌入式产品中得到广泛的应用。笔者在开发基于ARM嵌入式平台的血液流变测试仪的过程中,成功地利用高性能视频D/A转换芯片ADV7120,将S3C2410自带的LCD扫描式接口转换为VGA接口,使之能够驱动VGA接口的显示器。 1 VGA接口介绍 近年来,业界制定出了众多数字化的显示接口协议,较为典型的是DVI(Digital Visual Interface)。由于数字接口的标
[嵌入式]
软件定义汽车 硬件经久耐用力提升
随着行驶里程数的累积, 软件定义汽车 将带给车主更好的使用经验。但以软件为中心的设计方法代表开发典范的改变,以及经久可用的硬件能力。 图一 : 软件定义汽车 能够提供车主更细致、回馈更好的车主体验。(source: Arm ) 软件定义汽车 ,让车界长期认定的「新车交车那刻就是车况的巅峰」不再适用。今日汽车市场的新参与者正在颠覆这个产业铁律,并向新车买家承诺其用车体验会越来越好。 软件定义汽车的吸引力相当明显。藉由智能型装置的使用,消费者已经体验到智能型装置可以轻松升级,应用程序及错误也可以透过无线方式进行更新与排除。随着消费者对于更高阶的自动驾驶的兴趣与日俱增,整个产业也有志一同的朝着电动化动力系统、以及可在车上达成如
[汽车电子]
软件定义汽车 硬件经久耐用力提升
arm汇编之冒泡排序
开始在ADS里面写程序后,发现自己之前对于X86汇编的学习完全归还给了我的老师门。最直接的便是要写一个从小到大的冒泡排序。冒泡排序的思想我想就不用赘述了。以前c语言遍的应该很多了。算法不成问题,可是数据结构知道是数组,可是数组在arm汇编里面该在怎么定义了? 其实,还真感觉又要从零开始了。X86的汇编已经完全归还给了我敬爱的微机原理老师。 网上看到了一个广为流传的冒泡排序,既然写不出来,那就先学习它的精髓,说不定还能为我所用了。 代码详细的看了看。具体翻译如下(arm汇编指令不太熟悉,就当时温习吧): AREA Sort,CODE,READONLY :首先用AREA伪代码加上CODE,表明下面引出的将是一个代码段(于
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习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