当前位置:首页 > 电源 > 功率器件
[导读]摘 要:以TI公司LF2407型DSP控制器为对象,介绍基于 CAN 2.0B总线协议的外设通信模块e-CAN检测程序设计,给出硬件系统的构成框图及软件实现过程的相关代码。实验室调试表明,

摘 要:以TI公司LF2407型DSP控制器为对象,介绍基于 CAN 2.0B总线协议的外设通信模块e-CAN检测程序设计,给出硬件系统的构成框图及软件实现过程的相关代码。实验室调试表明,该程序可以用来判定ID标识符与屏蔽码的正确与否以及邮箱的工作状况,同时能够减少项目早期研究过程中对硬件模块的需求。

关键词:CAN总线通信:DSP程序设计;CAN控制器自检;数字信号处理器

1 引言

LF2407型数字信号处理器(DSP)以其处理能力强(30 MI/s),外设功能模块集成度高及存储器容量大等特点广泛应用于数字化控制与通信领域。笔者以某车载武器系统的前期预研为背景,讨论了该处理器内嵌模块eCAN的检测功能及其软硬件实现过程。

2 检测系统的功能与硬件构成

2.1 eCAN控制模块

该控制器是一个16 bit的外围器件,其特性有:(1)完全支持CAN2.0B协议;(2)具有6个邮箱,其中mailbox2与mailtiox3可按工程需求配置为接收或发送邮箱,数据长度为0—8字节;(3)当发送时出错或仲裁过程中数据丢失时,该控制器具有自动重发功能;(4)能够通过软件编程实现自检测功能。

对eCAN模块的操作分为对控制,状态寄存器的访问以及对邮箱RAM的读写三个部分。这些寄存器与邮箱在内存空间的分配如图1所示,其中,7200H~7230H所在RAM区域为6个邮箱的分布地址。

 

 

2.2 硬件电路的连接

对于LF2407型处理器而言,如果源代码编译后放在程序区0x0000地址开始的空间.当引脚nap/mc配置为mp方式时.则00~7FFF下空间被映射到外部存储器,此时必须在DSP外有相应的存储器方可正常加载,否则就会一直提示“Data verificationfailed at address Ox0.P1ease verify target memory andmempry map”的信息。当引脚配置为mc方式,则00~7FFF这段空间由片内Flash提供,代码程序要放在片内F1ash中,就必须用烧写操作完成。一般说来,前者适用于在线调试的开发方式:对于已经定型的软件代码,当要脱机运行时用后者较为方便。笔者选用外扩存储器的方式来完成*.out文件的加载.其中 74阳8器件的功用是将CY7C1021型电路的内存区域一分二,分别用作外扩的程序空间与数据空间。

如图2所示,PCA82C250为总线驱动器.是LF2407内嵌CAN控制器与特殊总线之间所需要的接口电路,实现对总线的差动发送与接收能力。在硬件连接时要注意将RS引脚接地使PCA82C250处于高速模式下,而且为完成检测功能,CANH引脚和CANL引脚应通过阻值为120Ω的终端匹配电阻器相连接。

 

 

在项目开发过程中,笔者使用带ISA接口的仿真器驱动板.尽管不需要驱动程序.但还是要安装SetupC2XX.exe文件.否则在Code Composer集成开发环境内会出现调试困难。

3 软件编程

3.1 配置存储器

因为设计硬件时采用的是外扩存储器的方式。所以为了正确地加载输出文件.必须对CY7C1021作引导配置。具体说来就是修改initgel文件中的 StartUp函数(该函数在系统默认状态下为空函数。一般说来,每次进人Cede Composer集成开发环境时,它都会被调用。对于硬件系统的初始化代码经常放置于其内)。下面给出主要的代码语句:

StartUp0

{

GEL_MapReset0;

GEL_MapAdd(0x0000,0,0x7fff,1,1);

GEL_MapAdd(0x8000,0,0xT000,1,1);

GEL_MapAdd(0x0000,1,0x10000,l,1);

GEL_MapAdd(0xffff,2,1,1,1);

GEL_MapOnO;

GEL_MemoryFill(0xffff,2,l,Ox40);

*(volatile unsigned int*)SCSRI=0x0200;

*(volatile unsigned int*)SCSR2=0x000C;

*(volatile unsigned int*)WDNTR=Ox006f;

*(volatile unsigned int*)WDKEY=0x055;

*(volatile unsigned int*)WDKEY=Ox0AA;

}

如果需要开发相应的Flash烧写子程序.可以参考此部分的格式完成。

3.2 系统初始化或重新配置位定时器

相应的操作步骤如下:

(1)设置CANMCR寄存器中的改变配置请求位为1,即CCR=I:

(2)判断CANGSR寄存器中的改变配置使能位是否为1,即CCE是否为l:

(3)设置CANBCR2和CANBCRl寄存器以确定波特率、同步跳转宽度及采样次数等

