LF2407型DSP内嵌eCAN模块的检测程序设计(精)_第1页
LF2407型DSP内嵌eCAN模块的检测程序设计(精)_第2页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、LF2407 型 DSP 内嵌 eCAN 模块的检测程序设计摘要:以 TI 公司 LF2407 型 DSPg制器为对象,介绍基于 CAN2 0B 总线协议的 外设通信模块 e-CAN 检测程序设计,给出硬件系统的构成框图及软件实现过程的 相关代码。实验室调试表明,该程序可以用来判定 ID 标识符与屏蔽码的正确与 否以及邮箱的工作状况,同时能够减少项目早期研究过程中对硬件模块的需 求。关键词:CAN总线通信:DSP 程序设计;CAN 空制器自检;数字信号处理器 1 引言 LF2407 型数字信号处理器(DSP)以其处理能力强(30MI/S),外设功能模摘 要:以 TI 公司 LF2407 型 D

2、SP 控制器为对象,介绍基于 CAF2. 0B 总线协 议的外设通信模块 e-CAN 检测程序设计,给出硬件系统的构成框图及软件实现过 程的相关代码。实验室调试表明,该程序可以用来判定 ID 标识符与屏蔽码的正 确与否以及邮箱的工作状况,同时能够减少项目早期研究过程中对硬件模块的 需求。关键词:CAN 总线通信:DSP 程序设计;CANS制器自检;数字信号处理器1 引言LF2407 型数字信号处理器(DSP)以其处理能力强(30 MI/s),外设功能 模块集成度高及存储器容量大等特点广泛应用于数字化控制与通信领域。笔者 以某车载武器系统的前期预研为背景,讨论了该处理器内嵌模块eCAN 的检测功

3、能及其软硬件实现过程。2 检测系统的功能与硬件构成2. 1 eCA N 控制模块该控制器是一个 16bit 的外围器件,其特性有: (1) 完全支持 CAN20B 协议; (2) 具有 6 个邮箱,其中 mailbox2 与 mailtiox3 可按工程需求配置为接 收或发送邮箱,数据长度为 08 字节; (3) 当发送时出错或仲裁过程中数据丢 失时,该控制器具有自动重发功能; (4) 能够通过软件编程实现自检测功能。对 eCAN 模块的操作分为对控制,状态寄存器的访问以及对邮箱RAM 的读写三个部分。这些寄存器与邮箱在 内存空间的分配如图 1 所示,其中, 7200H 叼230H 所在 RA

4、M 区域为 6 个邮箱的分布地址。22硬件电路的连接对于 LF2407 型处理器而言,如果源代码编译后放在程序区0 x0000 地址开始的空间.当引脚 nap/me 配置为 mp 方式时.则 007FFF 下空间被映射到 外部存储器,此时必须在 DSP 外有相应的存储器方可正常加载,否则就会一直提 示“ Dataverificati on failed at address Ox0 . Please verify targetmemory andmempryiap的信息。当引脚配置为 me 方式,则 007FFF 这段空间由片内 Flash 提供, 代码程序要放在片内 F1ash 中, 就必须

5、用烧写操作完成。一般 说来,前者适用于在线调试的开发方式:对于已经定型的软件代码,当要脱机运 行时用后者较为方便。笔者选用外扩存储器的方式来完成* out 文件的加载其中 74 阳 8 器件的功用是将 CY7C1021 型电路的内存区域一分二,分别用 作外扩的程序空间与数据空间。如图 2 所示,PCA82C25 为总线驱动器.是 LF2407 内嵌 CAN 空制器与 特殊总线之间所需要的接口电路,实现对总线的差动发送与接收能力。在硬件 连接时要注意将 RS 引脚接地使 PCA82C25 处于高速模式下,而且为完成检测功 能,CANr 引脚和 CANL 引脚应通过阻值为 120Q的终端匹配电阻器

6、相连接。在项目开发过程中,笔者使用带 ISA 接口的 仿真器 驱动板.尽管不需要 驱动程序.但还是要安装 SetupC2XX exe 文件.否则在 Code Composer 集成开 发环境内会出现调试困难。3 软件编程31 配置存储器 因为设计硬件时采用的是外扩存储器的方式。所以为了正确地加载输出文件.必须对 CY7C1021 乍引导配置。具体说来就是修改 initgel 文件中的StartUp 函数 ( 该函数在系统默认状态下为空函数。一般说来, 每次进人 CedeComposer 集成开发环境时,它都会被调用。对于硬件系统的初始化代码经常放 置于其内 )。下面给出主要的代码语句:Star

