新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于FPGA和MCU的CAN-VME总线转换设计

基于FPGA和MCU的CAN-VME总线转换设计

作者: 时间:2012-02-08 来源:网络 收藏

2 转换系统的软件设计
2.1 软件设计思路
构建8个双口RAM,8路CAN控制器通过这8个双口RAM与上位VME主机进行数据通信,RAM口分别映射到VME主机内存地址和
存储器空间中。系统数据传输采用中断主机(VME主机)和主机中断两种方式,前者通过触发主机外部中断实现,由双口RAM里面的中断控制来决定的,在触发中断后,提示主机读取CAN控制器接收到的数据以及CAN控制器的工作状态。主机中断MCU方式是通过MCU的外部中断管脚实现的,是由主机写入双口RAM的控制字实现的。触发该中断后,MCU就从主机接收要发送的报文,并发送到相应的CAN节点上,并配合主机配置CAN控制器的控制模式。中断流程如图4,图5所示。

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

c.jpg d.jpg


2.2 的软件设计
在该系统中,数据都由VME主机控制,所以构造双口RAM(或者8个区域即可),使VME主机和MCU在RAM中完成数据传输。即主机要发送
的数据放入RAM中等待MCU提取,同时MCU发送的数据放入RAM中等待VME主机提取。
2.3 CAN节点软件设计
CAN节点软件是本系统的重点,它包括CAN控制器初始化、报文发送和报文接收3个部分。
初始化主要完成设置工作方式、接收方式、屏蔽寄存器、验收代码寄存器、波特率和中断寄存器,并且要在复位模式下进行初始化。初始化流程如图6所示。

e.jpg


报文发送就是将代发的数据按照CAN协议的数据格式,组成一帧一帧的报文,送入SJA1000的发送缓冲区,触发SJA1000发送即可;报文接收同理。
2.4 MCU转换程序设计
微控制器程序设计的主要目的是以最快的速度响应中断请求,完成两种总线数据的转换和传输。编程时采用模块化思想,每个模块完成一定的功能。编程采用Keil公司的Keil μVision3编程工具,设计分为:初始化系统、使能中断、查询总线,随时准备响应MCU中断主机(VME主机)和主机中断MCU两种中断触发,并且完成VME总线和CAN总线之间的重组和交换,及时将转换后的信息相应地传送给VME主机或者发送到CAN节点上。流程如图7所示。

f.jpg



3 测试分析
测试过程由VME总线端和CAN总线端互相发送数据包。其中,测试了5组由VME总线发送到CAN总线的数据包;5组由CAN总线发送到VME总线的数据包,记录如表1所示。由表1测试结果所示,该系统中CAN总线节点都设置在1 Mb/s的速率下,系统可以准确地接受和发送数据包。系统正确率之所以会随通信速度的提高而提高,主要原因在于系统在不同的通信速度时,数据包发送频率、发送的最小延时间隔都不相同。如果需要进一步的提升数据发送的正确率,需要系统在硬件设计和PCB板制作上分别努力,才能保证尽可能小的干扰,尽可能大的提高系统的稳定性和抗干扰性。

4 结语
该系统充分利用了VME总线和CAN总线的优点,在FPGA和MCU的基础上实现相应的电路的连接和软件的设计,成功地完成两种不同总线之间的转换,扩展了两种总线的应用范围。


上一页 1 2 下一页

关键词: CAN-VME FPGA MCU 总线

评论


相关推荐

技术专区

关闭