(4)清CANMCR寄存器中的改变配置请求位为0.即CCR=0

(5)判断CANGSR寄存器中的改变配置使能位是否为0,即CCE是否为0;

(6)配置完成进入正常工作模式。主要程序代码如下:

(*MCRB)=(*MCRB)10x00c0;

(

(*CANIFR)=0xffff;

(*CANLAMlH)=0x7fff

(*CANLAMlL)=Oxffff;

(*CANMCR)=Oxl040;

while(((*CANGSR)&Ox0010)==0);//CCR如果不等于1则进行软件等待状态

(*CANBCR2)=Ox0002;

(*CANBCRl)=0x0023; //BaudRate=500 kb/s

(*CANMC R)=(*CANMCR)&0xefff;

while(((*CANGSR)&0x0010)==I);[!--empirenews.page--]

按CAN2.0B协议构成的总线通信系统,节点之间的波特率误差容限要求相当高。与RS232串行通信方式相比.因为其帧长远大于后者,考虑到累加效应的影响,即便是很小的波特率误差也会使数据交换失败。波特率r的相关计算公式为:

r=-{fcLK/(Brp+1)}/(TSEG1+1)+(TSEG2+1)+1 (1)

其中,Brp为预分频系数fCLK为LF2407的工作频率,其值是外部晶振体振荡器频率与锁相环倍频或分频系数之积,时间段TSEG1与TSEG2在位配置寄存器BCR2中定义。本系统中晶体振荡器频率为15MHz,锁相环倍频系数为l,那么r=(15 MHz/3)/{(4+1)+(3+1)+1),即0.5 MHz。

3.3 邮箱的初始化

相关的流程如图3所示。

 

 

部分代码如下:

(*CANMDER)=0x0040; //将邮箱2配置为接收、

邮箱3为发送

(*CANMC R1=0x0140;

(*CANMSGID2H)=0x7fff;

(*CANMSGID2L)=0xffff;

(*CANMSGCTRL2)=0x0008;

/*此处用于添加接收邮箱的初始数据值*/

(*CANMSGID3H)=0x7fff;

(*CANMSGID3L)=Oxffff;

(*CANMSGCTRL3)=Ox0008;

/*此处用于添加发送邮箱的初始数据值*/

(*CANMCR)=0x04C0;

(*CANMDER)=0x004c;

3.4 信息的发送

数据写到发送邮箱的数据区后.如果相应的发送请求位使能.则信息帧被发送到总线网络上,整个过程以查询的方式完成。

具体的操作步骤如下:

(1)初始化发送邮箱;

(2)设置CANMCR寄存器中的邮箱使能位为1,即MEN=I;

(3)设置CANTCR寄存器中的发送请求位为1,即TSRN=I; ·

(4)等待发送应答信号TAN或发送中断标志位MIFN置位:

(5)清除发送中断标志位和发送应答位,即向TAN位写1即可。

程序代码如下:

(*CANTCR)=0x0020;

while(((*CANTC R)&Ox2000)==o);

*CANTCR)=0x2000;

delay(2); //软件延时子函数

3.5 信息的接收

接收过程以中断的方式完成。具体的操作步骤如下:

(1)设置局部屏蔽寄存器;

(2)确定接收邮箱的标识符和控制寄存器;

(3)等待接收信息悬挂位RMPN或接收中断标志位MIFN置位:

(4)向RCR寄存器中的接收信息悬挂位RMPN写1,以清除接收中断标志位和接收信息悬挂位.为下一次接收作准备。

相应中断服务子程序如下:

void CANMBXISRfvoid)//mailbox2接收中断服务子程序

{

(*CANMDER)=Ox0040;

(*CANMCR)=Ox0143;

(*CANMBX3A)=(*CANMBX2A)+Ox0012;

(*CANMBX3B)=(*CANMBX2B)+0x0034;

(*CANMBX3C)=(*CANMBX2C)+Ox0056;

(*CANMBX3D):(*CANMBX2D)+0x0078;

(*ANMCR)=Ox04C0:

(*CANMDER)=0x004o;

(*CANRCR)=Ox0040;//复住RMP2和。MIF2

}

3.6 检测结果

检测结果如图4所示,将放置邮箱数据的内存区域(0x7214~Ox721f)相应单元作差后的值与程序设计中的代码偏移量进行比较,可知邮箱2与其他部分都能正常工作,而且ID标识符与屏蔽设置正确,否则内存区域就接收不到相关数据。

 

 

4 结束语

借助于实验室调试成功的eCAN检测程序,只要将CANMCR寄存器的STM位从“0”置换为“1”就可以使LF2407退出自收/发状态。如果再配以某个CAN总线数据交换节点(如PCI04与SJAl000T型独立CAN控制器等器件构成的通信系统)就可以形成“点对点”通信模式。因为检测模式与正常的通信状态几乎没有区别,而且前者对硬件要求相对较低,所以在工程项目的前期开发过程中。检测程序是具有实际意义的。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