坩埚厂家
免费服务热线

Free service

hotline

010-00000000
坩埚厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

看一看:看一看;基于CAN总线和虚拟仪器技术的汽车CAN

发布时间:2021-11-18 14:07:00 阅读: 来源:坩埚厂家

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

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

处理器采取ATMEL公司基于ARM920T内核的AT91RM9200,该处理器运行频率高达180MHz,可外扩32MB Flash和64MB RAM老旧小区违建的认定标准,使其可以满足大多数汽车CAN节点的测试需求。片上集成了许多标准接口,如USB主/从接口、以太网、RS⑵32,使其可以简单得与PC机相连,测试数据可以实时地上传到PC机,借助PC机强大的处理性能和丰富的数据处理软件,进行在线监测及数据处理。AT91RM9200包括1个高速片上SRAM工作区及1个低等待时间的外部总线接口,以完成利用所要求的片外存储器和内部存储器映照外设配置的无缝连接。外扩存储器包括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⑵.6.13内核,使软件设计模块化,便于移植。软件主要包括通讯程序和测试程序两大部分。通讯程序包括CAN总线通讯程序和USB通讯程序两个部分,本文主要介绍1下CAN通讯程序。

CAN通讯程序包括SJA1000芯片的初始化、接收数据和发送数据。测试仪上电落后行SJA1000的初始化,该操作必须正确可靠,这是接收数据和发送数据的条件。根据SJA1000的手册,设计代码以下:writesja1000(MODADDR, 0x09); //设置方式寄存器,进入复位操作以初始化writesja1000(CDRADDR, 0x88); //设置时钟分频寄存器,选PeliCAN模式writesja1000(AMR0ADDR, AMR0 ); //设置接收屏蔽寄存器0writesja1000(AMR1ADDR, AMR1); //设置接收屏蔽寄存器1writesja1000(AMR2ADDR, AMR2); //设置接收屏蔽寄存器2writesja1000(AMR3ADDR, AMR3); //设置接收屏蔽寄存器3writesja1000(ACR0ADDR, ACR0); //设置接收验收代码寄存器0writesja1000(ACR1ADDR, ACR1); //设置接收验收代码寄存器1writesja1000(ACR2ADDR拆迁停水停电可以起诉吗, ACR2); //设置接收验收代码寄存器2writesja1000(ACR3ADDR, ACR3); //设置接收验收代码寄存器3writesja1000(BTR0ADDR, 0x03); //设置总线定时器0writesja1000(BTR1ADDR, 0xFF); //设置总线定时器1writesja1000(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节点现场测试时,该测试仪运行稳定快速,保证了该产品的顺利生产。(end)资讯分类行业动态帮助文档展会专题报道5金人物商家文章