7、tUp0GEL_MapReset;0GEL_MapAdd(0 x000,0 0, 0 x7fff,1 , 1) ;GEL_MapAdd(0 x800,0 0, 0 xT000, 1 , 1) ;GEL_MapAdd(0 x000,0 1, 0 x10000, l , 1);GEL_MapAdd(0 xffff,2 , 1, 1, 1);GEL_MapOn;OGEL_MemoryFill(0 xffff,2 , l , Ox40);*(volatile unsignedint*)SCSRI=0 x0200;*(volatile unsignedint*)SCSR2=0 x000C;*(volat

8、ile unsignedint*)WDNTR=Ox006f;*(volatile unsigned int*)WDKEY=0 x055;*(volatile unsigned int*)WDKEY=Ox0AA;如果需要开发相应的 Flash 烧写子程序可以参考此部分的格式完成。32系统初始化或重新配置位定时器相应的操乍步骤如下:设置 CANMC 寄存器中的改变配置请求位为 1,即CCR=I(2) 判断 CANGS 寄存器中的改变配置使能位是否为 1,即 CCE 是否为 l:(3) 设置 CANBCR 和 CANBCR 寄存器以确定波特率、同步跳转宽度及采样次数等(4)清 CANMC 寄存器中的

9、改变配置请求位为 0.即 CCR=O判断 CANGS 寄存器中的改变配置使能位是否为 0,即 CCE 是否为 0;(6) 配置完成进入正常工作模式。主要程序代码如下:(*MCRB)=(*MCRB)10 x00c0;(*CANIFR)=0 xffff ;(*CANLAMlH)=0 x7fff(*CANLAMlL)=Oxffff ;(*CANMCR)=Oxl04;0 while(*CANGSR)&0 x0010)=0) ;/ CCF 如果不等于 1则进行软件等待 状态(*CANBCR2)=0 x000;2(*CANBCRl)=0 x0023;/ BaudRate=500 kb/s(*CANM

10、C R)=(*CANMCR)&0 xeff;f while(*CANGSR)&0 x0010)=I) ;按 CAN2 0B 协议构成的总线通信系统,节点之间的波特率误差容限要 求相当高。 与 RS232 串行通信方式相比.因为其帧长远大于后者,考虑到累加效 应的影响,即便是很小的波特率误差也会使数据交换失败。波特率 r 的相关计 算公式为:r=-fcLK /(Brp+1) /(TSEG1+1)+(TSEG2+1)+1 (1)其中,Brp 为预分频系数 fCLK 为 LF2407 的工作频率,其值是外部晶振 体振荡器频率与锁相环倍频或分频系数之积,时间段TSEG1 与 TSEG2 在位配置寄存器

11、 BCR2 中定义。本系统中晶体振荡器频率为 15MHz 锁相环倍频系数为 l,那么r=(15 MHz/3)/(4+1)+(3+1)+1) ,即 05 MHz。3 3 邮箱的初始化 相关的流程如图 3 所示。部分代码如下:(*CANMDER)=0 x004;0 /将邮箱 2 配置为接收、 邮箱 3 为发送(*CANMC R1=0 x014;0(*CANMSGID2H)=0 x7fff;(*CANMSGID2L)=0 xffff ;(*CANMSGCTRL2)=0 x00;08/* 此处用于添加接收邮箱的初始数据值 */(*CANMSGID3H)=0 x7fff;(*CANMSGID3L)=0

12、xffff;(*CANMSGCTRL3)=0 x00;08/* 此处用于添加发送邮箱的初始数据值 */(*CANMCR)=0 x04C;0(*CANMDER)=0 x004;c 3 4 信息的发送 数据写到发送邮箱的数据区后如果相应的发送请求位使能则信息帧 被发送到总线网络上,整个过程以查询的方式完成。具体的操作步骤如下:(1) 初始化发送邮箱;设置 CANMC 寄存器中的邮箱使能位为 1,即 MEN=I设置 CANTC 寄存器中的发送请求位为 1,即 TSRN=I ·(4)等待发送应答信号 TAN 或发送中断标志位 MIFN 置位:清除发送中断标志位和发送应答位,即向 TAN 位写

13、 1 即可。程序代码如下:(*CANTCR)=0 x0020; while(*CANTC R)&Ox2000)=o) ; *CANTCR)=0 x2000delay(2) ; 软件延时子函数35 信息的接收 接收过程以中断的方式完成。具体的操作步骤如下:(1) 设置局部屏蔽寄存器;(2) 确定接收邮箱的标识符和控制寄存器;(3) 等待接收信息悬挂位 RMP 或接收中断标志位 MIFN 置位:(4) 向 RCR 寄存器中的接收信息悬挂位 RMPNI 1,以清除接收中断标志 位和接收信息悬挂位为下一次接收作准备。相应中断服务子程序如下:void CANMBXISRfvoid)mailbox2 接收

14、中断服务子程序(*CANMDER)=Ox0040(*CANMCR)=Ox0143(*CANMBX3A)=(*CANMBX2A)+Ox0012(*CANMBX3B)=(*CANMBX2B)+0 x0034(*CANMBX3C)=(*CANMBX2C)+Ox0056(*CANMBX3D:) (*CANMBX2D)+0 x0078(*ANMCR)=Ox04C:0(*CANMDER)=0 x004o(*CANRCR)=OxOO40 复住 RMP2。MIF236 检测结果检测结果如图 4 所示,将放置邮箱数据的内存区域(0 x7214Ox721f)相应单元作差后的值与程序设计中的代码偏移量进行比较 , 可知邮箱 2 与其他部分 都能正常工作,而且 ID 标识符与屏蔽设置正确,否则内存区域就接收不到相关数 据。4结束

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论