用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

基于串行外设接口(SPI)的CAN总线隔离扩展设计

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-11 00:03:07
节为一个传送单元进行信息交换。主片控制着SPICLK信号可在任一时刻启动报文传送;从片在传送报文之前,通过口线向主片发送一个外部中断请求,请求成功后主片输出SPICLK信号来启动从片的报文传送。从片在SPI中断中接收主片传送来的报文;主片在外部中断中完成从片报文的接收。当主片和从片同时都有报文传送时,系统优先传送主片报文,然后再传送从片报文。

    1、主片发送,从片接收报文

     主片发送报文,从片接收报文软件流程图如图4所示。主片在向从片传送报文前禁止外部中断,也就是禁止从片发送报文。然后从CAN传送缓冲区取一帧报文放入SPI发送暂存器中,再从SPI发送暂存器中取一个字节的数据写到SPITXBUF寄存器中启动SPISIMO引脚上的数据发送,同时,从片响应一个SPI中断开始接收主片发送来的数据,当从片接收到一个字节后,通过口线触发主片的XINT1外部中断来告知主片数据已接收,主片响应了此XINT1外部中断后,再发送下一个字节的数据,当一帧报文传送完成后,主片将外部中断使能,以便接收报文。从片接收完报文后,置报文接收完成标志,以便CPU进行报文的处理。

javascript:window.open(this.src);" style="cursor:pointer;"/>

    2、从片发送,主片接收报文

    从片发送报文,主片接收报文软件流程图如图5所示。从片在发送报文前,通过口线向主片发送一个XINT1外部中断,请求报文的发送,当主片响应了此中断时,发送一个伪数据(如#0FFFFh)来告知从片可以开始报文的发送,从片测试到报文请求受理标志置位后,再从CAN传送缓冲区取一帧报文放入SPI发送暂存器中,再从SPI发送暂存器中取一个字节的数据写到SPITXBUF寄存器中,通过口线向主片发送XINT1外部中断,请求主片取数据,主片在XINT1中断服务程序中监测到中断标志置位时,发送伪数据#0FFFFh(启动从片数据发送的SPICLK时钟),然后将收到的字节存入SPI接收缓冲区,从片依次将一帧报文传送完成后,清报文受理标志。主片完成一帧报文接收后,置报文接收完成标志,并退出外部中断,以便CPU进行报文的处理。

    
javascript:window.open(this.src);" style="cursor:pointer;"/>

    3、关键技术的处理

     CAN总线上信息的传送都是没有规律随机的,所以用SPI口实现主从系统间信息的传递时,必须考虑当有数据正在从DSP1向DSP2传送时,应该禁止数据从DSP2向DSP1传送,反之也然。否则数据在互传过程中就会出错或丢失,影响CPU的正常工作。为了避免主从报文在发送过程中产生冲突,主片在XINT1中断服务程序中完成一帧报文的接收,从片在SPI中断服务程序中完成报文的接收。在进行报文传送时,不管是主片还是从片只有当一帧报文传送完成后,才能进行下一帧报文的传送。主、从片每发送完一个字节的数据,都有一个应答信号返回标志位(见标志位意义)的判断,以便确认数据是否完整的发送或接收。

    由于主片掌握着报文传送的时钟信号,即主动权,所以主片随时都可以进行报文的传送。从片在报文传送前,首先要确认主片此时是否传送空闲,若此时主片正在传送报文,从片等待主片将报文传送完成,再进行报文的传送;若主片正处于传送空闲状态,从片可以开始传送报文。

    五、结束语

    此CAN总线主从通信控制系统外加一些辅助控制单元(如显控单元,操作键盘等)后可作为从CAN网络的主控制器使用,在主控台CAN网络发生异常不能正常工作时,能够辅助控制分系统的运行,此项设计已经在控制系统中得到了应用。



上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:19,265.63000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号