当前位置:无忧公文网 >范文大全 > 征文 > 基于USB接口的CAN总线适配器设计

基于USB接口的CAN总线适配器设计

时间:2022-03-16 08:14:43 浏览次数:

摘 要:CAN总线技术是一种较实用的现场总线技术,但CAN总线往往不能直接与计算机进行通信。USB作为一种通用的即插即用接口,因其具有简单易用、速度快等特点而倍受青睐。本文设计了一种基于USB 接口的CAN总线转接模块,阐述了系统的硬件构成、固件开发以及驱动程序的设计方法。实验测试表明:所设计的基于USB接口的CAN总线适配器性能稳定可靠,可以很好的实现CAN总线与计算机的接口通信。

关键词:USB接口 CAN总线 固件开发 USB驱动开发

中图分类号:TP336文献标识码:A文章编号:1007-9416(2011)01-0037-02

1、引言

CAN(Controller area network)总线是20世纪80年代初德国Bosch公司为解决现代汽车中控制与测试之间的数据交换而开发的一种串行数据通信协议。由于较好的解决了现场实际环境中数据的高速通信以及抗干扰等问题,而被广泛应用于工业现场和汽车电子等领域[1-4]。对于计算机系统,由于大多没有CAN总线接口,因此不能直接获得工业现场CAN总线设备的数据。传统的方法都是采用基于PCI总线的CAN转接卡实现对远端CAN总线设备的控制操作。但是该方法不能实现即插即用,并且插卡操作需要打开机箱。另外,CAN总线的数据通信也必须与配有PCI转CAN总线接口的计算机才能完成,切换计算机比较繁琐。而USB 具有使用简单、即插即用、热插拔、开放性、高速、稳定、可靠性高等优点,特别适用于仪器仪表、虚拟仪器、数据采集设备、监控设备和加密设备等场合。因此可以采用USB接口实现CAN总线设备与PC机的数据通信,使CAN总线的数据接入PC机变得更简便。

2、CAN总线适配器的硬件设计

CAN总线适配器电路主要由微控制器C8051F340、CPLD时序电路、CAN总线接口芯片、DC-DC隔离保护电路组成。CAN总线适配器系统框图如图1所示。

2.1 微控制器

微控制器采用C8051F340(以下简称F340),F340集成了全速/低速USB功能控制器,用于实现USB接口与PC的数据通信。USB功能控制器(USB0)由串行接口引擎(SIE)、USB收发器、1KB FIFO存储器和时钟恢复电路组成,不需要外部元件[5-6]。USB功能控制器和收发器符合通用串行总线规范2.0版。实验测试表明:微控制器F340的USB接口与计算机之间的通信速度最快可以达到500Kbytes/s。

2.2 CPLD电路的设计

CPLD电路主要完成对CAN控制器SJA1000内部寄存器和SRAM的地址分配,以及对相关外设间接口的数字逻辑电路的集成。通过CPLD编程可以灵活地实现单片机对SRAM的访问和对两路CAN总线控制器的读写操作。

2.3 CAN总线接口的设计

SJA1000是一个独立的CAN控制器,符合CAN2.0规范。SJA1000可应用于多种工程领域,尤其在系统优化诊断和维护方面。

CAN通信控制电路主要包括SJA1000独立控制器、PCA82C250总线收发器和6N137高速隔离光耦等器件。PCA82C250可以提供对总线的差动发送和接收,从而提高了系统总线的节点驱动能力,增大了通信距离、降低了干扰。为确保计算机的安全,在SJA1000与PCA82C250之间采用高速光耦6N137来隔离,被隔离的两个部分分别使用不同的电源和地线,以提高抗干扰性能,确保后续电路的安全。

3、系统程序设计

3.1微处理器程序设计

系统程序的主要功能是实现CAN总线控制器与单片机的通信,以及单片机与PC机的USB通信。

本设计采用C语言编程,利用中断驱动机制,前台主程序专注于单片机的USB接口与PC机之间的数据的处理,而后台中断程序(ISR)主要实现单片机与SJA1000控制器之间的数据通信。二者通过事件标志和数据缓冲区来实现,主程序流程图如图2(a)所示。

3.2 CAN总线程序设计

CAN总线程序部分包括:SJA1000初始化、数据发送和数据接收。SJA1000初始化程序放在主程序开始部分,而数据发送和数据接收采用中断方式,以提高程序运行效率。

