PCB抄板专家世纪芯官方网站——PCB抄板网!   
  首页  公司介绍  资讯中心  案例展示  服务推荐  常见问题  联系我们  
24小时客服热线: +86-0755-83035861
PCB抄板资料站
世纪芯寻找疑难项目隆重启幕
世纪芯芯片解密取得重大突破
世纪芯PCB抄板服务流程
世纪芯保证PCB抄板100%准确
资讯中心
汽车CAN节点测试仪软硬件设计实例

汽车CAN节点测试仪软硬件设计实例

http://www.pcbcb.com    2009年02月16日14:42  PCB抄板网    我要咨询

 

  CAN协议简介
Controller Area Network(控制器局域网,缩写为CAN),是一个典型的以半双工方式通信的串行总线结构形式,一个节点发送信息,多个节点接收信息。不同于主从式总线,CAN采用一种称作广播式的存取工作方式,是一种对等式的总线网。
在CAN总线的通信协议中,各节点地址没有主/从的概念,也没有任何与节点地址相关的信息存在。CAN协议建立在ISO/OSI 7层开放互连参考模型基础之上,为了方便应用,同时保证各节点间无差错的数据传输,仅定义了ISO/OSI模型中最下面的两层:数据链路层和物理层,应用层协议由用户自行定义,也可采用一些国际组织制订的标准协议。
与传统的8/16位单片机测试仪系统相比,本文介绍的测试仪基于32位ARM9处理器,运行速度可高达180MHz,扩展能力强;采用Linux操作系统,软件更加模块化,更新和移植更加方便,运行更稳定;采用虚拟仪器技术实现测试仪的操作面板,便于功能扩展,通用性强。
 
  系统硬件设计
  测试仪的硬件设计主要包括三部分:处理器及其存储器电路、CAN总线接口电路、RS232接口电路。结构图如图2所示:
  
  处理器采用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
关于我们 ┊ about shijixin ┊ 服务项目 ┊ 成功案例 ┊ 常见问题 ┊ 合作伙伴 ┊ 联系我们 ┊ 加入我们 
Copyright © 1998 - 2009 www.pcbcb.com. All Rights Reserved
PCB抄板资料站--国内最专业的PCB抄板信息综合门户!
联系地址:深圳市福田区国际科技大厦2603单元 联系电话:0755-83035861/62/63 Design By :www.pcbcb.com