基于ARM实现高速CAN转USB

2017-04-25 06:38周建斌万文杰
实验室研究与探索 2017年3期
关键词:固件适配器字节

周建斌, 万文杰, 赵 祥, 刘 易, 周 伟, 王 敏

(成都理工大学 核技术与自动化工程学院,成都 610059)

基于ARM实现高速CAN转USB

周建斌, 万文杰, 赵 祥, 刘 易, 周 伟, 王 敏

(成都理工大学 核技术与自动化工程学院,成都 610059)

设计了一款体积小、成本低、可靠性高的具有普适性的高速CAN转USB适配器。以STM32F107系列微处理器作为核心,USB接口部分采用STM32内部USB控制器,CAN接口采用STM32内部的CAN控制器并且外接带隔离的CAN收发器CTM1050。开发过程中创建了数据传输协议,对需传输的数据有固定的传输格式,进行数据甄别后再传输数据,保证了数据传输的正确性和可靠性。设计中,ID并不是固定值,而是获取对方发送过来的ID。对CAN接收的数据进行打包成标准格式帧,以便传入上位机后了解传输数据特性。经过多次现场实验测试表明:该设备可以实现USB和CAN协议的数据转换,完成CAN侧数据收发,CAN侧具有不同的ID以及不同的帧类型都可进行传输。该系统能以500 Kb/s长时间稳定运行。

通用串行总线; 控制器局域网; 数据传输协议

0 引 言

CAN总线因具有传输距离远、传输速率高、抗干扰能力强、易于组网等独特优越性能具有越来越广阔的发展前景[1-2]。CAN总线在数据通信方面具有可靠性高、灵活性和实时性强优点,但是一直缺乏与主机进行高速通信且易于使用的接口,此时就需通过一种适配器进行转换。USB作为一种方便、灵活、简单且即插即用的通用串行总线[3-4],可使CAN总线方便高速的与主机进行连接,因此,USB转CAN 得到了迅速的发展及应用[5-10]。

本文设计的USB转CAN的转换器,基于Keil在STM32F107开发板上采用C语言开发固件程序;基于C#开发上位机程序。对于现在大多工业上的应用由于元器件性能的限制,CAN的波特率还比较低,此设计大大提高了CAN传输的波特率,还具有较高的普适性,可适用于多种仪器设备。而且数据在传输过程中因通信系统本身或环境等干扰易造成传输数据出错,故对信息进行检错很有必要[11]。本设计提出了数据传输协议,即满足了信息传递的实时性,又提高了数据传输的正确性。

1 硬件设计

1.1 主控芯片选择

本系统主控部分采用STM32F107作为核心处理器。STM32F107是意法半导体公司根据ARM公司最新推出的Cortex-M3来生产的一款高性能ARM微处理器。以其低成本、低功耗、高性能获得广泛应用。内部集成1个USB控制器和2个CAN控制器,芯片内部可以通过RAM来通信。不会出现如STM32F103因具有1个USB控制器和1个CAN控制器,在同一个应用中不能同时使用而需增加外部模块的问题[12]。STM32F107的外设已经满足设计需求。这样既避免了使用外部模块带来的额外通信损耗,又节约了制作成本。其工作频率为72 MHz,运行速度比一般的单片机快得多,其性能足够完成数据转换。

1.2 CAN收发器芯片选择

集成于STM32F107内的CAN控制器主要是解析CAN物理层上的数据帧将其还原成数据链路层上的数据,不能直接驱动CAN物理总线[13]。CTM1050是一款带隔离的高速CAN收发芯片,为标准CAN控制器接口,支持各种CAN控制器。该芯片内部集成了所有必须的CAN隔离及CAN收、发器件。它的主要功能是将CAN控制器的逻辑电平转换为CAN总线的差分电平,并且具有对CAN控制器与CAN总线之间的隔离。通信速率最高可达1 Mb/s。

1.3 电路设计

基于ARM的USB转CAN设计以STM32F107单片机为核心,外加CAN电平转换。其硬件模块组合如图1所示。整个转换器不设外接电源,直接从USB接口取电,USB供电电路设计如图2所示。

图1 硬件模块示意图

经过2个Π型滤波电路,将USB提供的5 V电压转换为3.3 V电压供给芯片使用,保证了电路在工作过程中稳定运行。

2 软件设计

2.1 数据传输协议