SJA1000必须在上电或硬件复位后设置CAN通信,它可能会在主控制器操作期间发送一个软件复位请求,此时SJA1000会被重新配置并再次初始化。假设上电后独立CAN 控制器得到一个复位脉冲而进入复位模式,则主控制器首先通过读复位模式/请求标志来检查SJA1000是否已达到复位模式,然后再设置SJA1000的寄存器的状态。若工作在PeliCAN模式,在复位模式中主控制器必须配置SJA1000控制段寄存器:模式寄存器、时钟分频寄存器、验收码寄存器和验收屏蔽寄存器、总线定时寄存器、输出控制寄存器。CAN中断程序流程图如图2(b)所示。

3.3 USB固件程序设计

USB固件程序设计主要完成USB设备与PC间的通信,当USB设备接入主机时,要经历一个枚举过程,这是USB器件与其他器件所不同的地方。枚举过程是一个标准设备请求的过程,主机通过枚举获取USB器件的详细信息,以提示安装驱动程序,此后设备才能进入正常的数据通讯。

USB固件程序设计主要目的:当USB设备连接到主机上时,主机可以发现新设备,然后建立连接并完成数据传输任务,也就是能够让Windows正常检测和识别USB设备。因此在USB固件程序中,最重要的工作就是USB描述符的定义和USB传输中断的处理。鉴于系统的高速和纠错要求,采用块传输模式,与F340内核之间通过中断完成数据传输。在系统采集到一包数据后,通过USB接口将数据包传递到PC机,PC机收到正确数据后对下位机进行确定答复。若数据有误,将向下位机请求重发,确认与重发命令在单片机中通过PC机控制命令包的命令字识别。当USB中断到达时,F340首先通过读取USB功能控制器的三个中断寄存器CMINT、IN1INT和OUT1INT来判断中断来源,然后根据不同的中断来源跳入相应的处理模块以进行不同的中断处理,并在处理完毕后返回。USB中断程序流程见图2(c)。

3.4 USB驱动的开发

设计的驱动程序是建立在Windows WDM基础上的USB设备驱动,WDM 驱动程序主要的开发工具是微软提供的软件开发包(DDK, device driver kits),该软件包为驱动程序开发者提供了用于开发驱动程序所需的资源文件、编译连接程序、开发技术文档等,再利用第三方开发工具DriverStudio可以快速地建立USB设备驱动的框架,只要进行少量的修改即可实现程序的正常运行,此处不做详述。

4、实验测试

基于USB接口的CAN总线适配器实物图如图3所示。上位机采用Labview软件实现对USB转CAN装置性能的测试。测试数据传输准确率为100%。当C8051F340工作在48MHz时,USB接口与PC机的通信速度超过330kByte/s,最快可达500Kbytes。适配器在CAN总线数据转换,并通过USB接口传输到上位机的传输速度大于100Kbytes/s,可以满足工程实际的应用需求。

5、结语

本文设计的基于USB接口的CAN总线适配器实现了计算机与CAN总线设备的数据通信。与PCI接口的CAN总线转接卡相比,具有价格低,使用灵活方便的优点,在实现CAN总线设备与计算机接口通信领域具有一定的实用性。

参考文献

[1] 史久根,张培仁,陈真勇.CAN现场总线系统设计技术[M].北京:国防工业出版社,2004.

[2] 王恩怀,李永红,刘忠献,等.CAN总线接口自动检测系统[J].仪表技术与传感器,2008,4:36-38.

[3] 何青,李红,何子睿.基于CAN总线远程振动检测系统研究[J].振动、测试与诊断,2009,29(4):398-400.

[4] 冷毅,李青侠,刘胜,等. 基于无线传感器和CAN总线的直接式轮胎压力检测系统[J].仪器仪表学报.2008,29(4):711-717.

[5] C8051F430 Data Sheet, Rev.1.4[Z], Silicion Laboratories,2009.

[6] 曹少华,张培仁,王津津,等.基于C8051单片机的CAN总线硬件系统设计[J].测控技术,2007,26(11):38-41.

作者简介:王林泓(1974-),女,辽宁抚顺人,讲师,博士,研究方向为电子产品设计,信号处理及模式识别。

推荐访问: 适配器 总线 接口 设计 USB