系统中为了实现上位监控PC机与下位现场智能节点间通信,必须要有一通信适配器来实现CAN总线与PC总线之间的通信协议转换功能。传统的网络适配器设计中与PC机的通信接口多为ISA总线、RS-232等,虽然它们实现较简单,可由于带宽的限制,不能满足高速传输的需要;而对于流行的PCI总线虽功能强大,可协议复杂,开发周期较长,不支持热插拔且价格昂贵。USB总线具有安装方便、高带宽、可靠性高等特点,因此本系统采用了自主开发的智能通信适配器USB-CAN来实现本系统CAN网络与PC机间的通信。
智能适配器USB-CAN硬件电路设计
适配器硬件电路由三部分组成:CAN总线接口部分、USB总线接口部分、CPU及电源管理部分。CAN总线接口部分的设计与智能节点CAN接口几乎相同。CPU采用Philips公司的增强型MCS-51兼容单片机P89C51RD2,内置看门狗,时钟输出可编程,在6时钟模式下工作速度为标准C51单片机的两倍。USB总线接口部分采用Philips公司的PDIUSBD12芯片,其符合USB1.1版本规范,可与任何外部微控制器/微处理器实现高速并行接口。硬件电路如图4所示。
为了保证P89C51RD2、PDIUSBD12和SJA1000三者间时钟同步,外接12MHz晶振的CPU运行于6时钟模式下,P1.0引脚通过编程输出6MHz方波作为PDIUSBD12的输入时钟,再通过PDIUSBD12的设置模式寄存器编程使CLKOUT引脚产生24MHz的输出时钟来提供给SJA1000。PDIUSBD12的INT-N接CPU的端,通过中断方式与CPU通信; SUSPEND引脚接CPU的P1.4端,用以向CPU指示器件是否挂起;D+引脚信号通过软连接接1.5K?的内部上拉电阻,向主机表示为高速设备;为确定USB电缆是否与主机连接,采用EOT-N引脚检测USB接口的VBUS电压来实现;由于采用多路地址/数据总线配置,故A0接高平;此外,D+和D-两引脚各接18?电阻,起到一定的限流作用,以保护PDIUSBD12免受过流的冲击。
智能适配器USB-CAN软件设计
智能通信适配器USB-CAN的软件即USB固件主要完成两方面任务:响应来自主机的配置请求,完成对USB外设的列举操作;负责接收主机的命令并发送给CAN总线上的节点,以及接收各节点的数据并经USB总线传送给PC。
USB固件包括主程序、外部中断0子程序和外部中断1子程序。在主程序中主要完成SJA1000和PDIUSBD12的初始化操作并开放中断;外部中断0子程序处理CAN总线上事件,与智能节点对CAN总线的处理情况类似;外部中断1子程序处理USB总线上的事件。