LF2407型DSP内嵌eCAN模块的检测程序设计
时间:07-27
来源:互联网
点击:
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控制器等器件构成的通信系统)就可以形成“点对点”通信模式。因为检测模式与正常的通信状态几乎没有区别,而且前者对硬件要求相对较低,所以在工程项目的前期开发过程中。检测程序是具有实际意义的。
DSP 电路 总线 电阻 仿真 CSR 振荡器 CAN总线 相关文章:
- F1aSh存储器在TMS320C3X系统中的应用(11-11)
- 基于PIC18F系列单片机的嵌入式系统设计(11-19)
- DSP在卫星测控多波束系统中的应用(01-25)
- 基于PCI总线的双DSP系统及WDM驱动程序设计(01-26)
- 利用Virtex-5 FPGA实现更高性能的方法(03-08)
- DSP与单片机通信的多种方案设计(03-08)