当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于CAN总线和虚拟仪器技术的汽车CAN节点测试仪设计

引言
  ControllerAreaNetwork(控制器局域网,缩写为CAN),是为解决汽车电子控制单元间的信息通信而由德国Bosch公司提出的一种总线标准,以其卓越的性能、极高的可靠性和低廉的价格,现在已经在汽车领域获得广泛应用。为了保证汽车CAN总线节点安全、稳定运转,同时为了提高大批量生产的效率,必须在生产过程中对CAN节点产品进行测试,开发基于CAN总线的汽车CAN节点测试仪显得十分重要。本文通过选择高速处理器和采用虚拟仪器技术保证测试仪的通用性,使其只需通过软件更新便可测试多个CAN节点。
  
  CAN协议简介
  
  CAN协议建立在ISO/OSI7层开放互连参考模型基础之上,为了方便应用,同时保证各节点间无差错的数据传输,仅定义了ISO/OSI模型中最下面的两层:数据链路层和物理层,应用层协议由用户自行定义,也可采用一些国际组织制订的标准协议。
  
  CAN是一个典型的以半双工方式通信的串行总线结构形式,一个节点发送信息,多个节点接收信息。不同于主从式总线,CAN采用一种称作广播式的存取工作方式,是一种对等式的总线网。在CAN总线的通信协议中,各节点地址没有主/从的概念,也没有任何与节点地址相关的信息存在。信息以报文的形式出现,其数据结构如图1所示。
  
  图1中的仲裁域用来表明消息的类型和消息的优先级,CAN总线上的节点将根据标识符决定是否需要读取信息包中的数据,从而避免了不必要的节点处理总线上信息的频繁中断,提高了数据传输速率,保证了数据出错率极低。
  


  
  
  系统硬件设计
  
  测试仪的硬件设计主要包括三部分:处理器及其存储器电路、CAN总线接口电路、RS232接口电路。结构图如图2所示:
  
  


  
  处理器采用ATMEL公司基于ARM920T内核的AT91RM9200,该处理器运行频率高达180MHz,可外扩32MBFlash和64MBRAM,使其可以满足大多数汽车CAN节点的测试需求。片上集成了许多标准接口,如USB主/从接口、以太网、RS-232,使其可以简单得与PC机相连,测试数据可以实时地上传到PC机,借助PC机强大的处理性能和丰富的数据处理软件,进行在线监测及数据处理。
  
  AT91RM9200包括一个高速片上SRAM工作区及一个低等待时间的外部总线接口,以完成应用所要求的片外存储器和内部存储器映射外设配置的无缝连接。外扩存储器包括1片S29GL256NFlash和2片K4S561632A-TC/L80SDRAM,Flash容量为32MB,SDRAM容量为64MB。
  
  CAN总线接口电路包括总线控制器和物理层接口两个部分,实现测试仪与被测试CAN节点的CAN总线通信,这是实现测试的前提。CAN总线控制器采用PHILIPS公司的SJA1000,它有着更好的性能和稳定性,支持CAN2.0A/B协议,有两种工作模式:BasicCAN和PeliCAN,可同时支持11位和29位标识码,能挂载更多CAN节点。物理层接口选用TJA1054实现,它可以连接高达32个节点,内建斜率控制功能及CANL和CANH总线输出的良好匹配使电磁辐射EME很低,具有优异的总线故障管理能力,总线故障时自动切换到单线模式,故障修复后自动复位到差分模式,同时提供对电源和地的短路保护功能,特别适合于汽车内部的CAN通讯。
  
  RS232接口电路即测试仪与PC的通信接口,AT91RM9200内部带有UART控制器,可以方便得与PC机连接,对测试信息进行在线监测,数据存储。
  
  软件设计
  
  软件设计包括上位机程序和下位机程序两个部分。上位机程序在NI公司专门针对虚拟仪器开发设计的的Labwindows/CVI平台上开发,包括USB通讯程序和测试程序两个部分。labwindows/CVI包括对众多总线(包括PCI、PCIExpress、PXI、PCMCIA、USB、以太网、GPIB、串口和IEEE1394)的支持,可以方便得开发RS232通讯程序。测试程序包括人机交互界面(即仪器面板)和测试记录两个部分,Labwindows/CVI提供了丰富的控件,可以迅速开发仪器面板,省去了在下位机上开发人机交互界面(主要是指LCD和按键),所开发的仪器面板界面如下图所示:
  
  下位机程序采用linux作为测试仪的操作系统,采用较新的linux-2.6.13内核,使软件设计模块化,便于移植。软件主要包括通讯程序和测试程序两大部分。通讯程序包括CAN总线通讯程序和USB通讯程序两个部分,本文主要介绍一下CAN通讯程序。
  
  


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

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节点现场测试时,该测试仪运行稳定快速,保证了该产品的顺利生产。
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

