基于CAN/LIN息线的汽车混合网关设计
3.1 主监控程序
如图4所示,在主控制器AT91SAM7A3中划出4块缓冲区BUF1~BUF4,每一块缓冲区中的数据都有明确而且唯一的来源和目的地。主监控程序主要通过循环依次查询BUF1~BUF4中的存储情况,来决定是否发送数据以及将数据发送给谁。
当高速CAN网络上有数据需要接收的时候,通过高速CAN模块接收数据,对接收到的数据进行处理后,将其存到缓冲区BUF1中,再由低速CAN模块将其发送到低速CAN网络上;当LIN网络上有数据需要接收时,通过LIN总线模块接收数据,对接收到的数据进行数据格式转换(LIN格式的报文帧转换为CAN 格式的报文帧),再将其存入到缓冲区BUF4中,并由低速CAN模块将其发送到低速CAN网络上;当低速CAN网络上有数据需要接收时,先接收数据,然后判断数据是发送到高速CAN总线,还是发送到LIN总线,根据判断结果对数据进行处理,存入相应的缓冲区(如数据是发往高速CAN总线,则存入BUF2,否则存入BUF3)。
3.2 数据的发送
数据的发送由发送子程序完成,网关中主要有3个发送子程序,分别对应两路CAN控制器以及一路 LIN发送器。高速CAN的发送子程序负责发送BUF1中的数据,LIN的发送子程序负责发送BUF3中的数据,低速CAN的发送子程序负责发送BUF2 和BUF4中的数据。数据的发送采用查询总线状态的发送方式:查询总线的忙闲情况,如果总线忙,则退出发送子程序,进行其他的工作;如果总线空闲,则发送数据。发送完1帧数据后,再检查与之相应的缓冲区的状态。如果为空,则退出发送子程序;如果非空,则再检查总线的忙闲状态。如果忙,则退出发送子程序;如果空闲,则发送数据。然后再开始新一轮的数据查询发送过程。图5为高速CAN向低速CAN发送的流程,其他的发送子程序过程与此类似。
3.3 数据的接收
评论