完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
近年来,随着工业场合自动化技术的不断更新,工业现场的数据采集、数据传输、设备控制已经成为电子工程师研究的重要课题。为了建立良好的CAN总线通信人机界面,可以通过通信协议的转换和数据的透明传输,使PC机通过USB接口接入CAN通信网络,成为CAN总线网络的一个通信节点,方便对CAN通信网络的监控和管理。本文介绍了基于ARM Cortex3的USB—CAN透明传输的一般思路和软硬件设计方法。
|
|
|
|
CAN总线协议
CAN总线是一种现场总线协议,目前在国内已经得到了广泛的应用和深入的研究。与其他工业现场总线相比,CAN总线具有通信速率高、容易实现、且性价比高等诸多优点,目前已经成为工业现场总线的一种重要标准,在工业现场受到了广泛的应用,展现出强劲的市场竞争力。 CAN总线协议具有完整的解决工业现场通信的技术手段,其在技术运用中具有以下优势: (1)各类数据帧的建立方便,功能明晰。 (2)同一网络内的节点数多,能够满足绝大多数工业现场通信网络对节点数量的需求。 (3)成熟的节点标识符机制及总线结构,可满足在各节点之间实现自由通信。 (4)信号的传输为差分方式,布线结构简单,成本低廉。 (5)在保证传输速率的前提下具有较大的传输距离。 (6)控制芯片完全商品化,可靠性高。芯片内部集成了错误监测机制和管理模块,具有极强的抗干扰能力。 |
|
|
|
USB通信协议
USB的全称为“通用串行总线”。是一个外部总线标准,用于规范PC机与外部设备的连接和通讯。其最大的特点是支持设备的即插即用和热插拔功能。USB版本经历了多年的发展,已经发展为3.1版本,成为当前PC机中的标准扩展接口。 USB总线的终端分为主机和设备。设备通过枚举的方式与主机连接。USB支持四种基本的数据传输模式:控制传输,等时传输,中断传输及数据块传输。根据不同的用途,选择不同的传输模式。根据工业场合CAN总线网络中数据对象的特点,本项目中的USB—CAN透明传输卡将采用中断的方式进行数据传输。 |
|
|
|
系统开发概述
2.1 本技术在CAN通信网络中的运用 在CAN总线通信网络中,各个通信节点通过总线的形式相连,USB—CAN透明传输卡的一端接入CAN总线,另外一端连接PC机。通过USB—CAN卡的透传功能,PC机在CAN通信网络中完全等同于一个普通的通信节点,实现了对网络的监控和管理。 2.2 开发需求概述 本项目开发的上位机平台是WINDOWS系统下的MDK开发编译环境。硬件平台为具有很强低功耗和处理能力的ARM Cortex3内核LM3S5956微处理器。为方便通信测试,上位机需要安装相关数据监测软件。 |
|
|
|
硬件设计
硬件结构框图如图1所示,主要分为微处理器、接口及电源三部分。 LM3S5956微处理器作为数据处理的核心部件,其功能就是将USB和CAN接口接收到的数据进行直接转发,与其他处理器相比,该处理器内置CAN控制器和USB控制器,引脚较少,在保证低功耗的前提下具有较强的数据处理能力。 在接口方面,由于CAN总线物理层信号为差分的形式(CAN_H和CAN_L),所以需要增加CAN物理层芯片(CAN收发器)来进行电平转换,本项目所采用的CAN物理层芯片为TJA1040。USB总线为4芯,其中包含两路信号线(USB-DP和USBDM)、+5 V电源和GND。 USB—CAN透明传输卡的供电方式是本项目设计的关键环节,PC机的USB总线中有两路电源信号分别为+5 V和GND,通常可以提供的最大电流为500 mA,由于采用了低功耗微处理器和CAN收发器,500 mA的电流完全可以满足USB—CAN透明传输卡的功耗需求,所以本项目通过从PC机的USB接口“取电”,达到了真正的“无源”方式,大大节省了USB-CAN透明传输卡的成本和体积,使用更加方便。由于LM3S5956微处理器采用3.3 V供电,所以只需要在电路设计中,增加一个5 V-3.3 V电源芯片即可。 由于采用了内置CAN控制器和USB控制器的低功耗ARM Cortex3微处理器和方便灵活的USB供电方式,整个USB—CAN透明传输卡的硬件非常小巧,在环境复杂的工业通信场合,具有很高的实用性。 |
|
|
|
软件设计
4.1 CAN通信相关 4.1.1 LM3S5956微处理器的CAN控制器 LM3S5956微处理器内置了CAN控制器模块,该模块支持CAN 2.0 A/B协议。支持包括具有11位标识符(标准帧)或29位标识符(扩展帧)的数据帧、远程帧、错误帧以及超载帧的报文传输。传输速率可以通过编程配置,CAN模块主要由3个部件组成: (1)CAN协议控制器和报文处理器 (2)报文存储器 (3)CAN寄存器接口 协议控制器从CAN总线传输和接收串行数据,并将数据传递到报文处理器。接着,报文处理器根据当前的滤波和报文对象存储器中的标识符,将该信息载入合适的报文对象。报文处理器还负责根据CAN总线上的事件来产生中断。 报文对象存储器由32个相同的存储块组成,这些存储块保存了每个报文对象当前的配置信息、状态和实际数据。可以通过CAN报文对象寄存器接口来访问报文对象存储器。 CAN报文对象寄存器接口提供了两个寄存器组来与报文对象通信。由于不能直接访问报文对象存储器,所以必须使用这两个接口来读写各个报文对象。当多个对象包含需要处理的新信息时,这两个报文对象接口允许并行访问CAN控制器报文对象。 为满足CAN2.0的基本通信,需要进行驱动程序和用户应用程序两个层次的程序设计。驱动程序主要包括数据结构的定义和API函数的设计。需要定义的数据结构有时钟配置结构体和CAN消息对象结构体。本项目中需要完成的API函数有:波特率配置函数、波特率配置信息获取函数、CAN控制器使能函数、CAN控制器关闭函数、CAN控制器初始化函数、CAN中断使能函数、CAN中断关闭函数、CAN中断标志清除函数、CAN中断状态获取函数、报文对象清除函数、读取报文对象函数、配置报文对象函数。应用程序主要包括CAN报文发送函数设计、CAN报文接收配置函数、CAN中断服务函数设计。 4.1.2 关于CAN控制器的配置程序设计 根据CAN2.0协议,CAN总线报文的发送和接收需要进行一系列配置,图2为CAN报文发送接受配置流程图。 4.2 USB通信相关 4.2.1 LM3S5956微处理器的USB控制器 LM3S5956微处理器的USB控制器支持USB Host/Device/OTG功能,可运行在全速和低速模式。它符合USB2.0标准,包含挂起和唤醒信号。它包含32个端点,其中包含2个用于控制传输的专用连接端点(一个用于输入,一个用于输出),其他30个端点带有可软件动态定义大小的FIFO并以支持多包队列。FIFO支持DMA,可有效降低系统资源的占用。USB Device启动方式灵活,可软件控制是否在启动时连接。USB控制器遵从OTG标准的会话请求协议(SRP)和主机协商协议(HNP)。 LM3S5956微处理器的芯片供应商TI公司提供了一套完整的USB开发解决方案(USBLIB),极大地缩短了用户的开发周期,本项目将采用USBLIB中的USB虚拟串口方式进行数据传输,这样,上位机驱动包的支持下,可以通过串口调试工具直接对USB的数据进行读写。在USB虚拟串口的方案中,USB通信模块主要分为USB驱动、USB虚拟串口应用层、用户应用层三部分。 根据USB协议,本项目中的USB通信模块属于从USB设备,USB驱动的设计主要包括以下函数的定义:返回从站地址函数、配置从站地址函数、USB控制器连接函数、USB控制器关闭函数、端点配置函数、数据应答函数、端点停止函数、端点启动函数、端点状态清除函数、端点数据获取函数、端点数据赋予函数、端点传输启动函数、端点状态返回函数。 USB虚拟串口应用层介于用户应用层和USB驱动层之间,是目前最流行的USB应用层协议之一,其最大的特点就是可以模拟串口的数据传输方式,还可以保证实时性和准确性。适合传输较为简短的数据。而CAN报文的数据域最长只有8个字节,所以USB虚拟串口协议非常适合转发CAN报文数据。虚拟串口协议主要包括以下函数的定义:虚拟串口初始化函数、虚拟串口数据包读取函数、虚拟串口数据包写入函数。 用户应用层主要包括USB枚举常量的定义、虚拟串口设备定义、发送和接收缓冲区定义、虚拟串口通信参数设置函数、虚拟串口通信参数获取函数、设备控制中断函数、数据接收中断函数、数据发送中断函数。 4.2.2 程序逻辑 在USB虚拟串口设备的软件结构中,TI提供的USBlib库已经实现了大部分工作,只需要实现三个和USB设备相关的回调函数就可以了。这三个函数分别为: USBControlHandler:处理和控制端口相关的事件 USBRxHandler:处理和接收端口相关的事件 USBTxHanler:处理和发送端口相关的事件 在控制端口处理函数中,主要处理设备连接、设备断开、挂起中断、唤醒中断等事件。 4.3 主程序设计 为保证数据透传的实时性,双向数据包均采用中断的方式进行转发,即在CAN接受中断发生之后,立即将数据包转发至USB发送缓冲区;在USB接收中断发生以后,立即将数据包转发至CAN发送缓冲区,保证了数据的实时性和完全透明传输。如图3为CAN中断服务函数。 4.4 开发平台与功能测试 本项目的软件交叉编译平台为WINDOWS XP平台下的MDK4.0编译器,下载仿真器为JLINK V8。 按照图4所示方式进行连线,在上位PC机安装USB虚拟串口支持包之后,打开串口调试助手,进行相关串口参数配置之后,就可以很方便地进行数据的双向收发测试。 |
|
|
|
从OSI网络模型的角度来看,现场总线网络一般只实现了第1层(物理层)、第2层(数据链路层)、第7层(应用层)。因为现场总线通常只包括一个网段,因此不需要第3层(传输层)和第4层(网络层),也不需要第5层(会话层),第6层(描述层)的作用。
CAN2.0协议只定义物理层和数据链路层,没有规定应用层,本身并不完整,需要一个高层协议来定义CAN报文中的11/29位标识符、8字节数据的使用。而且,基于CAN总线的工业自动化应用中,越来越需要一个开放的、标准化的高层协议:这个协议支持各种CAN厂商设备的互用性、互换性,能够实现在CAN网络中提供标准的、统一的系统通讯模式,提供设备功能描述方式,执行网络管理功能。其中应用层可以为网络中每一个有效设备都能够提供一组有用的服务与协议。 本项目中的USB—CAN透明传输卡只实现了对于CAN总线协议的物理层和数据链路层,为了实现更高层次的应用,可以考虑将流行欧洲的CAN总线应用层协议CANopen与USB—CAN透明传输协议软件模块进行整合,开发一个以PC作为上位机的CANopen主站,或者以USB设备为下位机的一个CANopen从站,如果能够实现,将会极大地丰富本项目在工业场合的应用。 |
|
|
|
只有小组成员才能发言,加入小组>>
952 浏览 1 评论
1101 浏览 1 评论
12516 浏览 0 评论
5934 浏览 3 评论
17724 浏览 6 评论
1029浏览 1评论
1025浏览 1评论
953浏览 1评论
4834浏览 1评论
1101浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 13:00 , Processed in 1.216066 second(s), Total 92, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号