基于C8051F040的CAN总线中继器设计与实现
时间:11-05
来源:互联网
点击:
3 中继器MCU状态控制设计
由于中继器采用双MCU设计,在进行数据传输的时候MCU不仅要监控CAN总线上的数据传输,还要监控SPI的数据传输,尤其是SPI的主从状态正确转换就显得十分重要了,如图4所示。
3.1 MOUO的设计
(1)系统初始化,开CAN0中断,设SPIO为主状态,监测SPIl是否为从状态。如果SPIl长期是主状态,标志通讯错误;
(2)CAN0接收上层发过来的数据,判断SPIl是否为从状态,如果是,就把CAN0数据转发给SPIO并等发送完成,如果不是,就向主节点发送错误状态帧;
(3)设SPI0为从状态,判断SPIl是否为主状态,如果是,就等待SPIl发送数据;如果不是,延时10 ms,再判断还不是,就向主节点发送错误帧;
(4)SPIO接收到SPI1的完整数据后,转发给CAN0,向主节点发数据,完成一次通讯。
3.2 MCUl的设计
(1)系统初始化,开CANl中断,设SPll为从状态,准备接收MCU0通过SPIO发来的数据:
(2)监测SPIO是否为主状态,如果是,就等待接收SPIO的数据,如果不是,就返回错误标志位;
(3)接收到SPIO传来的数据,把SPll设为主,开CANl中断,将数据通过CANl发送到下一级相应ID节点;
(4)等待CANl下一级节点发回的回答帧,并判延时10ms是否到,10ms没有收到回答帧,判SPIO是否为从,如果是从,发下一级错误帧,如果不是,等待SPIO转为从的状态;
(5)SPIl是主状态并且SPIO为从状态时,CANl转发数据给SPIl并等发送完成。
4 系统的实时性分析
中继器给系统带来方便的同时,也给系统增加了一些存储转发延时,因此在软件设计中必须考虑系统的实时性,尽量缩短数据的存储转发时间。通过对本文提出的双MCU中继器系统的分析,影响系统实时性的主要有以下几个方面:
(1)0级CAN总线发送接收各一帧数据的时间,主要受通信协议(CAN2.0A或2.0B)及CAN0波特率决定;
(2)CAN0产生中断,通知MCU0准备向SPIO发送时间(中断时间);
(3) SPI的波特率和发送接收的字节数决定SPIO、SPIl发送接收时间;
(4)MCUl等待时间和MCU1通过CANl向1级CAN节点发送和接收1帧数据的时间;
(5)l级节点模块MCU响应测量时间,受CANl波特率和通信协议的影响。
总之,当0级和l级实测距离是5km,CAN0和CANl波特率为6.91K,SPI的波特率为1M时,主节点到l级节点发送接收一次数据的时间为0.12s,达到大坝监测的实时性要求。
5 结论
本文设计的中继器完成了各项设计指标,符合工程的要求,并且在拉西瓦水电站高拱坝的高边坡大型远程监控系统中承担数据转发和网络拓展功能,运行结果表明,传输数据稳定可靠,并且运行正常。
由于中继器采用双MCU设计,在进行数据传输的时候MCU不仅要监控CAN总线上的数据传输,还要监控SPI的数据传输,尤其是SPI的主从状态正确转换就显得十分重要了,如图4所示。
3.1 MOUO的设计
(1)系统初始化,开CAN0中断,设SPIO为主状态,监测SPIl是否为从状态。如果SPIl长期是主状态,标志通讯错误;
(2)CAN0接收上层发过来的数据,判断SPIl是否为从状态,如果是,就把CAN0数据转发给SPIO并等发送完成,如果不是,就向主节点发送错误状态帧;
(3)设SPI0为从状态,判断SPIl是否为主状态,如果是,就等待SPIl发送数据;如果不是,延时10 ms,再判断还不是,就向主节点发送错误帧;
(4)SPIO接收到SPI1的完整数据后,转发给CAN0,向主节点发数据,完成一次通讯。
3.2 MCUl的设计
(1)系统初始化,开CANl中断,设SPll为从状态,准备接收MCU0通过SPIO发来的数据:
(2)监测SPIO是否为主状态,如果是,就等待接收SPIO的数据,如果不是,就返回错误标志位;
(3)接收到SPIO传来的数据,把SPll设为主,开CANl中断,将数据通过CANl发送到下一级相应ID节点;
(4)等待CANl下一级节点发回的回答帧,并判延时10ms是否到,10ms没有收到回答帧,判SPIO是否为从,如果是从,发下一级错误帧,如果不是,等待SPIO转为从的状态;
(5)SPIl是主状态并且SPIO为从状态时,CANl转发数据给SPIl并等发送完成。
4 系统的实时性分析
中继器给系统带来方便的同时,也给系统增加了一些存储转发延时,因此在软件设计中必须考虑系统的实时性,尽量缩短数据的存储转发时间。通过对本文提出的双MCU中继器系统的分析,影响系统实时性的主要有以下几个方面:
(1)0级CAN总线发送接收各一帧数据的时间,主要受通信协议(CAN2.0A或2.0B)及CAN0波特率决定;
(2)CAN0产生中断,通知MCU0准备向SPIO发送时间(中断时间);
(3) SPI的波特率和发送接收的字节数决定SPIO、SPIl发送接收时间;
(4)MCUl等待时间和MCU1通过CANl向1级CAN节点发送和接收1帧数据的时间;
(5)l级节点模块MCU响应测量时间,受CANl波特率和通信协议的影响。
总之,当0级和l级实测距离是5km,CAN0和CANl波特率为6.91K,SPI的波特率为1M时,主节点到l级节点发送接收一次数据的时间为0.12s,达到大坝监测的实时性要求。
5 结论
本文设计的中继器完成了各项设计指标,符合工程的要求,并且在拉西瓦水电站高拱坝的高边坡大型远程监控系统中承担数据转发和网络拓展功能,运行结果表明,传输数据稳定可靠,并且运行正常。
总线 CAN总线 MCU 单片机 电路 电阻 ADI 收发器 二极管 相关文章:
- 基于MSP430系列单片机的CAN总线接口转换卡设计(01-17)
- 各种通讯总线介绍(01-18)
- I2C总线原理及应用实例 (01-18)
- I2C总线在多机通信中的应用(01-17)
- 基于SPI总线的电能计量芯片ATT7022及其在配电监测终端的应用(01-18)
- CAN总线—PROFIBUS-DP总线网关的实现方法(01-17)