2.1概述导读在上一章CAN协议理论知识基础上,从本章开始至第5章,我们将以实战形式学习CAN-bus。目标:构建两个节点的CAN-bus网络,实现相应控制。进度安排:由自底向上分为4个部分:CAN节点应用程序目录功能电路及其驱动CAN节点典型结构CAN硬件驱动CAN应用层协议CAN网络与节点实现不同特定功能的节点连接到同一条CAN电缆上,它们之间使用相同的“语言”(应用层协议)进行通信,从而协调一致地工作。虽然不同节点完成功能不同,但具有相同的硬件和软件结构,接下来我们将介绍一个CAN节点的典型结构。CAN节点典型结构应用程序(eg.MCU=P89V51)CAN收发器eg.CTM8251CAN控制器eg.SJA1000CAN硬件驱动CAN应用层协议驱动功能电路Eg.LED/KEY功能电路驱动CAN节点结构由CAN-bus节点的典型结构如下,它至少由3部分组成。1CAN控制器/收发器分别对应ISO/OSI模型的数据链路层和物理层,完成CAN报文的收发。2功能电路完成特定的功能,如信号采集或控制外设等。3主控制器与应用软件控制各个硬件部件工作;按照CAN报文使用规则解析CAN报文;采集并发送数据等。目录功能电路及其驱动CAN节点典型结构CAN硬件驱动CAN应用层协议CAN硬件驱动应用程序(eg.MCU=P89V51)CAN硬件驱动CAN收发器eg.CTM8251CAN控制器eg.SJA1000CAN应用层协议驱动功能电路Eg.LED/KEY功能电路驱动CAN节点结构CAN硬件驱动是运行在主控制器(如P89V51RB2)上的程序,它主要完成以下工作:初始化CAN控制器;发送CAN报文;接收CAN报文;……基于寄存器的操作CAN硬件驱动CAN硬件驱动1上层程序…….各种CAN控制器特性不同,控制方式有差异难以达到通用的目的增加虚拟驱动,屏蔽不同CAN控制器差异虚拟CAN驱动(固定的接口)良好可移植性CAN硬件驱动2CAN硬件驱动3如果直接调用CAN硬件驱动程序,当更换CAN控制器时,将导致修改上层程序,程序移植性差目录功能电路及其驱动CAN节点典型结构CAN硬件驱动CAN应用层协议节点A节点BCAN-busCAN应用层协议CAN-bus只提供可靠的报文传输服务,当一个CAN节点接收到另外一个CAN节点发来的报文时将会产生以下疑问。因此,CAN网络中的所有节点必须遵循统一的规则,它规定了CAN帧ID和帧数据的使用方式等,这个规则就是CAN应用层协议。常见的CAN应用层协议有:CANOpen、DeviceNet、J1939、iCAN等。CAN报文1是谁发来的?里面说的什么呢?CAN报文1CAN应用层协议驱动应用程序(eg.MCU=P89V51)CAN硬件驱动CAN收发器eg.CTM8251CAN控制器eg.SJA1000CAN应用层协议驱动功能电路Eg.LED/KEY功能电路驱动CAN节点结构协议驱动是运行在主控制器(如P89V51RB2)上的程序,它按照CAN应用层协议对CAN报文进行定义,完成CAN报文的解析与拼装等。例如,我们将CAN帧ID用于表示为节点的地址时接收时,若收到的CAN帧ID与自身地址相同,则将CAN帧交给上层处理,否则直接丢弃;发送时,将待发送的CAN帧ID设置为接收节点的地址。目录功能电路及其驱动CAN节点典型结构CAN硬件驱动CAN应用层协议功能电路及其驱动应用程序(eg.MCU=P89V51)CAN硬件驱动CAN收发器eg.CTM8251CAN控制器eg.SJA1000CAN应用层协议驱动功能电路Eg.LED/KEY功能电路驱动CAN节点结构一个CAN节点除了完成通信的功能,还包括一些完成特定功能的硬件电路及其驱动程序。完成特定功能,如:信号采集;人机显示;……向下直接控制功能电路;向上为应用层提供控制功能电路的函数接口。