音频应用   音频插件联盟,正版插件,欢迎大家选择!

 找回密码
 快速注册

QQ登录

只需一步,快速开始

音频应用 首页 新闻资讯 查看内容

基于DSP的CAN总线通信的设计与实现

2019-12-16 11:43| 发布者: 51958931| 查看: 764| 评论: 0

摘要: 基于DSP的CAN总线通信的设计与实现本文介绍了TMS320F2812的eCAN模块与TMS320LF2407的CAN模块之间通信以及两者与广州致远的CAN-USB I智能接口卡之间通信时CAN控制器的硬件电路设计及应用方法。利用该方法可以在波特率 ...

 

基于DSP的CAN总线通信的设计与实现

 

本文介绍了TMS320F2812的eCAN模块与TMS320LF2407的CAN模块之间通信以及两者与广州致远的CAN-USB I智能接口卡之间通信时CAN控制器的硬件电路设计及应用方法。利用该方法可以在波特率高达1Mbps的条件下可靠、稳定地传输数据,而且时间延时很小。在双PWM变频调速系统中的应用结果表明了该方法的可行性。


 




1 引言


CAN总线是一种支持分布式控制和实时控制的串行通信网络,由于其独特的设计思想和高可靠性,使其有较高的通信速率和较强的抗干扰能力,可以作为现场总线应用于电磁噪声比较大的场合。CAN总线已经成为最有发展前途的现场总线之一。


许多微处理器都将CAN控制器嵌入到系统中,成为片上的微处理器,TI公司推出的TMS320F2812和TMS320LF2407就在其中。这种结构成本低、运行稳定、功能完备,是一种很有前途的CAN通信系统组成方案。


上述两种DSP上的CAN模块有所不同,TMS320F2812 DSP片上的增强型CAN控制器eCAN模块,其性能比TMS320LF2407 DSP内嵌CAN控制器有较大的改进。


本文主要介绍TMS320F2812的eCAN模块与TMS320LF2407 的CAN模块之间通信以及两者与广州致远的CAN-USB I智能接口卡之间通信时CAN控制器的硬件电路以及软件设计,同时对程序运行结果进行了分析,实验证明了这种通信方式的可行性,并在双PWM变频调速系统中得到了应用。


2 CAN节点通信设计


TMS320F2812的eCAN模块与TMS320LF2407的CAN模块之间通信以及两者与广州致远的CAN-USB I智能接口卡之间的连接示意图如图1所示。由于TMS320F2812和TMS320LF2407上的CAN模块集成了CAN控制器,提供了完整的CAN协议,因此图1中 的TMS320F2812的eCAN模块与TMS320LF2407的CAN模块之间的通信仅需收发装置即可。两者与上位机的通信则通过CAN-USB I智能接口卡。


 

图1 通讯电路连接示意图


2.1 CAN节点的硬件设计


硬件结构图如图2 所示。该硬件结构主要实现TMS320F2812和TMS320LF2407的通信以及两者和上位机的通信。


 

图2 CAN节点硬件结构图


考虑TMS320F2812和TMS320LF2407之间传输数据的电平匹配问题,对TMS320F2812和TMS320LF2407均采用PHLIIP公司的PCA82C250作为CAN收发器。其能提供CAN总线的差动发送能力及对CAN控制器的差动接收能力,信号使用差分电压传送;两条信号线被称为CAN总线,将收发器的RS端接地以实现高速传输,在CAN_H和CAN_L之间接120欧电阻为终端匹配电阻。


TMS320F2812的CANTXD和CANRXD输出的高电平信号是3.3V的,而PCA82C250需要5V供电,因此在收发器和TMS320F2812之间加高速光耦6N137以实现电平匹配,并起到TMS320F2812和CAN总线隔离的作用,从而保护了TMS320F2812。TMS320LF2407的电路连接原理相同。TMS320F2812和TMS320LF2407两者与上位机之间的通讯利用CAN总线时,只需加一个CAN-USB I即可。


2.2 CAN节点的软件设计


本文主要讨论下位机的程序。TMS320F2812的eCAN模块的邮箱0为发送邮箱,邮箱16为接收邮箱。TMS320LF2407的CAN模块的邮箱3为发送邮箱,邮箱2为接收邮箱。


虽然MS320F2812的eCAN模块与TMS320LF2407的CAN模块有所不同,但是两者的CAN寄存器在结构和功能上都是相同的,所以即使代码不能完全兼容,在移植上是非常容易的。CAN节点的软件设计主要分为三部分:初始化程序、数据发送程序、数据接收程序。两者的这三部分程序的基本流程大体上是一样的,所以下面只对TMS320F2812的eCAN模块的程序进行介绍。


2.2.1 主程序


 

 

图3为主程序流程图。主程序如下:


void main


{


InitSysCtrl(); //初始化系统


/*关中断*/


DINT;


IER = 0x0000;


IFR = 0x0000;


InitPieCtrl(); //初始化PIE中断


InitPieVectTable(); //初始化PIE中断矢量表InitECan(); //初始化CAN寄存器


/*使能PIE中断*/


PieCtrl.PIEIER9.bit.INTx5 = 1;


IER /= M_INT9; //使能CPU中断


EINT; //开全局中断


ERTM; //开实时中断


for{}


}


该程序中InitSysCtrl()为系统初始化程序, 同时设置系统时钟,本程序选用系统时钟为120MHZ,CAN的时钟与系统时钟相等。InitEcan()为初始化CAN寄存器的子程序。for为循环等待CAN的接收中断,一旦TMS320F2812接收成功TMS320LF2407或者上位机发送来的数据,则立即进入中断程序,读出邮箱中的数据。CAN的发送程序写在了CAN的接收中断程序里面,用于向上位机发送需要的数据。


 

 


图3 主程序流程图


2.2.2 初始化程序


初始化程序一般是CAN模块的初始化。在双PWM系统中, TMS320F2812需要接收TMS320LF2407发送的数据,以及发送数据给上位机,所以将邮箱的初始化也写在了CAN的初始化程序中,并且将发送和接收的初始化程序写在了同一个程序中。这样做可以避免重复初始化两个邮箱共同应用到的寄存器,简化程序。具体流程图如下:


 

图4 初始化流程图


本程序中发送采用查询方式,接收采用中断方式,所以在初始化流程图中还包括中断的的相关设置。


2.2.3 数据发送程序


TMS320F2812中的每个邮箱均为64位,被分成两个32位的邮箱消息数据低寄存器和高寄存器。程序中设置邮箱0为发送邮箱,将变量i、j分别赋值给邮箱0的MDRL和MDRH,ID为0x00000000的标准帧。


TMS320LF2407的CAN中每个邮箱有4个16位的存储空间,分别为MBXnA、MBXnB、MBXnC和MBXnD,TMS320LF2407的接收程序中设邮箱2为接收邮箱。同时还设置MBXnA和MBXnB分别对应TMS320F2812的MDRL的低8位和高8位数据,MBXnC和MBXnD分别对应TMS320F2812的MDRH的低8位和高8位数据。


程序如下:


int32 i=0;


int32 j=1;


int32 MessageSendCount=0;


i++; //i自加1


j++; //j自加1


ECanaShadow.CANME.all;


ECanaRegs.CANTRS.all = 0x00000001;


相关阅读

最新评论

音频应用搜索

Powered by Audio app