当前全球新一轮科技革命和产业变革蓬勃发展,汽车与能源、交通、信息通信等领域有关技术加速融合,电动化、网联化、智能化成为汽车产业的发展潮流和趋势。智能汽车融汇新能源、新材料和互联网、大数据、人工智能等多种变革性技术,推动汽...

关键字: 智能汽车 汽车 新能源

随着人工智能产业的深入发展,智能汽车开始步入人们的视野。在人们出行多元化的今天,智能汽车是未来汽车发展的必然趋势。所谓智能汽车,就是汽车与人工智能技术的深度融合,这种类型的汽车可以有效避免疲劳驾驶,使汽车更加个性、灵活,...

关键字: 智能汽车 汽车 人工智能

目前,随着信息技术的不断转型与升级,加快了汽车设计的脚步,智能汽车技术不仅使人们日常驾驶行为习惯发生明显改变,同时使交通的安全性、可靠性得到有效保障,在一定程度上减少汽车尾气对自然生态环境造成的直接影响,为城市规划、交通...

关键字: 智能汽车 汽车 人工智能

近年来,世界主要汽车大国纷纷加强新能源汽车战略谋划、强化政策支持、完善产业布局,新能源汽车已成为全球汽车产业转型发展的主要方向和促进世界经济持续增长的重要引擎。2021年,全国新能源汽车实现产量354.5万辆,销量352...

关键字: 新能源 汽车 引擎

互联网、信息技术等技术的进步改变了各行各业的发展模式,尤其是作为技术型与集约型产业,汽车行业迎来了新的发展时期。近年来,智能网联汽车逐步成为汽车发展的主要趋势,虽然取得了一定的发展成果,但是还存在一些发展劣势,因而,未来...

关键字: 智能网联 汽车 智能化

实现“双碳”目标将加快推动我国汽车产业发展方式的转变,尤其是推动以新能源汽车为代表的新产业、新业态、新模式的发展,为我国智能网联汽车产业实现从跟跑、并跑到领跑,增强汽车产业的国际竞争力,创造新的历史契机。

关键字: 智能网联 汽车 新能源

新一轮科技革命和产业变革方兴未艾,科学技术是促进城市持续发展的强大动力,智能网联汽车的发展是一个跨领域、跨行业融合发展的结果,需要政府各部门、汽车企业、科技企业以及产业链上下游加大协同的力度,同向发力,充分利用数字化、网...

关键字: 智能网联 汽车 智能化

北京——2022年10月19日 在“2022亚马逊云科技中国峰会”上,亚马逊云科技宣布将在2021年“汽车行业创新加速计划”的基础上,升级推出“汽车行业创新加速计划”2.0。在新的阶段,亚马逊云科技将利用自身在技术、服务...

关键字: 亚马逊云科技 汽车

新能源汽车市场在2022年有望达到600万辆规模,为芯片产业带来较大的发展机遇。2022年,我国芯片供应比去年有所缓解,但仍紧张。中期来看,部分类别芯片存在较大结构性短缺风险,预计2022年芯片产能缺口仍难以弥补。这两年...

关键字: 新能源 汽车 芯片

汽车芯片和半导体领域要深度地融合,不仅仅是简单的供需关系,应该是合作关系,把汽车芯片导入到整车厂的应用。为缓解汽车产业“缺芯”,国内汽车芯片产业正探索越来越多的方式完善生态。为了促进汽车半导体产业的快速发展,弥补国内相关...

关键字: 智能化 汽车 芯片

嵌入式软件

15715 篇文章

关注

发布文章

编辑精选

技术子站

关闭