电机驱动电路采用汽车电子专用的电机驱动器MC33486。该器件带有两个双高端开关和两个预驱动低端开关,其低端开关可外接两个MOSFET管,可连续输出10 A的电流。同时能够采集电机电流,利用它反馈给单片机A/D转换采样模块得到电机电流值,完成电机控制,实现车窗堵转和防夹功能。系统通过滤波电容降低噪声的耦合,收发器PCA82C250与CAN总线之间加接光电隔离器6N137,采用DC—DC变换器隔离电源,总线两端接终端电阻以消除反射信号。
4 系统软件设计
系统软件设计目主要包括CAN控制器初始化、节点发送接收报文和主控程序3个模块。
4.1 CAN控制器初始化
CAN控制器上电或硬件复位后必须初始化,包括操作模式、验收滤波器、总线位定时、中断和配置TXDC输出引脚。
4.2 节点发送/接收报文
报文的发送由CAN控制器遵循CAN协议规范自动完成。首先CPU必须将待发送的数据按特定格式组合成一帧报文,进入CAN控制发送缓冲器中,并置位命令寄存器中的发送请求标志,发送处理可通过中断请求或查询状态标志进行控制。其发送程序分发送远程帧和数据帧两种,远程帧无数据场。
报文的接收程序负责节点报文的接收以及总线关闭、错误报警、接收溢出等其他情况处理。报文的收发主要有中断接收方式和查询接收方式。软件设计采用报文接收的查询中断控制方式和报文发送的中断控制方式。报文的发送/接收程序流程如图4所示。
4.3 主控程序
在各车窗节点单元中,左前节点单元功能最复杂,具有最高控制优先权。这里以左前节点单元为例,详细介绍其主控程序设计。首先初始化系统,包括P8xC591控制器的CAN模块初始化、中断、I/0端口、定时模块、看门狗模块、A/D转换器模块和设置全局变量,还要将电机堵转时的最大电流和车窗到顶(底)时传感器的电压阈值写入EPROM。P8xC591将实测电流与EPROM中的标定值比较,实现防夹功能,比较电压阈值与测得的传感器电路电压值判断车窗到达极限位置。初始化完成后,读取组合按键信息,根据按键动作实施具体操作,同时发送CAN报文,完成各节点单元间的CAN通信和智能化控制。图5为左前节点单元主控程序流程。