电液伺服机构与CAN总线接口设计
伺服机构与CAN总线接口软件的主要任务有:初始化、接收总线信息、向总线发送信息、受理中断、数据运算与输入输出控制。伺服机构传感器采集的信号存入指定发送子地址的数据缓冲区内,从弹上计算机接收的指令和数据则存入指定的接收子地址的数据缓冲区内。当接口收到弹上计算机的控制指令后,开始对伺服机构进行控制。
初始化程序设计是本接口设计中重要的一个环节。在系统上电复位后,首先确定微处理器的设置,然后在SJA复位后,需要确定与通信有关的参数,包括总线定时、各种寄存器和工作模式等。在系统运行过程中,也可以发出一个复位请求,根据实现情况重新确定系统的通信参数。其初始化程序主要步骤有:
1)初始化微处理器,同时关闭与CAN控制器相连的外部中断。
2)检查复位端,若进行复位状态,则设置通信参数,包括:工作模式、时钟驱动寄存器、接收码寄存器、输出控制寄存器、接收屏蔽寄存器和总线定时等。
3)检查复位请求位,若复位请求位为低,则系统进入正常工作状态,开微处理器的外部中断以及CAN控制器本身的中断。
初始化程序流程图如图5所示。
CAN总线报文数据的接收是由控制器根据CAN总线通信协议自主完成的。接收到的数据被放入接收缓存,然后状态寄存器的“接收缓存状态”标志位将被置位,同时,中断寄存器的“接收中断”标志位也被置位。微处理器必须读出接收到的数据,同时释放接收缓存。报文的接收过程可以采用中断方式,也可以通过查询的方式实现。
本设计中采用查询方式实现数据的接收。如图6所示为查询方式的流程图。CAN控制器的接收中断标志被关闭。微处理器读取CAN控制器的状态寄存器的“接收缓存状态”标志位,检查是否有数据到来。如果缓冲区为空,表示没有接收到数据,微处理器便转到其它工作上去,直到下一轮检查。如果缓冲区满,则表示有数据放入缓存。微处理器可以根据报文信息读取缓冲区的数据,之后需要设置命令寄存器的“释放缓存标志”,通知SJA1000释放接收缓存,完成接收,并进行相应的数据处理。但由于接收缓存中的报文不一定只是一个,因此必须重新检查接收缓存,直到接收缓存为空为止。否则,由于接收缓存的大小有限,将会出现缓冲区溢出的现象。循环查询的时间必须足够快,以避免报文丢失。
4 结束语
本设计很好地解决了导弹伺服机构与CAN总线的连接和通信问题,大大减轻了原系统的重量,增强了信号传递的抗干扰性,提高了伺服机构的控制精度,另外,PC/104的模块化结构使得接口的通用性和可维修性也显著提高。
评论