1 引言
CAN总线以其成本低廉、通信实时性好、纠错能力强等优点广泛应用于汽车工业、电力系统变电站自动化、智能大厦等系统。J1939协议是SEA于1998年提出的,主要应用于运输、农林机车、船舶等大型交通工具。Microchip公司推出的MCP2502X/2505X CAN I/O系列扩展器可独立作为CAN扩展节点,通过配置实现不同的CAN协议。本文以J1939为通信协议,基于该器件设计CAN扩展节点,方便实现汽车的前端测控功能,并且与整个车载CAN网络相连。
2 MCP2502X/05X CAN I/O扩展器简介
MCP2502X/5X器件可作为CAN系统的I/O扩展器使用,支持CANV2.0B Active,可在原始数据与CAN报文之间进行协议转换,总线速率最大可达1 Mb/s。MCP2502X/5X器件具有多个外设,包括数字I/O、4通道10位A/D转换器和能够在引脚状态变化时自动发送报文的PWM输出,包括超过预设门限值的模拟输入,提供1个屏蔽寄存器和2个接收过滤器,使得在设计系统时与器件响应标识符相关部分具有最大限度的灵活性。该器件也可配置为在任何时候发生一个或多个错误时,能够自动发送唯一报文。可在非易失性存储器中对器件进行预编程,这样器件在配置过程可默认为特定配置。
3 扩展节点配置
基于MCP2502X/5X的CAN网络必须有一个具有CAN接口的CPU做为主节点,MCP2502X/05X只能作为扩展节点,通过配置完成工作。器件配置方法有两种:预编程用户寄存器和CAN报文在线配置。MCP2502X/05X器件的用户E-PROM出厂时是空白的,所以在上电前要对其预编程,编程结果在上电复位后自配置为默认配置。为了与主节点之间实现基于J1939协议通信,上电前先按J1939标识符格式对CAN模块寄存器预编程。对MCE2502X/05X器件的用户寄存器预编程有三种方法,分别为用MPLAB IDE配套PROMATE II编程器;在线串行编程(ICSP);根据ICSP的原理设计专门的编程电路,配合微芯公司的编程软件MCP250XXProgrammer对器件预编程。这里采用第三种方法。
3.1 预编程用户寄存器
3.1.1 预编程电路设计
编程需要VDD(2.0~6.0 V)和VPP(12~14 V)两个电源,如图1所示。图1中,通用开关稳压器LM78S40CN输出可调的1.25~40 V的稳定电压产生所需的VPPPC机通过场效应管MTSF2P02控制VPP和VDD的通断,实现编程逻辑。
图2为编程数据、时钟逻辑电路以及编程电路与PC机的接口电路。编程电路通过并口与PC机连接。在编程电路和PC机连接后,利用Microchip公司提供的具有形象图形化界面的软件(MCP250X X Programmer)方便对器件预编程。