APP下载

基于DSP的CAN总线通信程序

2015-03-03陈琪晟

铁路通信信号工程技术 2015年2期
关键词:波特率伯里流程图

陈琪晟

(中铁通信信号勘测设计(北京)有限公司,北京 100000)

基于DSP的CAN总线通信程序

陈琪晟

(中铁通信信号勘测设计(北京)有限公司,北京 100000)

介绍基于TMS320F2812 DSP的CAN 总线的设计及应用方法。在分析CAN总线的主要技术特性及CAN总线在工业控制系统中所处的位置之后,给出DSP与CAN的硬件设计框图。描述CAN节点软件设计同时给出初始化流程以及发送程序流程图及部分代码。介绍的设计方法易于掌握且具有较强的灵活性和通用性,可用于多种工业现场控制。

TMS320F2812DSP;CAN总线;通信程序

1 概述

CAN是Controller Area Network的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。1986年德国电气商博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898及ISO11519进行了标准化,在欧洲已是汽车网络的标准协议。

CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:

1)在一个指令周期内可完成一次乘法和一次加法;

2)程序和数据空间分开,可以同时访问指令和数据;

3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;

4)具有低开销或无开销循环及跳转的硬件支持;

5)快速的中断处理和硬件I/O支持;

6)具有在单周期内操作的多个硬件地址产生器;

7)可以并行执行多个操作;

8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。

2 CAN节点通信设计

F2812DSP的增强型局域网控制器(eCAN)模块与CAN2.0B标准兼容,借助32个完全可配置的邮箱和时间标志特性。eCAN模块提供了一种具有通用性和强大功能的多主从工作方式通信接口。以TMS320F2812型DSP为核心芯片,eCAN总线通过研华CAN通信卡PCI-1680U与上位机实现连接,示意图如图1所示。

图1 连接示意图

2.1 CAN总线基本工作原理

CAN总线的通信过程是通过类似“会议”的机制实现的,只不过会议的过程并不是由一方(节点)主导,而是每一个会议参加人员(节点)都可以自主的提出会议议题(多主通信模式),二者流程对应关系如图2所示。

图2 CAN工作原理图

2.2 CAN报文格式

在总线中传送的报文,每帧由7部分组成。CAN协议支持两种报文格式,区别之处在于标识符(ID)长度不同,标准格式为11位,扩展格式为29位。在标准格式中,帧起始(SOF)为报文的起始位,接着是由11位标识符和远程发送请求位 (RTR)组成的仲裁场。RTR位是用来区别数据帧还是请求帧的,在请求帧中没有数据字节。控制场包括标识符扩展位(IDE),它是指出标准格式还是扩展格式,它还包括一个保留位 (ro),为将来扩展使用。它的最后4个位是用来指明数据场中数据的长度(DLC)。数据场范围为0~8 Byte,其后有一个检测数据错误的循环冗余检查(CRC)。应答场(ACK)包含应答位和应答分隔符。CAN发送的这两位均为隐性电平(逻辑1),这时正确接收报文的节点发送主控电平(逻辑0)覆盖它。用这种方法,CAN可以保证网络中至少有一个节点能正确接收到报文。报文的尾部由帧结束指明。在相邻的两条报文间有一很短的间隔位,如果这时没有节点进行总线读取,总线将处于空闲状态。

2.3 通信技术指标

波特率,这里用每秒传送的位来计算,公式如下:

波特率=SYSCLK/(BRP×Bit_time)

其中:Bit_time(位时间)为每位的时间因子(TQ)数;SYSCLK为CAN模块的系统时钟频率。与CPU时钟频率相同;BRP为BRP[7—0]+1(CANBTC寄存器的位)的二进制值。位时间Bit_time=(TSEGl+1)+(TSEG2+1)+1,这里SYSCLK=150 MHz,BRP=9,TSEGl=10,TSEG2=2,所以波特率为1 Mbit/s。

假设总线报文发送时间间隔为10 ms,报文为数据帧(8 Byte数据),根据通信波特率计算10 ms总共可以发送的bit为(1000000/1000)× 10=10000bit,计算最长的一帧报文的bit为1sof+ 29id+1ide+1rtr+1srr+2r+4dlc+8×8data+16crc+ 2ack+7eof=128 bit,可以得出10 ms内可以支持的报文数目2500/128≈78。

