基于CAN总线和虚拟仪器技术的汽车CAN节点测试仪设计

发布者:dong125612最新更新时间:2012-01-06 关键字:CAN总线  虚拟仪器技术  CAN节点测试仪 手机看文章 扫描二维码
随时随地手机看文章
  引 言

  Controller Area Network(控制器局域网,缩写为CAN),是为解决汽车电子控制单元间的信息通信而由德国Bosch公司提出的一种总线标准,以其卓越的性能、极高的可靠性和低廉的价格,现在已经在汽车领域获得广泛应用。

  为了保证汽车CAN总线节点安全、稳定运转,同时为了提高大批量生产的效率,必须在生产过程中对CAN节点产品进行测试,开发基于CAN总线的汽车CAN节点测试仪显得十分重要。本文通过选择高速处理器和采用虚拟仪器技术保证测试仪的通用性,使其只需通过软件更新便可测试多个CAN节点。

  CAN协议简介

  CAN协议建立在ISO/OSI 7层开放互连参考模型基础之上,为了方便应用,同时保证各节点间无差错的数据传输,仅定义了ISO/OSI模型中最下面的两层:数据链路层和物理层,应用层协议由用户自行定义,也可采用一些国际组织制订的标准协议。

  CAN是一个典型的以半双工方式通信的串行总线结构形式,一个节点发送信息,多个节点接收信息。不同于主从式总线,CAN采用一种称作广播式的存取工作方式,是一种对等式的总线网。在CAN总线的通信协议中,各节点地址没有主/从的概念,也没有任何与节点地址相关的信息存在。信息以报文的形式出现,其数据结构如图1所示。

  仲裁域用来表明消息的类型和消息的优先级,CAN总线上的节点将根据标识符决定是否需要读取信息包中的数据,从而避免了不必要的节点处理总线上信息的频繁中断,提高了数据传输速率,保证了数据出错率极低。

  系统硬件设计

  测试仪的硬件设计主要包括三部分:处理器及其存储器电路、CAN总线接口电路、RS232接口电路。

  处理器采用ATMEL公司基于ARM920T内核的AT91RM9200,该处理器运行频率高达180MHz,可外扩32MB Flash和64MB RAM,使其可以满足大多数汽车CAN节点的测试需求。片上集成了许多标准接口,如USB主/从接口、以太网、RS-232,使其可以简单得与PC机相连,测试数据可以实时地上传到PC机,借助PC机强大的处理性能和丰富的数据处理软件,进行在线监测及数据处理。

  AT91RM9200包括一个高速片上SRAM工作区及一个低等待时间的外部总线接口,以完成应用所要求的片外存储器和内部存储器映射外设配置的无缝连接。外扩存储器包括1片S29GL256N Flash和2片K4S561632A-TC/L80 SDRAM,Flash容量为32MB,SDRAM容量为64MB。

  CAN总线接口电路包括总线控制器和物理层接口两个部分,实现测试仪与被测试CAN节点的CAN总线通信,这是实现测试的前提。CAN总线控制器采用PHILIPS公司的SJA1000,它有着更好的性能和稳定性,支持CAN2.0A/B协议,有两种工作模式:Basic CAN和Peli CAN,可同时支持11位和29位标识码,能挂载更多CAN节点。物理层接口选用TJA1054实现,它可以连接高达32个节点,内建斜率控制功能及CANL和CANH总线输出的良好匹配使电磁辐射EME很低,具有优异的总线故障管理能力,总线故障时自动切换到单线模式,故障修复后自动复位到差分模式,同时提供对电源和地的短路保护功能,特别适合于汽车内部的CAN通讯。

  RS232接口电路即测试仪与PC的通信接口,AT91RM9200内部带有UART控制器,可以方便得与PC机连接,对测试信息进行在线监测,数据存储。

  软件设计

  软件设计包括上位机程序和下位机程序两个部分。上位机程序在NI公司专门针对虚拟仪器开发设计的的Labwindows/CVI平台上开发,包括USB通讯程序和测试程序两个部分。labwindows/CVI包括对众多总线(包括PCI、PCI Express、PXI、PCMCIA、USB、以太网、GPIB、串口和IEEE 1394)的支持,可以方便得开发RS232通讯程序。测试程序包括人机交互界面(即仪器面板)和测试记录两个部分,Labwindows/CVI提供了丰富的控件,可以迅速开发仪器面板,省去了在下位机上开发人机交互界面(主要是指LCD和按键),所开发的仪器面板界面。
   
  