现有的在USB转CAN中数据传输大多都是透明传输[14-16],在保证传输质量的前提下,只负责将需要传送的业务传送到目的节点。这种传输因不会对传输的业务进行处理,一旦传输线受到环境干扰引起数据改变,则可能将错误的数据进行传输。为此,本文提出创建数据传输协议,有固定的传输格式,先对传来的数据进行头甄别,若满足本设计所约定的格式则认为数据有效,然后才进行相关数据传输,保证了数据传输的正确性和可靠性。其具体内容如下。

将一帧数据定义为:①数据头 AA 55(2 byte);②帧信息 08(1 byte);③数据ID号 0020(2 byte);④数据BODY XX…XX(8 byte)。

图2 USB供电电路设计

一帧数据有13 byte,每个字节有8 bit。字节分配情况如图3所示。第0个和第1个字节为数据头,第2个字节为获取信息,该字节的第7位为判断数据为扩展帧还是标准帧的标识,为扩展帧则置为1,标准帧则置为0;第6位为判断数据为远程帧还是标准帧的标识,为远程帧置为1,数据帧置为0;第3到0位存放数据长度。第3、4字节用于存放获取的数据ID。第5到12位则用于存放获取的数据。

图3 一帧数据的完整解析

2.2 STM32内核固件设计

STM32内核部分固件主要工作就是初始化模块和数据处理。在STM32F107内部,有分别属于CAN模块和USB模块的FIFO。其功能模块可如图4所示。

图4 STM32功能模块图

一旦CAN接受到数据后先将其存入CAN的FIFO中,然后再通过USB模块读取传至上位机。当USB接受到数据后先将其存入USB的FIFO中,然后再通过CAN模块读取传至下位机。

固件应用程序流程图如图5所示,固件首先初始化系统时钟,保证系统运行在72 MHz实时时钟上,然后初始化CAN模块,初始完成后初始化USB模块。判断CAN模块的FIFO中是否有数据,若有数据则通过USB模块传出;判断USB的FIFO中是否有数据,若有数据则通过CAN模块发送至下位机。在固件程序主循环中只要工作就是将队列中的数据取出来,通过CAN或USB发送出来。

图5 固件应用程序流程图

固件应用程序中断服务子程序如图6、7所示。

USB接收中断实现过程为:USB将当前已读的字节读出来,找出开头为AA的数据,再找出下一个为55的数据,满足这两个条件说明找到数据头,表明下一个到来的字节即为q.data[2],此时可直接将q.data[2]的后4位作为该帧数据的数据位长度。然后再依次读取该数据位长度+2个字节就认为该帧数据已经接收完成。最后对数据进行打包入队。

图6 USB中断流程图 图7 CAN中断流程图

因USB发送数据时直接发送至上位机不许要对数据进行解析,故在此不做说明。

CAN接收中断具体实现过程为:①将一帧数据定义为一个q.data数组,然后初始化RxMessage结构体,其中包括将数据ID初始化为0,因在本设计中为了使设计的适配器具有普适性,ID并不是固定值,而是获取对方发送过来的ID。②对数据进行写头,具体为q.data[0]=0XAA, q.data[1]=0X55;③初始化q.data[2],然后判断该数据为扩展帧还是标准帧,判断完后在对应的ID缓存器中取出ID值,并将读出的ID分为两个字节分别存入q.data[3]、q.data[4]。若为扩展帧,则从扩展帧缓存器中读取ID值,并将q.data[2]的第7位置为1作标识,若为标准帧,则从标准帧缓存器中读取ID值,并将q.data[2]的第7位置为0作标识。然后再判断数据为远程帧还是数据帧,若为远程帧则将q.data[2]的第6位置为1作标识,否则置为0。最后在从RxMessage.DLC中获取数据长度放于q.data[2]的后4位。④然后根据获取的长度从RxMessage.Data中取出数据依次放于q.data的数据存放位中。⑤将一帧数据打包插入CAN的FIFO队列。

CAN发送数据实现过程需要对USB发送过来的数据进行解析。分析过程如下:若USB发送过来1帧数据,则首先要解析该数据是扩展帧还是标准帧,具体可由q.data[2]&0x80实现,若相与后值为0x80,则表明该数据是扩展帧,否则为标准帧;然后解析该数据为远程帧还是数据帧,可由q.data[2]&0x40来实现,若相与后值为0x40则表明该数据为远程帧,否则为数据帧;之后将q.data[2]的后4位数据长度赋值给TxMessage.DLC寄存器;再根据获取的长度将相应的数据写入TxMessage.Data;最后通过CAN_Transmit函数将此帧数据发送给下位机。

2.4 设备驱动程序及上位机软件的设计

