新闻中心

EEPW首页 > 电源与新能源 > 设计应用 > 单线CAN总线隔离中继器的设计

单线CAN总线隔离中继器的设计

作者: 时间:2013-08-22 来源:网络 收藏

3 软件设计
3.1 初始化子程序
的CAN控制器初始化直接关系到CAN控制器能否正常工作。的CAN控制器初始化主要包括CAN基本单元和过滤器的初始化。因为ST公司推出了一套针对于的固件库,所以只需在程序开始时做出相应的设置即可。在该初始化子程序中关键的环节是设置CAN的波特率,STM32数据手册中的波特率的计算公式如下:
c.JPG
其中tq=(BRP[9:0]+1)xtPCLK。如上述CAN单元初始化子程序中:tBS1=tq×(TS1[3:0]+1),tBS2=tqx(TS2[2:0]+1),BRP[9:0]、TS1[3:0]和TS2[2:0]均在CAN_BTR寄存器中设置,STM32的CAN时钟有APB1提供。假设系统时钟为72 MHz,APB1为系统时钟的9分频,结合初始化子程序,BRP[9:0]=0、TS1[3:0]=7、TS2[2:0]=6,代入波特率计算公式即可求的其波特率为500Kb/s。在该中,CAN控制器的过滤器设置工作在屏蔽位模式下,对标识符的任何一位采用必须匹配或不用关心的原则处理。在中,由于需要转发所有总线上的数据,则过滤器不必详细设置,只需设置接收任何ID号的数据即可。
3.2 数据转发子程序
的任务实质上就是实现报文的转发。STM32F105内部集成了双bxCAN控制器,它包括3个发送邮箱和2个3级深度的FIFO。结合STM32 F105的特性,采用双FIFO的转发机制,其原理如图3所示。依据图3,当STM32F105接收到新的报文时,经过数据处理模块处理,在数据转发进程的管理下,对两路bxCAN控制器的接收FIFO缓冲区进行监视,如某一路缓冲区非空则向另一路转发。

本文引用地址:https://www.eepw.com.cn/article/175746.htm

d.JPG


STM32F105发送报文的流程为:应用程序选择1个空置的发送邮箱;设置标识符、数据长度和待发送数据;然后对CAN_TIxR寄存器的TXRQ位置1,来请求发送。TXRQ位置1后,邮箱就不再是空邮箱;一旦邮箱不再为空置,软件对邮箱寄存器就不再有写的权限。TXRQ位置1后,邮箱马上进入挂号状态,并等待成为最高优先级的邮箱。一旦邮箱成为最高优先级的邮箱,其状态就变为预定发送状态。当进人空闲状态,预定发送邮箱中的报文就马上被发送。在邮箱中的报文被成功发送后,它马上变为空置邮箱;硬件相应地对CAN_TSR寄存器的RQCP和TXOK位置1,表明一次成功发送。
为了提高中继器数据传输的实时性,CAN报文的接收采用中断方式。所以在CAN初始化过程中应使能CAN1和CAN2外设中断,并设置其相应的中断向量表,设定其相应的中断等级。数据接收模块流程如图4所示。

e.JPG


另外,假设上A点发出的数据总时间为t,则在软中继器另一侧B点接收到该数据的最短时间为t。当总线速率不大且对各总线设备时序要求不高时,该时间可以忽略。但在一些节点间交换数据频繁的系统,则须注意这个问题,尽量使其对系统的影响降至最低。

4 结论
该CAN总线中继器充分利用内部集成双bxCAN控制器简化了硬件电路的设计,及丰富的固件库函数缩短了开发周期。实践表明,该单线CA N总线隔离中继器完成了各项设计指标,符合工程的要求,在液压支架电液控制系统中能够有效的完成数据的转发和网络的拓展,具有较高的实用价值。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