下位机程序采用linux作为测试仪的操作系统,采用较新的linux-2.6.13内核,使软件设计模块化,便于移植。软件主要包括通讯程序和测试程序两大部分。通讯程序包括CAN总线通讯程序和USB通讯程序两个部分,本文主要介绍一下CAN通讯程序。

  CAN通讯程序包括SJA1000芯片的初始化、接收数据和发送数据。测试仪上电后进行SJA1000的初始化,该操作必须正确可靠,这是接收数据和发送数据的前提。根据SJA1000的手册,设计代码如下:

  writesja1000(MODADDR, 0x09);

   //设置方式寄存器,进入复位操作以初始化

  writesja1000(CDRADDR, 0x88);

   //设置时钟分频寄存器,选PeliCAN模式

  writesja1000(AMR0ADDR, AMR0 );

   //设置接收屏蔽寄存器0

  writesja1000(AMR1ADDR, AMR1);

   //设置接收屏蔽寄存器1

  writesja1000(AMR2ADDR, AMR2);

   //设置接收屏蔽寄存器2

  writesja1000(AMR3ADDR, AMR3);

   //设置接收屏蔽寄存器3

  writesja1000(ACR0ADDR, ACR0);

   //设置接收验收代码寄存器0

  writesja1000(ACR1ADDR, ACR1);

   //设置接收验收代码寄存器1

  writesja1000(ACR2ADDR, ACR2);

   //设置接收验收代码寄存器2

  writesja1000(ACR3ADDR, ACR3);

   //设置接收验收代码寄存器3

  writesja1000(BTR0ADDR, 0x03);

   //设置总线定时器0

  writesja1000(BTR1ADDR, 0xFF);

   //设置总线定时器1

  writesja1000(OCRADDR, 0xAA);

   //设置输出寄存器

  writesja1000(RBSAADDR, 0x00);

   //设置接收数据缓冲区首地址

  writesja1000(TXERRADDR, 0x00);

   //清除发送错误寄存器

  writesja1000(RXERRADDR, 0x00);

   //清除接收错误寄存器

  readsja1000(ECCADDR);

   //清除错误代码捕捉寄存器

  writesja1000(IERADDR, 0xFF);

   //打开中断使能寄存器

  writesja1000(MODADDR, 0x08);

   //设置方式寄存器,进入政党操作模式以收发数据

  writesja1000()和readsja1000()是封装好的底层函数,其具体实现如下:

  static void writesja1000(unsigned char addr, unsigned char data)

  {
  *SJAADDR = addr;

  *SJADATA = data;
  }

  static unsigned char readsja1000(unsigned char addr)

  {
  *SJAADDR = addr;

   return *SJADATA;
  }

  其中SJADATA、SJAADDR分别是为读/写SJA1000的数据或地址所分配的AT91RM9200地址。

  接收数据和发送数据均采用中断来实现,基于中断的数据处理流程是CAN通讯程序的重点,其具体实现流程如图4所示:

  结束语

  与传统的8/16位单片机测试仪系统相比,本文介绍的测试仪基于32位ARM9处理器,运行速度可高达180MHz,扩展能力强;采用Linux操作系统,软件更加模块化,更新和移植更加方便,运行更稳定;采用虚拟仪器技术实现测试仪的操作面板,便于功能扩展,通用性强。在对汽车CAN节点现场测试时,该测试仪运行稳定快速,保证了该产品的顺利生产。

关键字:CAN总线  虚拟仪器技术  CAN节点测试仪 引用地址:基于CAN总线和虚拟仪器技术的汽车CAN节点测试仪设计

上一篇:USB总线在光栅位移传感器检测系统中的应用
下一篇:嵌入式指纹自动识别系统USB接口的设计与实现

推荐阅读最新更新时间:2024-05-02 21:50

基于LPC2294控制器的CAN总线网状冗余节点方案
一、概述 CAN(Controller Area Network)即控制器局域网,是一种串行数据总线,CAN总线是国际上应用最广泛的现场总线之一。作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,CAN总线已被广泛应用于各个自动化控制系统中。在汽车电子、自动控制、电力系统等领域中,CAN总线尤其具有不可比拟的优越性。但是,工业控制现场工况条件十分恶劣,电缆受拉、压、砸、挤等造成故障的情况很多,这对于以总线为核心的CAN总线系统是一种极大的威胁。如何保证现场总线控制系统在恶劣环境下安全、可靠地工作是CAN应用中的一个重要课题。 解决可靠性问题的一个有效的办法就是对总线进行不同程度的冗余,同时使用两(多)条总线
[单片机]
基于LPC2294控制器的<font color='red'>CAN总线</font>网状冗余<font color='red'>节点</font>方案
PB-B-CAN总线在风力发电系统中的应用
  引言:   在 风力发电 中, 变流器 之间,变流器和风机塔之间的数据交换都涉及到通信。而传动单元的控制需要与整个风场的通讯网络相连,就需要大范围,高速,可靠的通讯,所以DP在其中就承担了至关重要的角色。但是在实际情况中,存在一个问题,控制变流器的控制器只能提供CAN通信的接口,和Profibus通信网络相连遇到了两种总线协议标准共存的问题。鼎实公司提供的CAN-DP总线桥产品为解决这个问题提供了关键的作用。   项目综述   风力发电项目由几个部分组成,包括:   网侧变流器及其控制DSP板   转子侧变流器及其控制DSP板   通信部分,包括液晶,本地计算机及其控制DSP板   塔上通信部分