对设备的驱动程序,直接采用意法半导体公司官网提供的STM32的USB虚拟串口驱动程序,这样大大缩短了我们的开发周期。因涉及的转换器应具有普适性的性质,即上位机软件的设计因应用场景和要求不同,故所设计的上位机软件都可以通过编程访问驱动来读取数据和发送数据。

3 结 语

本文采用了STM32+CTM1050两块低成本的芯片设计了一款速率可在500 Kb/s长时间稳定运行的USB转CAN适配器。经过多次测试表明该设备可以实现USB和CAN协议的数据转换,完成CAN侧数据收发。尤其在使用数据传输协议的情况下大大提高了数据的准确性。

[1] 饶运涛,邹继军. 王进宏,等.现场总线CAN原理与应用技术[M].2版.北京:北京航空航天大学出版社.

[2] 韩成浩,高晓红. CAN总线技术及其应用[J]. 制造业自动化,2010(2):146-149.

[3] 李宏凯. USB2.0总线技术在数据采集系统中的应用[D].南京:南京航空航天大学,2006.

[4] 刘 丁,毛德柱,王云飞. USB在数据采集系统中的应用[J]. 电子技术应用,2000(4):37-39.

[5] 岳彬彬,李向阳. 基于CotexM3的USB-CAN转换器开发[J]. 计算机工程与科学,2012(5):68-72.

[6] 周 震. 基于CAN总线的车身控制模块[D].南京:南京航空航天大学,2005.

[7] 黄学勤. 基于CAN总线的汽车灯控网络系统的设计与实现[D].南京:南京农业大学,2006.

[8] 曲凤丽. 汽车网络研究及CAN总线网络拓扑的优化[D].杭州:浙江大学,2008.

[9] 袁传义. 电动汽车CAN总线的研究[D].合肥:安徽农业大学,2004.

[10] 袁 强. 基于CAN总线的汽车仪表研究[D].重庆:重庆大学,2006.

[11] 李会如. 实时监控系统中的数据通信校验及其实现方法[J]. 邮电设计技术,1998(11):15-19.

[12] 刘纯虎,付 斌,盛庆华. 基于STM32的微型USB-CAN适配器开发[J]. 计算机测量与控制,2013(4):996-998,1007.

[13] 陈红卫. 基于Cortex-M3的USB转CAN研究与实现[D].长沙:中南大学,2013.

[14] 郑雅伟. 基于ARM Cortex3的低功耗无源USB-CAN透明传输的实现[J]. 山西电子技术,2013(6):52-54.

[15] 程 焱. 基于USB接口的CAN总线控制系统的设计[D].成都:西南交通大学,2005.

[16] 范新峰. CAN总线与USB的转接技术[J]. 电子元器件应用,2007(5):41-43.

Implementation of Conversion between USB and CAN Based on ARM

ZHOUJianbin,WANWenjie,ZHAOXiang,LIUYi,ZHOUWei,WANGMin

(College of Applied Nuclear Technology & Automation Engineering, Chengdu University of Technology, Chengdu 610059, China)

This paper studied the design of a general high-speed USB and CAN converter, which has small volume, low cost, high reliability. STM32F107 was used as the core of converter, the USB interface part adopted USB controller from internal of STM32, the CAN interface used CAN controller from internal of STM32 with external connection of CAN transceiver CTM1050. Data transfer protocol was created, the protocol needed a fixed transmission format and screen data before transmitting data. The ID unfixed was acquired from the other side of the ID. The data received by CAN were packaged into standard format of data frame, so that the data transmission characteristics could be easily found when data were transferred to a PC. A lot of tests showed that this equipment can realize the conversion between USB and CAN, the system runs stably for a long time with 500 Kb/s.

universal serial bus(USB); controller area network(CAN); data transfer protocol

2016-08-05

四川省卓越工程师教育培养计划(核工程与核技术)(11100-15Z006/064)

周建斌(1971-),男,湖南桃源人,博士,教授,从事核测量仪器及相关软件的研究。

Tel.:13881925909;E-mail: zjb@cdut.edu.cn

TL 821

A

1006-7167(2017)03-0129-04

猜你喜欢
固件适配器字节
No.8 字节跳动将推出独立出口电商APP
No.10 “字节跳动手机”要来了?
简谈MC7字节码
基于3D打印的轻型导弹适配器
新型水文测验GPS适配器设计与应用
基于固件的远程身份认证
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
美国麦格普公司新型M—LOK相机三脚架适配器
提取ROM固件中的APP
一种通过USB接口的可靠固件升级技术