图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网络,尤其是前端测控模块中具有广泛的应用前景。