[嵌入式]
基于CAN总线的NSRL储存环及光束线真空监控系统设计
  目前测控领域出现的现场控制技术——现场总线 (field bus)正在逐步成为现场控制技术的主流。现场总线是用于现场仪表与控制系统和控制室之间的一种全分散、全数字化的智能、双向、多变量、多点、多站的通信系统,按ISO的OSI标准提供网络服务,具有可靠性高,稳定性好,抗干扰能力强,通讯速率快,造价低,维护成本低等优点。传统的现场控制技术(例如BITBUS,RS-485,RS-422等)其不足之处主要有:   (1)主从结构网络上只能有一个主节点,其余为从节点。其造成的潜在危害是:一旦主节点出现故障,则整个系统将处于瘫痪状态。   (2)数据通讯方式为命令响应型。在许多实时性要求较高的场合,这是致命的弱点。错误处理能力不强。
[嵌入式]
基于虚拟仪器技术的引信软件安全性测试系统
   1 引言   引信软件是指嵌入到引信系统中对引信硬件起控制作用的程序,其作用是对引信安全系统和发 火系统实施控制,防止引信意外作用和适时输出起爆信号。由于引信软件安全性问题会导致重大人 身伤亡和财产损失,所以对引信软件的安全性要求非常高。为保障引信软件达到安全性要求,需对 其进行安全性测试,由于手工测试不仅测试效率较低,而且需要大量的人力物力,本文正是基于此 开发了基于虚拟仪器技术的引信软件安全性测试系统。    2 系统特点分析   本系统主要面向引信软件进行测试,由于测试对象的特殊性,使得该系统具有如下特点:   2.1 嵌入式软件测试系统   引信软件是固化在引信中嵌入式微处理器单元上的软件,属于嵌入式软件,
[测试测量]
基于<font color='red'>虚拟仪器</font><font color='red'>技术</font>的引信软件安全性测试系统
CAN总线原理介绍
  CAN是Controller Area Network的缩写,即“局域网控制器”的意思,可以归属于工业现场总线的范畴,通常称为CAN BUS,即CAN总线,是目前国际上应用最为广泛的开放式现场总线之一。   CAN总线最早用在汽车电子领域,世界上一些著名的汽车制造厂商都采用CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。由于CAN总线在数据通信方面表现出来的高可靠性、实时性和灵活性,其应用领域已经成汽车电子领域扩展到自动控制、航空航天、航海、工业控制、医疗器械、安全防护等领域。   CAN总线规范从CAN1.2规范发展为兼容CAN1.2规范的CAN2.0规范(CAN2.0A为标准格式,CAN2.0B为扩展格式),
[嵌入式]
详解基于CAN总线的汽车仪表系统设计—核心电路模块设计
电源电压调整电路设计 电源的选择是关系到系统稳定运行的重要因素之-,也是该仪表能成功应用的重要-步。汽车停止和启动时的电源来源于汽车上的蓄电池,而汽车蓄电池是+24v(轿车为12v电系,卡车和重型货车为24v电系),启动运行时发电机与蓄电池采用并联的方式对电器件供电,电压波动范围为16V-32V。在仪表内部电路中,液晶屏背光,蜂鸣器,各功能指示灯(发光二极管)为12V,MCU(H128)单片机的芯片内部使用3v电压、刀0端口和外部供电电压为sv,EZPRoM等其他电气元件为SV,所以可靠的电源转换也是本仪表能成功应用的关键技术。由于汽车工作时负载变化大,电压波动范围大,而本系统所用器件大多是SV和+12V供电的,其驱动电流都比较小,
[嵌入式]
基于LPC2131处理器的CAN模块设计与实现
  随着信息技术技术的飞速发展, ARM技术方案架构作为一种具备低功耗、高性能、以及小体积等特性的32位嵌入式微处理器,得到了众多的知识产权授权用户,其中包括世界顶级的半导体和系统公司。目前已被广泛的用于各类电子产品,汽车、消费娱乐、影像、工业控制、海量存储、网络、安保和无线等领域。被业界人士认为,基于ARM的技术方案是最具市场前景和市场优势的解决方案。   现场总线CAN是为解决现代汽车中众多的电控模块之间的数据交换而开发的一种串行通信协议。由于其具有多主站依据优先权进行总线访问,采用非破坏性总线仲裁,可完成对通信数据的错误检验和优先级判别,数据长度最多为8个字节,传输时间短,受干扰的概率低,抗干扰能力较强,通信速率最高可达1
[单片机]
基于LPC2131处理器的<font color='red'>CAN</font>模块设计与实现
CAN总线设备如何连接使用
以太网转can模块能够让以太网总线上的设备与CAN总线上的设备互发信息,协同使用,是一种常用的CAN数据转换器。那么,它应该如何连接使用呢?我们简单的聊聊。 既然是CAN转以太网设备,那么它肯定集成了CAN口以及以太网接口。CAN口我们有的人不熟悉,但以太网不说人人家里都有,基本上也差不多。无论是电脑、交换机还是路由器,这些常见的以太网设备都是通过RJ45接头的网线实现连接的,CAN转以太网设备也不例外。说了设备的以太网端以后我们再说设备的CAN端。以太网转CAN设备的CAN端是通过多P端子实现连接的,在实际连线时,CAN设备之间CAN高连CAN高,CAN低连CAN低,连接线类型为双绞线或者是屏蔽双绞线。有的朋友可能会发问了,
[嵌入式]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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