由上面的计算可知,当10 ms间隔的报文数量超过78条时,就会出现丢帧,总线饱和。

3 系统功能设计

CAN参数配置波特率为1 Mbit/s,帧类型选择标准帧,发送标识符为Ox15100000,接收滤波模式为单滤波,选择自定义屏蔽码,过滤验收码为FFFFFFFF,过滤屏蔽码为FFFFFFFF。上位机测试接收软件在visual studio 2010 C#环境下编写,下位机软件在CCStudio v3.1环境中编写调试而成,程序说明如下。

3.1 硬件设计

本实验的硬件系统分为两层:第一层是CAN总线与TMS320F2812接口层,用来实现CAN总线和TMS320F2812的物理接口;第二层为DSP与元器件的信息处理层,其CAN总线通信接口电路如图3所示。

3.2 上位机软件设计

上位机测试接收的软件用C#编写,部分主要设置和接收代码如下。

图3 CAN总线通信接口电路

通过调用函数Can_Set()设置CAN通信卡的相关参数;用nRet变量对相关参数检查设置,通过返回值判断设置成功与否,若失败给出报警提示;参数设置成功后,调用后台线程backgroundWorker2,调用接收方法函数ReceiveThreadMethod2,接收下位机发送的数据,并根据CAN总线错误检测来检查数据的正确性,若有错误通过故障报警进行相应的报警处理。如图4所示。

3.3 下位机软件设计

在使用CAN控制器之前,首先必须对它的内部寄存器进行初始化设置,包括相关IO口设置以及邮箱的相关配置。图5所示是本系统的主程序流程图,图6所示是CAN消息发送流程图。

图5 主程序流程图

3.3.1 主程序说明

图6 CAN消息发送流程图

3.3.2 eCAN初始化说明

3.3.3 eCAN发送程序说明

4 结语

此种通信方式在25 Hz智能轨道电路中得到运用,实践证明这种通信方式的有效性,必将在该领域得到广泛应用。

[1]刘和平,邓力,江渝,等.数字信号处理器原理、结构及应用基础[M].北京:北京机械工业出版社,2007:328-329.

[2]苏奎峰,吕强,耿庆峰,等.TMS320F2812原理与开发[M].北京:北京电子工业出版社,2005:262-268.

[3]顾卫钢.手把手教你学DSP—基于TMS320X281x[M].北京:北京航空航天大学出版社,2011:397-443.

国外简讯

西门子开始班伯里的信号改造工程

依照英国路网公司于1月26日授予的4千万英镑立明顿温泉镇到海福德区段的信号设备更新合同,西门子铁路自动化公司启动了该信号改造工程。

为期22月项目将把目前由班伯里北和班伯里南信号站控制的信号区域的操作转移到路网公司西中部信号中心的一个工作站处。立明顿温泉镇信号中心剩余的信号控制功能也将被转移至西中部信号中心。

跟既有的设计相比,新的LED信号机将降低维护要求,同时西门子轨护西锁计算机联锁正打算应用于班伯里和Aynho枢纽之间,以缩短间隔时间。

信号改造是与一个轨道更新项目同步进行的,该项目会使班伯里车站的布置更加合理化,以提高运营灵活性并减少维护需求。

(北京全路通信信号研究设计院有限公司 孔林楠译自http://www.railwaygazette.com 2014-01-29)

The paper introduces the design and application methods of TMS320F2812 DSP-based CAN bus, and presents the block diagram of DSP and CAN hardware design after analyzing the main technical features of the CAN bus and its position in industrial control systems. It also illustrates CAN node software design with initial fl ow, sending procedure fl ow and codes. The design methods introduced here can be learned easily, they have high fl exibility and universality and can be used in some industrial fi eld control.

TMS320F2812 DSP; CAN bus; communication program

10.3969/j.issn.1673-4440.2015.02.012

2014-07-22)

猜你喜欢

波特率伯里流程图
UART 波特率检测电路的FPGA 设计算法与实现
CAN 总线波特率自适应程序设计
绚烂花车(环球360)
一种程序源代码的标准化流程图转化方法∗
浅谈西门子S7—400与S7—200的通讯实现方法
脸书将收购伦敦人工智能企业 布鲁姆斯伯里
波特率自适应的CAN驱动在嵌入式Linux下的实现①
布鲁姆斯伯里第一季度营收增长19%
伯里爸爸的画像
宁海县村级权力清单36条