-
1 知识介绍
-
2 PPT
-
3 学习视频
-
4 讨论
-
5 超级工程
一、CAN硬件节点构成

从图可以看到,CAN 总线上单个节点的硬件架构有两种方案:第一种硬件架构由 MCU、CAN 控制器和 CAN 收发器组成。这种方案采用了独立的 CAN 控 制器,优点是程序可以方便地移植到其他使用相同 CAN 控制器芯片的系统,缺点是需要占用 MCU 的 I/O 资源且硬件电路更复杂一些;第二种硬件架构由集成了 CAN 控制器的 MCU 和 CAN 收发器组成。这种方案的硬件电路简 单,缺点是用户编写的 CAN 驱动程序只适用某个系列的 MCU(如:ST 公司的 STM32F103、TI 的 tms320lf2407 等),可移植性较差。
二、CAN控制器
CAN 控制器是一种实现“报文”与“符合 CAN 规范的通信帧”之间相互转换的器件,它与 CAN 收发器相连,以便在 CAN 总线上与其他节点交换信息。
CAN 控制器主要分为两类:一类是独立的控制器芯片,如 NXP 半导体MCP2515,SJA1000 等。另一类与微控制器集成在一起,如:NXP 半导体的 P87C591 和 LPC11Cxx 系列微控制器, ST 公司的 STM32F103 系列和 STM32F407 系列等。
CAN 控制器内部的结构示意图如图所示,其中包括了接口管理逻辑、发送缓冲器、接收FIFO、接收滤波器和CAN核心模块。

接口管理逻辑用于连接微控制器,解释微控制器发送的命令,控制 CAN 控制器寄存器的 寻址,并向微控制器提供中断信息和状态信息。接收数据时,CAN核心模块用于将接收到的报文由串行流转换为并行数据;当发送数据时,CAN核心模块又可以将并行数据流转为串行流。发送缓冲器用于存储完整的报文。需要发送数据时,CAN 核心模块从发送缓冲器读取 CAN 报文。接收滤波器可根据用于的编程配置过滤掉无需接收的报文。当完整报文传送到接受滤波器时,由于接受滤波器的一些编程配置,可以分离出我们所需要的有用报文,将不需要的报文丢弃。接收 FIFO 是接收滤波器与微控制器之间的接口,用于存储从 CAN 总线上接收的所有报文。
STM32F1 系列微控制器内部集成了 CAN 控制器,名为 bxCAN(Basic Extended CAN)。bxCAN 支持 CAN 技术规范 V2.0A 和 V2.0B,通信比特率高达 1Mb/s,支持时间触发通信方案。
数据发送相关的特性有:bxCAN含三个发送邮箱,在检测到总线空闲时交发送,但需要注意的是,有可能会发送失败,有可能因为仲裁失败从而导致失败,也有可能是其它错误,原则上bxCAN将自动重发,但bxCAN也可以配置不自动重发。正因为如此,发送邮箱中有可能同时存在多个需要发送的报文,一旦出现这种情况,那么发送邮箱中的多个报文又将是谁先发送谁后发送呢?有两种模式:ID模式和FIFO模式。ID模式由报文的ID值决定,即ID值越小,优先级越高,另一种FIFO模式,顾名思义,即为消息队列方式,谁先到谁先发送,
在数据接收方面的特性有:bxCAN 含两个具有三级深度的接收 FIFO,其上溢参数可配 置,并具有可调整的筛选器组,帧起始段支持接收时间戳。
bxCAN 有三种主要的工作模式:初始化、正常和睡眠。硬件复位后,bxCAN 进入睡眠模 式以降低功耗。当硬件处于初始化模式时,可以进行软件初始化操作。一旦初始化完成,软件必须向硬件请求进入正常模式,这样才能在 CAN 总线上进行同步,并开始接收和发送。同时为了方便用户调试,bxCAN 提供了测试模式,包括静默、回环与静默回环组合。
正常模式:可正常地向 CAN 总线发送数据或从总线上接收数据。

静默模式:只能向 CAN 总线发送数据 1(隐性电平),不能发送数据 0(显性电平),但可以正常地从总线上接收数据。由于这种模式发送的隐性电平不会影响总线的电平状态,故称之为静默模式。

环回模式:向 CAN 总线发送的所有内容同时会直接传到接收端,但无法接收总线上的任何数据。这种模式一般用于自检。

环回与静默组合模式:这种模式是静默模式与环回模式的组合,同时具有两种模式的特点。

三、CAN收发器
CAN 收发器是 CAN 控制器与 CAN 物理总线之间的接口,它将 CAN 控制器的“逻辑电平” 转换为“差分电平”,并通过 CAN 总线发送出去。
根据 CAN 收发器的特性,可将其分为以下四种类型:一是通用 CAN 收发器,常见型号有:NXP 半导体的 PCA82C250 芯片;二是隔离 CAN 收发器。隔离 CAN 收发器的特性是具有隔离、ESD 保护及 TVS 管防总线过 压的功能,常见型号有:CTM1050 系列、CTM8250 系列等。


三是高速 CAN 收发器。高速 CAN 收发器的特性是支持较高的 CAN 通信速率,常见型号有: NXP 半导体的 SN65HVD230、TJA1050、TJA1040 等;四是容错 CAN 收发器。容错 CAN 收发器可以在总线出现破损或短路的情况下保持正常运 行,对于易出故障领域的应用具有至关重要的意义,常见型号有:NXP 半导体的 TJA1054、 TJA1055 等。
接下来以 NXP 半导体的 SN65HVD230 为例,讲解 CAN 收发器芯片的工作原理与典型应用电路:

图例展示了基于 CAN 总线的多机通信系统接线图:在图中,电阻 R14 与 R15 为终端匹配电阻,其阻值为 120Ω。SN65HVD230 芯片的 封装是 SOP-8,RXD 与 TXD 分别为数据接收与发送引脚,它们用于连接 CAN 控制器的数据收 发端。CAN_H、CAN_L 两端用于连接 CAN 总线上的其他设备,所有设备以并联的形式接在 CAN 总线上。

