0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于高速处理器和虚拟仪器技术实现汽车CAN节点测试仪设计

电子设计 来源:郭婷 作者:电子设计 2019-01-02 08:28 次阅读

引 言

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总线通信,这是实现测试的前提。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节点现场测试时,该测试仪运行稳定快速,保证了该产品的顺利生产。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18298

    浏览量

    222254
  • CAN
    CAN
    +关注

    关注

    56

    文章

    2471

    浏览量

    459330
  • 虚拟仪器
    +关注

    关注

    22

    文章

    775

    浏览量

    87038
收藏 人收藏

    评论

    相关推荐

    如何使用虚拟仪器技术创建合成仪器

    如何使用虚拟仪器技术创建合成仪器虚拟仪器的软件对于一个虚拟仪器系统而言,软件是最关键的部分。虚拟仪器
    发表于 02-25 23:42

    虚拟仪器课件,虚拟仪器电子教案

    应用 虚拟仪器软件开发平台 虚拟仪器测试信号分析与处理技术[hide]下载地址:虚拟仪器
    发表于 06-22 12:08

    虚拟仪器能否实现网络测试

    虚拟仪器能否实现网络测试?能,虚拟仪器充分利用了计算机技术,也包括网络技术,目前的
    发表于 09-06 22:46

    基于虚拟仪器的城市景观照明分布式控制系统设计与实现

    基于虚拟仪器的城市景观照明分布式控制系统设计与实现针对城市级景观照明系统分布广,数量多的特点,设计一种基于虚拟仪器的可组分布式城市景观照明控制系统。采用C8051F040 处理器构建多
    发表于 12-01 10:19

    虚拟仪器技术

    本文转自湖南银河电气有限公司: 官网虚拟仪器技术一、虚拟仪器技术的定义  虚拟仪器技术就是利用高
    发表于 05-29 15:47

    基于LabVIEW设计的虚拟仪器分析

    [B]1 引言[/B]虚拟仪器技术是用户在通用计算机平台上根据测试任务的需要来定义和设计仪器测试功能,其实质是充分利用计算机来
    发表于 04-09 09:40

    虚拟仪器校准的必要性

    1 引言   随着科学技术的发展,基于计算机的测量仪器,即我们常说的虚拟仪器与计算机联系日益紧密,虚拟仪器由于设置灵活,数据处理功能完善等特
    发表于 04-22 09:40

    基于虚拟仪器的呼吸机测试

      引 言  随着测试技术和总线技术的发展,以虚拟仪器为标志的自动测试系统开始出现。所谓虚拟仪器
    发表于 04-30 09:40

    虚拟仪器汽车行业检测的应用

    系统。  虚拟仪器汽车车内测试系统(IVDAS)中的应用  汽车车内测试系统(IVDAS)作为最常见的汽车电子测试应用之一,优于传统的车内
    发表于 05-15 09:40

    怎样采用CAN总线和虚拟仪器进行汽车测试仪设计?

    CAN总线是什么?如何进行汽车测试仪设计?怎样采用CAN总线和虚拟仪器进行汽车
    发表于 04-13 06:11

    虚拟仪器对军用测试技术有什么影响?

    虚拟仪器发展趋势如何?虚拟仪器对军用测试技术有什么影响?
    发表于 05-07 07:06

    基于虚拟仪器技术构建的汽车检测仪该如何去设计?

    虚拟汽车检测仪的结构是如何构成的?PCI2006数据采集的编程是如何去实现的?基于虚拟仪器技术构建的
    发表于 06-15 06:41

    虚拟仪器测试仪器从硬件到软件

    虚拟仪器测试仪器从硬件到软件:从虚拟仪器的概念出发, 介绍了虚拟仪器的研究现状, 详细说明了虚拟仪器的结构系统、特点及其应用前景。指出
    发表于 06-22 14:17 27次下载

    多路并行动态测试虚拟仪器的设计

    动态测试仪器是大型复杂结构动态性能测试的必需仪器,它的功能较多,实现难度较大。本文重点论述应用虚拟仪器
    发表于 12-26 11:37 12次下载

    虚拟仪器技术的RLC测试仪

    虚拟仪器技术的RLC测试仪 针对传统RLC测试仪体积大、成本高等问题,运用虚拟仪器技术,根据伏
    发表于 03-30 15:55 40次下载