《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于MCP2502X/05X的CAN总线节点设计
基于MCP2502X/05X的CAN总线节点设计
EEworld
EEworld
摘要: CAN总线以其成本低廉、通信实时性好、纠错能力强等优点广泛应用于汽车工业、电力系统变电站自动...
关键词: CAN总线 网络结构
Abstract:
Key words :

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)方便对器件预编程。

3.1.2 预编程CAN相关寄存器
    预编程CAN相关寄存器就是实现不同CAN协议,并通过CAN报文配置和操作其他寄存器。MCP2502X/05X系列器件在实现对器件本身控制的前提下,用户通过配置CAN模块相关寄存器,并根据实际情况设计协议的具体内容。扩展节点的CAN协议必须与主节点的CAN协议相匹配。该设计采用J1939协议标准配置CAN模块寄存器,由于CAN扩展节点与主节点之间要求点对点通信,所以采用PDU1格式,其29位标识符各位的含义如图3所示。

 

    图3中,源地址的高5位可编程,低3位与扩展器硬件相关联,用于实现特定的CAN命令,比如将报文源地址低3位写“000”,读取A/D转换器的寄存器。PS(PDU格式)要小于240,其他各位由应用层确定。按照协议标识符格式写配置寄存器。MCP2502X/5X器件包含3个独立的发送报文ID:TX-ID0、TXID1和TXID2。
    配置相应的寄存器预定义各种输出报文中每一个报文的数据长度码以及直接从器件外设寄存器输入待发送数据。器件按照预定义格式发送报文。配置接收屏蔽寄存器来定义CAN ID与可编程过滤器相比较的位。在29位标识符格式中,RXMEID0寄存器的EID2:EID0位设置为无关位。MCP2502X/5X定义2个独立的接收过滤器:RXF0和RXF1。其中,RXF0用于信息请求报文,而RXF1用于输入报文。按照预定标识符格式对过滤器进行预编程配置,过滤器的每一位与CAN ID的位相对应。为了接收报文,CAN ID中的每一位(相应屏蔽位设置为1时)必须和对应的过滤器位相匹配。忽略未满足屏蔽/过滤条件的报文。同时扩展节点配置为自动发送模式,即当采集输入信号变化或经一定时间间隔将自动发送信息。
3.2 用CAN报文配置扩展器
    由于配置寄存器通过CAN总线访问,因此除了采用预编程配置扩展器外,通信建立后,主节点通过命令报文配置器件,也可在线修改已配置的寄存器。命令报文种类由源地址的低3位确定。

4 扩展节点硬件结构及系统网络结构
    图4为扩展节点的硬件结构,MCP2502X/05X器件通过CAN驱动器与CAN总线相连。图5为系统网络结构。

    CAN总线本身是一种多主总线,理论上每个节点都可作为主节点,但基于MCP25132X/5X器件的CAN网络中必须有一个具有CAN接口的CPU作为主节点,来执行控制算法,并做出相应控制决策。而扩展节点只能作为从节点。其他节点则通过主节点与对应的从节点通信。

5 主节点软件设计
    在主节点软件设计过程中,将主节点和其对应的扩展节点看成同一个ECU(电控单元)的不同CA(控制器应用程序),并且地址可仲裁,主节点与扩展节点之间点对点通信,总线上所有ECU都遵循J1939协议进行通信,其他ECU通过主节点访问扩展节点。
    主节点软件由主处理、接收处理和发送处理3部分构成。其中,接收处理负责接收与本ECU地址相匹配的消息,并处理地址声明消息和地址请求消息,将应用消息填充到接收缓冲区;发送消息负责将发送缓冲区的数据发送到CAN总线。图6为主处理软件流程。

6 结论
    基于MCP2502X/05X器件设计CAN扩展节点无需大量编程,只需配置相关寄存器,连接简单电路就能实现与主节点的通信。在无需微控制器下扩展一个CAN节点,用户自行设置协议内容,非常灵活,其丰富的外设满足一般测控需要。将MCP2502X/05X器件与J1939协议相结合,可方便设计汽车的前端测控模块,并与整个车载CAN网络相连。这种设计方案系统结构简单、成本降低、提高信号传输的可靠性,在车载CAN网络,尤其是前端测控模块中具有广泛的应用前景。

此内容为AET网站原创,未经授权禁止转载。