MICROCHIP MCP2515 Technical data

MCP2515
带有 SPI 接口的独立 CAN 控制器
特性
完全支持 CAN V2.0B 技术规范,通讯速率为 1Mb/s
-0-8 字节长的数据字段
- 标准和扩展数据帧及远程帧
接收缓冲器、验收屏蔽寄存器和验收滤波寄存器:
- 六个 29 位验收滤波寄存器
- 二个 29 位验收屏蔽寄存器
对头两个数据字节进行滤波 (针对标准数据帧)
三个发送缓冲器,具有优先级设定及发送中止功能
高速 SPI 接口 (10 MHz):
- 支持 0,0 1,1 SPI 模式
单触发模式确保报文发送只尝试一次
带有可编程预分频器的时钟输出引脚:
- 可用作其他器件的时钟源
可用起始帧信号 (Start-of-FrameSOF),用于
监控 SOF 信号:
- 可用于时隙协议和/或总线诊断以检测早期总
线性能退化
“缓冲器满”输出引脚可配置为:
- 各接收缓冲器的中断引脚
- 通用数字输出引脚
“请求发送 (Request-to-SendRTS)”输入引
脚可各自配置为:
- 各发送缓冲器的控制引脚,用于请求立即发送
报文
- 通用数字输入引脚
低功耗的 CMOS 技术:
- 工作电压范围 2.7V 5.5V
-5mA典型工作电流
-1µA典型待机电流 (休眠模式)
工作温度范围:
- 工业级 (I):-40°C 至 +85°C
- 扩展级 (E): -40°C +125°C
说明
Microchip MCP2515 是一款独立控制器局域网络
Controller Area NetworkCAN)协议控制器,完全
支持 CAN V2.0B 技术规范。该器件能发送和接收标准 和扩展数据帧以及远程帧。 MCP2515 自带的两个验收 屏蔽寄存器和六个验收滤波寄存器可以过滤掉不想要的 报文,因此减少了主单片机(MCU)的开销。MCP2515MCU 的连接是通过业界标准串行外设接口 (Searial Peripheral InterfaceSPI)来实现的。
封装类型
18 引脚 PDIP/SOIC
TXCAN
RXCAN
CLKOUT/SOF
TX0RTS
TX1RTS
TX2RTS
OSC2
OSC1
20 引脚 TSSOP
TXCAN
RXCAN
CLKOUT/SOF
TX0RTS TX1RTS
TX2RTS
OSC2 OSC1
VSS
Vss
NC
10
1
2
3
4
5
6
MCP2515
7
8
9
1 2 3 4
5 6 7 8
MCP2515
9
18
17
16
15
14
13
12
11
10
20 19 18 17
16 15 14 13 12 11
DD
V
RESET
CS
SO
SI
SCK
INT
RX0BF
RX1BF
VDD RESET CS
SO SI NC SCK INT
RX0BF RX1BF
2005 Microchip Technology Inc. 初稿 DS21801D_CN 第 1
MCP2515
注:
DS21801D_CN 2 初稿 2005 Microchip Technology Inc.
MCP2515

1.0 器件概述

MCP2515 是一款独立CAN 控制器,可简化需要与 CAN 总线连接的应用。图 1-1 简要显示了 MCP2515 的结构 框图。该器件主要由三个部分组成:
1. CAN 模块,包括 CAN 协议引擎、验收滤波寄存
器、验收屏蔽寄存器、发送和接收缓冲器。
2. 用于配置该器件及其运行的控制逻辑和寄存器。
3. SPI 协议模块。
1-2 显示了该器件的典型系统应用。

1.1 CAN 模块

CAN 模块的功能是处理所有 CAN 总线上的报文接收和 发送。报文发送时,首先将报文装载到正确的报文缓冲 器和控制寄存器中。通过 SPI 接口设置控制寄存器中的 相应位或使用发送使能引脚均可启动发送操作。通过读 取相应的寄存器可以检查通讯状态和错误。会对在 CAN 总线上检测到的任何报文进行错误检查,然后与用户定 义的滤波器进行匹配,以确定是否将报文移到两个接收 缓冲器中的一个。

1-1 结构框图

CAN 模块

1.2 控制逻辑

通过与其他模块连接,控制逻辑模块控制 MCP2515 的 设置和运行,以便传输信息与控制。
所提供的中断引脚提高了系统的灵活性。器件上有一个 多用途中断引脚及各接收缓冲器的专用中断引脚,用于 指示有效报文是否被接收并载入接收缓冲器。可选择使 用专用中断引脚。通用中断引脚和状态寄存器 (通过 SPI 接口访问)也可用来确定何时接收了有效报文。
器件还有三个引脚,用来启动将装载在三个发送缓冲器 之一中的报文立即发送出去。是否使用这些引脚由用户 决定;若不使用,也可利用控制寄存器(通过 SPI 接口 访问)来启动报文发送。

1.3 SPI 协议模块

MCU通过SPI接口与该器件连接。使用标准的SPI读/写 指令以及专门的 SPI 命令来读 / 写所有的寄存器。
RXCAN
TXCAN
OSC1 OSC2
CLKOUT
CAN
协议 引擎
时序
发生器
控制
中断
寄存器
发送和接收缓冲器
验收屏蔽寄存器和 验收滤波器  
控制逻辑
SPI
接口 逻辑
CS SCK SI
SO
INT
RX0BF
RX1BF
TX0RTS
TX1RTS
TX2RTS
RESET
SPI
总线
2005 Microchip Technology Inc. 初稿 DS21801D_CN 3
MCP2515

1-2 典型系统实现方法图

CANH
CANL
节点
控制器
SPI
MCP2515
TX
XCVR
RX
节点
控制器
SPI
MCP2515
TX
XCVR
RX
节点
控制器
SPI
MCP2515
TX
XCVR
RX

1-1 引脚说明

名称
TXCAN 1 1 O 连接到 CAN 总线的发送输出引脚
RXCAN 2 2 I 连接到 CAN 总线的接收输入引脚
CLKOUT 3 3 O 带可编程预分频器的时钟输出引脚 起始帧信号
TX0RTS
TX1RTS
TX2RTS
OSC2 7 8 O 振荡器输出
OSC1 8 9 I 振荡器输入 外部时钟输入引脚
V
RX1BF 10 11 O 接收缓冲器 RXB1 中断引脚或通用数字
RX0BF
INT
SCK 13 14 I SPI 接口的时钟输入引脚
SI 14 16 I SPI 接口的数据输入引脚
SO 15 17 O SPI 接口的数据输出引脚
CS 16 18 I SPI 接口的片选输入引脚
RESET
VDD 18 20 P 逻辑和 I/O 引脚的正电源
NC 6,15 无内部连接
PDIP/SOIC
引脚号
44I发送缓冲器 TXB0 请求发送引脚或通用
55I发送缓冲器 TXB1 请求发送引脚或通用
67I发送缓冲器 TXB2 请求发送引脚或或通
SS 910P逻辑和 I/O 引脚的参考地
11 1 2 O 接收缓冲器 RXB0 中断引脚或通用数字
12 13 O 中断输出引脚
17 19 I 低电平有效的器件复位输入引脚
TSSOP
引脚号
I/O/P
类型
说明 备选引脚功能
数字输入引脚。 V 上拉电阻
数字输入引脚。 V 上拉电阻
用数字输入引脚。 V 部上拉电阻
输出引脚
输出引脚
DD
DD
上连 100k内部
上连 100k内部
上连 100k
DD
通用数字输入引脚。 VDD 上连 100 kΩ 内部上拉电阻
通用数字输入引脚。 VDD 上连 100 kΩ 内部上拉电阻
通用数字输入引脚。 VDD 上连 100 kΩ 内部上拉电阻
通用数字输出引脚
通用数字输出引脚
注: 类型标识:I = 输入; O = 输出; P = 电源
DS21801D_CN 4 初稿 2005 Microchip Technology Inc.
1.4 发送 / 接收缓冲器/验收屏蔽寄存器
/验收滤波寄存器
MCP2515 有三个发送缓冲器和两个接收缓冲器,两个 验收屏蔽寄存器(分别对应不同的接收缓冲器)以及六 个验收滤波寄存器。图 1-3 的框图显示了这些缓冲器及 它们与 CAN 协议引擎的连接方法。

1-3 CAN 缓冲器和协议引擎框图

MCP2515
缓冲器
TXB0
TXREQ
ABTF
MLOA
TXERR
报文 队列 控制
协议 引擎
验收屏蔽寄存器
RXM1
验收滤波寄存器
RXF2
M A B
验收滤波寄存器
RXF3
验收滤波寄存器
RXF4
验收滤波寄存器
RXF5
标识符
接收 错误
计数器
发送 错误
计数器
协议 有限 状态
TXB1
TXB2
TXREQ
ABTF
MLOA
TXERR
MESSAGE
TXREQ
ABTF
MLOA
TXERR
MESSAGE
发送字节序列发生器
{ 发送 <5:0>,接 收 <8:0>}
移位 <14:0>
MESSAGE
比较器
CRC<14:0>
验收屏蔽寄存器
验收滤波寄存器
验收滤波寄存器
R X B 0
接收 <7:0> 发送 <7:0>
RXM0
RXF0
RXF1
标识符
数据字段 数据字段
R X B 1
REC
TEC
ErrPas BusOff
SOF
发送 逻辑
TX RX
2005 Microchip Technology Inc. 初稿 DS21801D_CN 5
位 时序 逻辑
时钟
发生器
配置
寄存器
MCP2515

1.5 CAN 协议引擎

CAN 协议引擎包含数个功能模块,见图 1-4。下面将对 这些模块及其功能进行介绍。
1.5.1 协议有限状态机
协议引擎的核心是有限状态机 (Finite State Machine, FSM)。FSM 是一个定序器,对 TX/RX 移位寄存器、循 环冗余校验 (Cyclic Redundancy CheckCRC)寄存 器和总线之间的顺序数据流进行控制。 FSM 还对错误 管理逻辑(Error Management LogicEML)及 TX/RX 移位寄存器和缓冲器之间的并行数据流进行控制。FSM 确保了依据 CAN 协议,进行报文接收、总线仲裁、报 文发送以及错误信号发生等操作过程。 FSM 还对总线 上报文的自动重发进行处理。
1.5.2 循环冗余校验
循环冗余校验寄存器产生循环冗余校验 (CRC)代码。 该代码在控制字段(数据字节数为 0 的报文)或数据字 段之后被发送,并用来检查进入报文的 CRC 字段。

1-4 CAN 协议引擎框图

RX
采样 <2:0>
多数 决定
位时序逻辑
SAM
StuffReg<5:0>
1.5.3 错误管理逻辑
错误管理逻辑 (EML)负责将 CAN 器件的故障进行隔 离。该逻辑有两个计数器,即接收错误计数器(Receive
Error Counter, REC)和发送错误计数器 (Transmit Error Counter, TEC)。这两个计数器根据来自位流处
理器的命令进行增减计数。根据错误计数器的计数值, CAN 控制器将被设定为错误主动、错误被动或总线关闭 三种状态。
1.5.4 位时序逻辑
位时序逻辑 (Bit Timing Logic, BTL)可监控总线输 入,并根据 CAN 协议处理与总线相关的位时序操作。 BTL 在起始帧时,对从隐性状态到显性状态的总线过渡 进行同步操作 (称为硬同步)。如果 CAN 控制器本身 不发送显性位,则在以后的隐性状态到显性状态总线过 渡时会再进行同步操作(称为再同步)。BTL 还提供可 编程时间段以补偿传播延迟时间和相位位移,并对位时 段内的采样点位置进行定义。对 BTL 的编程取决于波特 率和外部物理延迟时间。
发送逻辑
接收
错误计数器
发送
错误计数器
TX
REC
TEC
ErrPas
BusOff
BusMon
比较器
CRC<14:0>
比较器
(发送 <5:0>,接 收 <7:0>
接收 <7:0> 发送 <7:0>
RecData<7:0>
连接到标准缓冲器
移位 <14:0>
TrmData<7:0>
协议
FSM
接收 / 发送地址
SOF
DS21801D_CN 第 6 页 初稿  2005 Microchip Technology Inc.
MCP2515

2.0 CAN 报文帧

MCP2515支持 CAN 2.0B 技术规范中所定义的标准数据 帧、扩展数据帧和远程帧 (标准和扩展)。

2.1 标准数据帧

CAN 标准数据帧如图 2-1 所示。与其他所有帧一样,帧 以起始帧 (SOF)位开始, SOF 为显性状态,允许所 有节点的硬同步。
SOF之后是仲裁字段,由12个位组成,分别为 11 个标识 位和一个远程发送请求 (Remote Transmission RequestRTR)位。 RTR 位用于区分报文是数据帧
RTR 位为显性状态)还是远程帧 (RTR 位为隐性状
态)。
仲裁字段之后是控制字段,由 6 个位组成。控制字段的 第一位为标识扩展(Identifier ExtensionIDE)位 ,该 位应是显性状态来指定标准帧。标识扩展位的下一位为 零保留位(RB0),CAN 协议将其定义为显性位。控制 字段的其余 4 位为数据长度码 (Data Length CodeDLC),用来指定报文中包含的数据字节数 (0 到 8 节)。
控制字段之后为数据字段,包含要发送的任何数据字 节。数据字段长度由上述 DLC 定义 (0 8 字节)。
数据字段之后为循环冗余校验(CRC)字段,用来检测 报文传输错误。CRC 字段包含一个 15 位的 CRC 序列, 之后是隐性的 CRC 定界位。
最后一个字段是确认字段 (ACK), 由 2 个位组成。在 确认时隙(ACK Slot)位执行期间,发送节点发出一个 隐性位。任何收到无错误帧的节点会发回一个显性位
(无论该节点是否配置为接受该报文与否)来确认帧收
到无误。确认字段以隐性确认定界符结束,该定界符可 能不允许被改写为显性位。
SRR lDE位之后是标识符的其余 18 位(扩展lD)及一 个远程发送请求位。
为使标准帧和扩展帧都能在共享网络上发送,应将29位 扩展报文标识符拆成高 11 位和低 18 位两部分。拆分后 可确保 lDE 位在标准数据帧和扩展数据帧中的位置保持 一致。
仲裁字段之后是 6 位控制字段。控制字段前两位为保留 位,必须定义为显性位。其余 4 位为 DLC,用来指定报 文中包含的数据字节数。
扩展数据帧的其他部分 (数据字段、 CRC 字段、确认 字段、帧结尾和间断)与标准数据帧的结构相同 (见第
2.1 节 “标准数据帧”)。

2.3 远程帧

通常,数据传输是由数据源节点(例如,传感器发出数 据帧)自主完成的。但也可能存在目标节点向源节点请 求发送数据的情况。要做到这一点,目标节点需发送一 个远程帧,其中的标识符应与所需数据帧的标识符相匹 配。随后,相应的数据源节点会发送一个数据帧以响应 远程帧请求。
远程帧 (如图 2-3 所示)与数据帧存在两点不同:1) 远程帧的 RTR 位为隐性状态; 2)远程帧没有数据字 段。当带有相同标识符的数据帧和远程帧同时发出时, 数据帧将赢得仲裁,因为其标识符后面的 RTR 位为显 性。这样,可使发送远程帧的节点立即收到所需数据。

2.4 错误帧

错误帧是由检测到总线错误的任一节点产生。如图 2-4 所示,错误帧包含两个字段:错误标志字段及紧随其后 的错误定界字段。错误标志字段有两种类型。节点发送 哪种类型的错误标志字段,取决于检测到错误并产生错 误标志字段的节点的错误状态。

2.2 扩展数据帧

在扩展 CAN 数据帧中(如图 2-2 所示),紧随 SOF 位 的是 32 位的仲裁字段。仲裁字段的前 11 位为 29 位标 识符的最高有效位(Most Significant bitMSb)(基本
lD)。紧随这 11 位的是替代远程请求 (Substitute Remote Request, SRR)位,定义为隐性状态。 SRR 位之后是 lDE 位,该位为隐性状态时表示这是扩展的 CAN 帧。
应该注意的是,如果发送完扩展帧标识符的前 11 位后, 总线仲裁无果,而此时其中一个等待仲裁的节点发出标 准 CAN 数据帧 (11 位标识符),那么,由于节点发出 了显性 lDE 位而使标准 CAN 帧赢得总线仲裁。另外, 扩展 CAN 帧的 SRR 位应为隐性,以允许正在发送标准 CAN 远程帧的节点发出显性 RTR 位。
2005 Microchip Technology Inc. 初稿 DS21801D_CN 7
MCP2515
2.4.1 主动错误
当错误主动节点检测到一个总线错误时,这个节点将产 生一个主动错误标志来中断当前的报文发送。主动错误 标志由 6 个连续的显性位构成。这种位序列主动打破了 位填充规则。所有其他节点在识别到所生成的位填充错 误后,会自行产生错误帧,称为错误反射标志。
错误标志字段因此包含 6 12 个连续显性位 (由 1 个 或多个节点产生)。错误定界字段 (8 个隐性位)为错 误帧划上句号。在错误帧发送完毕后,总线主动恢复正 常状态,被中断的节点会尝试重新发送被中止的报文。
注: 在局部干扰导致一个或多个 (但非全部)
节点发送错误标志时通常会产生错误反射 标志。其他节点产生错误标志作为对最初 错误标志的响应 (反射)。 .
2.4.2 被动错误
当错误被动节点检测到一个总线错误时,该节点将发送 一个被动错误标志,并紧接着发送错误定界字段。错误 被动标志由 6 个连续的隐性位构成,而错误被动节点发 出的错误帧包含 14 个隐性位。由此可知,除非总线错误 被错误主动节点或正在发送报文的节点检测到,否则由 于错误被动标志不会影响总线运行,将继续发送报文。
如果发送节点产生一个错误被动标志,那么,由于位填 充规则被打破,将导致其他节点产生错误帧。错误帧发 送完毕后,错误被动节点必须等待总线上出现 6 个连续 隐性位后,才能尝试重新参与总线通讯。
错误定界符由 8 个隐性位组成,允许总线节点在错误发 生后重新启动总线通讯。

2.5 过载帧

如图 2-5 所示,过载帧与主动错误帧具有相同的格式。 但是,过载帧只能在帧间间隔产生,因此可通过这种方 式区分过载帧和错误帧 (错误帧是在帧传输时发出 的)。过载帧由两个字段组成,即过载标志和随后的过 载定界符。过载标志由 6 个显性位和紧随其后的其他节 点产生的过载标志构成 (而主动错误标志最多包含 12 个显性位)。过载定界符包含 8 个隐性位。节点在两种 情况下会产生过载帧:
1. 节点在帧间间隔检测到非法显性位。在 IFS 的第 三位期间检测到显性位除外。这种情况下,接收 器会把它看作一个 SOF 信号。
2. 由于内部原因,节点尚无法开始接收下一条报 文。节点最多可产生两条连续的过载帧来延迟下 一条报文的发送。
注: 由于内部延迟时间非常短,MCP2515 不会
发生第二种情况。

2.6 帧间间隔

帧间间隔将前一条帧(无论何种类型)与其后的数据帧 或远程帧间隔开。帧间间隔至少由 3 个隐性位构成,又 称为间断。间断使节点在发送下一条报文之前有时间进 行内部处理。在间断之后, CAN 总线将保持隐性状态
(总线空闲),直至下一条报文开始发送。
DS21801D_CN 8 初稿 2005 Microchip Technology Inc.

2-1 标准数据帧

MCP2515
IFS
1 1 11
7
帧结束
确认定界符
1 1 1 1 1 1 1
确认间隙位
CRC 定界符
1
数据帧(位数 = 44 + 8N) 
16
CRC 字段
8N (0≤N≤8)
数据字段
6
控制
4
字段
8
8
15
CRC
DLC0
DLC3 RB0 IDE RTR ID0
位填充
存储于发送 / 接收缓冲器中
数据
长度码
0 0
保留位
ID3
12
2005 Microchip Technology Inc. 初稿 DS21801D_CN 第 9
11
仲裁字段
ID 10
帧起始
标识符
报文滤波
0 0
存储于缓冲器中
MCP2515

2-2 扩展数据帧

16
IFS
1 1 1
7
帧结束
确认定界符
1 1 1 1 1 1 1 1
确认间隙位
CRC 定界符
15
CRC
CRC 字段
数据帧(位数 = 64 + 8N
8N (0 N 8)
数据字段
6
控制
32
仲裁字段
8 8
DLC0
4
DLC3
字段
18
RB0 RB1 RTR EID0
EID17 IDE SRR ID0
ID3
数据
长度码
扩展标识符
存储在发送/接收缓冲器中
保留位
位填充
存储在缓冲器中
11
报文滤波
标识符
ID10
帧起始
0 1 1 0 0 0 1
DS21801D_CN 10 初稿  2005 Microchip Technology Inc.

2-3:远

7
16
CRC 字段
MCP2515
IFS
1 1 1
帧结束
确认定界符 确认间隙位
CRC 定界符
1 1 1 1 1 1 1 1 1
15
CRC
6
32
控制字段
仲裁字段
DLC0
无数据字段
4
DLC3
18
11
RB0 RB1 RTR EID0
EID17 IDE SRR ID0
ID3
数据
长度码
扩展标识符
报文滤波
标识符 
保留位
ID10
帧起始
0 1 1 1 0 0
2005 Microchip Technology Inc. 初稿 DS21801D_CN 11
带扩展标识符的远程帧
MCP2515

2-4 主动错误帧

8
错误帧
£ 6
帧间间隔或  
过载帧
错误定界符
反射错误标志 
0 1 1 1 1 1 1 1 1 0 0
被中断的数据帧
8N (0≤N≤8)
数据字段
6
控制字段
6
错误
标志
0 0 0 0 0 0 0
8
数据帧或远程帧 
8
DLC0
4
DLC3 RB0 IDE RTR ID0
ID3
数据
长度码
0 0
位填充
保留位
12
DS21801D_CN 12 初稿  2005 Microchip Technology Inc.
11
仲裁字段
ID 10
帧起始
标识符
报文滤波
0 0

2-5:过

帧间间隔或错误帧
过载帧
MCP2515
8
过载定界符
6
过载标志
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
7
帧结束
确认定界符
1 1 1 1 1 1 1 1
确认间隙位
CRC 定界符
1
帧结束或
错误定界符或
过载定界符
16
远程帧(位数 = 44
6
12
CRC 字段
控制字段
15
CRC
DLC0
4
DLC3 RB0
0
IDE
0
RTR ID0
11
仲裁字段
ID 10
帧起始
0 1
2005 Microchip Technology Inc. 初稿 DS21801D_CN 第 13
MCP2515
注:
DS21801D_CN 14 初稿 2005 Microchip Technology Inc.
MCP2515

3.0 报文发送

3.1 发送缓冲器

MCP2515 采用三个发送缓冲器。每个发送缓冲器占用 14 字节的 SRAM,并映射到器件存储器中。
其中第一个字节 TXBnCTRL 是与报文缓冲器相关的控 制寄存器。该寄存器中的信息决定了报文在何种条件下 发送,并在报文发送时指示其状态 (见寄存器 3-1)。
5 个字节来装载标准和扩展标识符以及其他报文仲裁 信息 (见寄存器 3-3 到寄存器 3-7)。最后 8 个字节用 于装载等待发送报文的 8 个可能的数据字节 (见寄存 器 3-8)。
至少须将 TXBnSIDHTXBnSIDL TXBnDLC 寄存器 装载数据。如果报文包含数据字节,还需要对 TXBnDm 寄存器进行装载。若报文采用扩展标识符,应对 TXB-
nEIDm 寄存器进行装载,并将 TXBnSIDL.EXIDE 位置 1
在报文发送之前, MCU 应对 CANINTE.TXInE 位进行 初始化,以便在报文发送时使能或禁止中断的产生。
注: 在写入发送缓冲器之前,必须将
TXBnCTRL.TXREQ 位清零 (表明发送缓 冲器无等待发送的报文)。

3.2 发送优先级

发送优先级是指 MCP2515 内部等待发送报文的优先 级。它与 CAN 协议中固有的报文仲裁优先级无关。
在发送起始帧 SOF 之前,器件将所有等待发送报文的 发送缓冲器的优先级进行比较。具有较高优先级的发送 缓冲器将首先发送。例如,发送缓冲器 0 的优先级比发 送缓冲器 1 高,发送缓冲器 0 将首先发送。
如果两个发送缓冲器的优先级相同,编号较高的发送缓 冲器将优先发送。例如,发送缓冲器 1 与发送缓冲器 0 的优先级相同,缓冲器 1 将优先发送。
发送优先级的设定共有 4 个等级。如果某个发送缓冲器 的 TXBnCTRL.TXP<1:0> 设定为 11,该发送缓冲器具 有最高的发送优先级。如果 TXBnCTRL.TXP<1:0> 设定 为 00,该发送缓冲器的发送优先级最低。

3.3 启动发送

通过将 TXBnCTRL.TXREQ 位置 1,可以启动相应缓冲 器的报文发送。它可以按如下方式设定:
利用 SPI 写命令写寄存器
发送 SPI RTS 命令
将要发送报文的发送缓冲器的T
电平
通过 SPI 接口启动报文发送后,可以同时将 TXREQ 位 和 TXP 优先级控制位置 1
TXBnCTRL.TXREQ 位置 1 后, TXBnCTRL.ABTFTXBnCTRL.MLOA TXBnCTRL.TXERR位都将被自动 清零。
注: TXBnCTRL.TXREQ 位置 1 不会启动报
文发送。仅会将报文缓冲器标记为准备发 送。当器件检测到总线空闲时,才会启动 报文发送。
报文发送成功后, TXBnCTRL.TXREQ 位将被清零, CANINTF.TXnIF 位置1,若 CANINTE.TXnIE 位被置 1 将产生中断。
如果报文发送失败, TXBnCTRL.TXREQ 将保持置 1, 表明该报文仍在等待发送。此时以下条件标志之一将被 置 1
TXBnCTRL.TXERRCANINTF.MERRF位将被置 1,此时在 CANINTE.MERRE 位置 1 后,器件将
NT 引脚产生中断
I
若发送报文总线仲裁失败, TXBnCTRL.MLOA
将被置 1
注: 如果使能了单触发模式
CANCTRL.OSM) ,以上所述的条件仍
然有效。然而,TXREQ 位会被清零,并且 报文不会尝试再次发送。
XnRTS 引脚置为低

3.4 单触发模式

单触发模式确保了报文只会发送一次。正常情况下,如 果 CAN 报文仲裁失败或被错误帧损坏,报文会尝试再 次发送。一旦单触发模式使能,报文只会发送一次,而 不管仲裁失败或产生错误帧与否。
单触发模式需要在确定性系统中保持时间间隙,如 TTCAN
2005 Microchip Technology Inc. 初稿 DS21801D_CN 15
MCP2515

3.5 TXnRTS 引脚

TXnRTS 为输入引脚,可配置为:
请求发送输入引脚,作为启动任一发送缓冲器中报
文发送的备用方法
标准数字输入引脚
通过设定 TXRTSCTRL 寄存器(见寄存器 3-2)可对这 些引脚进行配置和控制。只有在 MCP2515 处于配置模 式时才可对 TXRTSCTRL 寄存器内容进行修改 (见第
10.0 节 “工作模式”)。如果该引脚配置为请求发送引 脚,该引脚将被映射为发送缓冲器中相应的 TXBnC- TRL.TXREQ 位。TX 可将锁定 TXREQ位。用户可将 TXnRTS 引脚同 RXnBF 引脚直接相连,在 RXnBF 引脚变为低电平时自动启动 报文发送。
XnRTS 引脚具有 100 k(标称值)的内部上拉电阻。
T
nRTS 引脚的下降沿电平跳变信号

3.6 中止发送

MCU 可通过将特定报文缓冲器中对应的 TXBnC­TRL.TXREQ 位清零,请求中止该缓冲器中的报文发
送。
也可通过将 CANCTRL.ABAT 位置 1 来请求中止所有等 待发送的报文。用户必须复位该位才可继续发送报文
(通常须先确认所有的 TXREQ位都已清零)。只有通过
设定 CANCTRL.ABAT 位中止报文发送时,CAN- CTRL.ABTF 标志才会被置 1。通过复位 TXREQ 位来中 止报文发送,将不会使 ABTF 位置 1
注: 只有尚未开始发送的报文可被中止。报文
一旦没有发送成功 (如,仲裁失败或因错 误帧而中断),就会中止发送。
DS21801D_CN 16 初稿 2005 Microchip Technology Inc.

3-1 报文发送流程图

MCP2515
开始
检查 TXBnCTRL.TXP <1:0>  
以确定最高优先级的报文
任一
TXBnCTRL.TXREQ
= 1
?
清零:
TXBnCTRL.ABTF TXBnCTRL.MLOA TXBnCTRL.TXERR
CAN 总线是否
可进行报文发送?
报文发送
当器件确定任一发送控制寄存 器 TXBnCTRL.TXREQ 位被置 1 后,开始报文发送序列。
将置 1 TxBnCTRL.TXREQ 位清 零或在报文发送之前 CAN- CTRL.ABAT 位置 1 将会中止报文发 送。
TXBnCTRL.TXREQ=0
CANCTRL.ABAT=1
产生 中断
CANINTE.TXnIE 位决定在 报文发送成功后是否产生 中断。
报文成功发送?
TxBnCTRL.TXREQ 位清零
CANINTE.TXnIE=1?
CANTINF.TXnIF
1
返回开始
报文出错
仲裁失败?
仲裁失败
TxBNCTRL.MLOA
1
报文出错
TxBnCTRL.TXERR
1
CANINTE.MEERE
CANTINF.MERRF
1
产生
中断
2005 Microchip Technology Inc. 初稿 DS21801D_CN 17
MCP2515
寄存器 3-1 TXBnCTRL——发送缓冲器 n 控制寄存器 (地址:30h40h50h
U-0 R-0 R-0 R-0 R/W-0 U-0 R/W-0 R/W-0
ABTF MLOA TXERR TXREQ TXP1 TXP0
bit 7 bit 0
bit 7 未用:读为 0 bit 6 ABTF:报文发送中止标志位
1 = 报文中止 0 = 报文发送成功完成
bit 5 MLOA:报文仲裁失败位
1 = 报文发送期间仲裁失败 0 = 报文发送期间仲裁未失败
bit 4 TXERR:检测到发送错误位
1 = 报文发送期间发生总线错误 0 = 报文发送期间未发生总线错误
bit 3 TXREQ:报文发送请求位
1 = 缓冲器等待报文发送
MCU 将此位置 1 以请求报文发送-报文发送后该位自动清零)
0 = 缓冲器无等待发送报文
MCU 将此位清零以请求中止报文发送)
bit 2 未用:读为 0 bit 1-0 TXP:发送缓冲器优先级 <1:0> 位
11 = 最高的报文发送优先级 10 = 中偏高的报文发送优先级 11 = 中偏低的报文发送优先级 00 = 最低的报文发送优先级
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 1 0 = 清零 x = 未知值
DS21801D_CN 18 初稿  2005 Microchip Technology Inc.
MCP2515
寄存器 3-2 TXRTSCTRL——TXnRTS 引脚控制和状态寄存器 (地址:0Dh
U-0 U-0 R-x R-x R-x R/W-0 R/W-0 R/W-0
B2RTS B1RTS B0RTS B2RTSM B1RTSM B0RTSM
bit 7 bit 0
bit 7 未用:读为 0 bit 6 未用:读为 0 bit 5 B2RTS: T
- TX2RTS
- TX2RTS 为请求发送模式时,读为 0
bit 4 B1RTS:TX1RTX 引脚状态位
- TX1RTX 为数字输入模式时,读出值为该引脚的电平
- TX1RTX
bit 3 B0RTSTX0RTS
-TX0RTS
- TX0RTS 为请求发送模式时,读为 0
bit 2 B2RTSM:T
1 = 该引脚用来请求 TXB2 缓冲器发送报文 (在下降沿) 0 = 数字输入
bit 1 B1RTSM:T
1 = 该引脚用来请求 TXB1 缓冲器发送报文 (在下降沿) 0 = 数字输入
bit 0 B0RTSMTX0RTS 引脚模式位
1 = 该引脚用来请求 TXB0 缓冲器发送报文 (在下降沿) 0 = 数字输入
X2RTS 引脚状态位
为数字输入模式时,读出值为该引脚的电平
为请求发送模式时,读为 0
引脚状态位
为数字输入模式时,读出值为该引脚的电平
X2RTS 引脚模式位
X1RTS 引脚模式位
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 1 0 = 清零 x = 未知值
寄存器 3-3 TXBnSIDH——发送缓冲器 n 标准标识符高位 (地址:31h41h51h
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3
bit 7 bit 0
bit 7-0 SID:标准标识符位 <10:3>
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 1 0 = 清零 x = 未知值
2005 Microchip Technology Inc. 初稿 DS21801D_CN 第 19
MCP2515
寄存器 3-4 TXBnSIDL——发送缓冲器 n 标准标识符低位 (地址:32h42h52h
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
SID2 SID1 SID0 EXIDE —EID17EID16
bit 7 bit 0
bit 7-5 SID:标准标识符位 <2:0> bit 4 未用:读为 0 bit 3 EXIDE:扩展标识符使能位
1 = 报文将发送扩展标识符 0 = 报文将发送标准标识符
bit 2 未用:读为 0 bit 1-0 EID:扩展标识符位 <17:16>
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 1 0 = 清零 x = 未知值
寄存器 3-5 TXBnEID8——发送缓冲器 n 扩展标识符高位 (地址:33h43h53h
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
EID15 EID14 EID13 EID12 EID11 EID10 EID9 EID8
bit 7 bit 0
bit 7-0 EID:扩展标识符位 <15:8>
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 1 0 = 清零 x = 未知值
寄存器 3-6 TXBnEID0——发送缓冲器 n 扩展标识符低位 (地址:34h44h54h
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
EID7 EID6 EID5 EID4 EID3 EID2 EID1 EID0
bit 7 bit 0
bit 7-0 EID:扩展标识符位 <7:0>
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 1 0 = 清零 x = 未知值
DS21801D_CN 20 初稿  2005 Microchip Technology Inc.
MCP2515
寄存器 3-7 TXBnDLC——发送缓冲器 n 数据长度码 (地址:35h45h55h
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
—RTR— DLC3 DLC2 DLC1 DLC0
bit 7 bit 0
bit 7 未用:读为 0 bit 6 RTR:远程发送请求位
1 = 发送的报文为远程发送请求 0 = 发送的报文为数据帧
bit 5-4 未用:读为 0 bit 3-0 DLC:数据长度码位 <3:0>
设定要发送的数据长度 (0 8 字节)
注: 可以将 DLC 设定为大于 8 的值,但只发送 8 个字节。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 1 0 = 清零 x = 未知值
寄存器 3-8 TXBnDm——发送缓冲器 n 数据字节 m
(地址:36h - 3Dh46h - 4Dh56h - 5Dh
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
TXBnDm7TXBnDm6TXBnDm5TXBnDm4TXBnDm3TXBnDm2TXBnDm1TXBnDm
bit 7 bit 0
bit 7-0 TXBnD
M7:TXBnDM0:发送缓冲器 n 数据字段字节 m
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 1 0 = 清零 x = 未知值
0
2005 Microchip Technology Inc. 初稿 DS21801D_CN 第 21
MCP2515
注:
DS21801D_CN 22 初稿 2005 Microchip Technology Inc.
MCP2515

4.0 报文接收

4.1 报文接收缓冲

MCP2515 具有两个全接收缓冲器。每个接收缓冲器配 备有多个验收滤波器。除上述专用接收缓冲器外,
MCP2515 还具有单独的报文集成缓冲器 (Message Assembly Buffer, MAB) ,可作为第三个接收缓冲器
(见图 4-2)。
4.1.1 报文集成缓冲器
在三个接收缓冲器中,报文集成缓冲器(MAB)总能够 接收来自总线的下一条报文。 MAB 对接收到的报文进 行组合,并将满足验收滤波器条件的报文传送至 RXBn 缓冲器 (见寄存器 4-4 到寄存器 4-9)。
4.1.2 RXB0 RXB1 缓冲器
其余的两个接收缓冲器为 RXB0 RXB1。通 过 MAB, 它们能够接收来自协议引擎的完整报文。当其中一个缓 冲器处于接收等待或保存着上一条接收到的报文时, MCU 可访问另一缓冲器。
注: 一旦报文被验收,MAB 中所有的内容将传
送到接收缓冲器。这表明无论标识符为何 种类型 (标准还是扩展标识符)或接收到 多少字节的数据,整个接收缓冲器都将被 MAB 的内容所改写。因此,在接收任何报 文后,必须断定接收缓冲器中所有寄存器 中的内容都被修改了。
4.1.3 接收标志 / 中断
当报文传送至某一接收缓冲器时,与该接收缓冲器对应 的 CANINTF.RXnIF 位将置 1。一旦缓冲器中的报文处 理完毕,MCU 就必须将该位清零以接收下一条报文。该 控制位提供的锁定功能确保 MCU 尚未处理完上一条报 文前, MCP2515 不会将新的报文载入接收缓冲器。
如果 CANINTE.RXnIE 位被置 1,器件会在 I 生一个中断,显示接收到报文有效。另外,如果被配置 为接收缓冲器满中断引脚,与之相应的 RXnBF 引脚会 被拉低。请查阅第 4.4 节“RX0BF RX1BF 引脚”了 解详细信息。
NT 引脚产

4.2 接收优先级

RXB0 是具有较高优先级的缓冲器,配置有一个屏蔽滤 波寄存器和两个验收滤波寄存器。接收到的报文首先在
RXB0 中进行屏蔽滤波。
RXB1 是优先级较低的缓冲器,配置有一个屏蔽滤波寄
存器和 4 个验收滤波寄存器。
报文除了首先在 RB0 中进行屏蔽滤波外,由于 RB0 的 验收滤波寄存器数量较少,因此 RB0 接受匹配条件更为 严格,表明 RB0 具有较高的优先级。
当报文被接收时,RXBnCTRL<3:0> 位将显示使能该接 收操作的验收滤波器的编号,以及接收到的报文是否为 远程传输请求。
4.2.1 滚存
另外,可对 RXB0CTRL 寄存器进行配置,如果 RXB0 已包含一条有效报文并且接收到另一条有效报文,不会 发生溢出错误,新的报文会滚存到 RXB1 而不管 RXB1 是何种验收标准。
4.2.2 RXM
RXBnCTRL.RXM 位可以设定特殊的接收工作模式。这
些位通常置为00,以接收所有被验收滤波器认可的有效 报文。在这种情况下,标准或扩展报文的接收与否取决 于验收滤波寄存器中的 RFXnSIDL.EXIDE 控制位。
如果 RXBnCTRL.RXM 位置为 01 10,接收缓冲器将 分别只接收标准帧或扩展帧。如果验收滤波寄存器的 RFXnSIDL.EXIDE位的设置不对应RXBnCTRL.RXM工 作模式,验收滤波器将不起作用。上述两种由 RXBnC- TRL.RXM 控制位决定的接收模式可用于总线上仅传输 标准帧或扩展帧的系统。
如果 RXBnCTRL.RXM 位置为 11,无论验收滤波器的 值是什么,缓冲器都将接收所有的报文。同样,如果报 文在帧结束前出错,在 MAB 中组合的出错前的那部分 报文将被移入到缓冲器。该工作模式可在 CAN 系统调 试时使用,一般不在实际系统环境中使用。
2005 Microchip Technology Inc. 初稿 DS21801D_CN 23
MCP2515

4.3 起始帧信号

使能之后,一旦 RXCAN 引脚检测到任一 CAN 报文开 始,起始帧信号便会在 SOF 引脚上产生。
RXCAN 引脚监控空闲总线上出现的从隐性位到显性位 的变化边沿。如果显性条件始终保持直至采样点发生, MCP2515 视之为 SOF 信号并产生一个SOF 脉冲。如果 显性条件没有保持到采样点便发生, MCP2515 视之为 总线干扰,不产生 SOF 信号。图 4-1 说明了 SOF 信号 的发生和干扰过滤。
对于单触发工作模式, SOF 信号的一个用途是用于 TTCAN 系统。另外,通过监控 RXCAN 引脚和 SOF 脚, MCU 能够检测到总线上出现的小干扰,从而在它 们影响 CAN 通讯之前发现早期总线物理故障。

4.4 RX0BF RX1BF 引脚

INT引脚可在多种情况下向 MCU提供中断信号。除此之 外,接收缓冲器满中断引脚(RX0BF RX1BF)也可 用来分别指示有效报文载入 RXB0 RXB1。这两个引 脚有三种配置 (寄存器 4-1):
1. 禁止
2. 缓冲器满中断引脚
3. 数字输出引脚
4.4.1 禁止
BFPCTRL.BnBFE 位清零后,RXBnBF 引脚被禁止,呈
现高阻态。
4.4.2 配置为缓冲器满中断引脚
RXBnBF可配置为缓冲器满中断引脚或标准数字输出引
脚。通过 BFPCTRL 寄存器(寄存器 4-3)可对这些引 脚进行配置和状态查询。当设定为中断工作模式
BFPCTRL.BxBFE BFPCTRL.BxBFM 位置 1), 这
些引脚为低电平有效,并且被映射到相应接收缓冲器的
CANINTF.RXnIF 位。当其中一个接收缓冲器 CAN- INTF.RXnIF位变为高电平,表明有效报文已被载入接收 缓冲器,相应的 R CANINTF.RXnIF 位被 MCU 清零,相应的中断引脚进入
逻辑高电平状态,直到下一条报文载入接收缓冲器。
XBnBF 引脚将变为低电平。如果

4-1 起始帧信号

正常 SOF 信号
RXCAN
SOF
干扰过滤
     期望起始帧位
RXCAN
SOF
 起始帧位
期望
采样点
采样点
ID
总线空闲
DS21801D_CN 24 初稿 2005 Microchip Technology Inc.
MCP2515
4.4.3 配置为数字输出引脚
当引脚配置为数字输出引脚时,相应的接收缓冲器中的 BFPCTRL.BxBFM位应被清零,而BFPCTRL.BnBFE 应被置 1。在这种工作模式下,引脚的状态由 BFPC- TRL.BnBFS位控制。BnBFS 位写入1时,将使相应的缓 冲器满中断引脚输出高电平,写入 0 将使该引脚输出低 电平。当引脚处于这种模式时,该引脚的状态只应通过 位修改 SPI 命令来修改,以避免任何缓冲器满中断引脚 出现干扰。

4-2 接收缓冲器框图

注: MAB 中接收到的报文首先在 RXB0 中进行
屏蔽滤波。另外,仅会出现一个滤波器 匹配 (如,一旦报文与 RXF0 RXF2 均 匹配,则最终匹配的为 RXF0,报文将被移 入 RXB0)。
验收屏蔽寄存器
RXM0
验收滤波寄存器
RXF0
接 收
验收滤波寄存器
RXF1

4-1:配RXNBF 引脚

BnBFE BnBFM BnBFS 引脚状态
0XX禁止,高阻态 11X接收缓冲器中断 100数字输出 = 0 101数字输出 = 1
验收屏蔽寄存器
RXM1
验收滤波寄存器
RXF2
验收滤波寄存器
RXF3
验收滤波寄存器
RXF4
验收滤波寄存器
RXF5
接 收
R X B 0
2005 Microchip Technology Inc. 初稿 DS21801D_CN 25
标识符
数据字段 数据字段
M A B
标识符
R X B 1
MCP2515

4-3 报文接收流程图

开始
产生错误帧
CANINTF.RX0IF 位决定 接收缓冲器是否为空以及 是否可以接收新的报文
RXB0CTRL.BUKT 位决定在 RXB0 满时,新的报文是否
可滚存到 RXB1
检测到
起始帧吗?
开始将报文载入
报文集成缓冲器(MAB
收到的
报文有效吗?
报文
符合滤波器
RXB0 条件吗?
报文
符合滤波器
 RXB1 条件吗?
返回开始
CANINTF.RX0IF =
将报文移入 RXB0
CANINTF.RX0IF =
根据满足的验收滤波器条件,
RXB0CTRL.FILHIT <0> 1
CANINTE.RX0IE = 1
BFPCTRL.B0BFM =
BF1CTRL.B0BFE = 1
0
1
1
RXB0CTRL.BUKT =
产生溢出错误:
EFLG.RX0OVR 1
RXB0
RXBF0
引脚 = 0
1
产生溢出错误:
EFLG.RX1OVR 1
CANINTE.ERRIE =
根据报文载入哪个接收缓冲 器,将 CANSTAT <3:0> 置 1
INT 引脚上
产生中断
INT 引脚上
产生中断
1
返回开始
RXB1
RXBF1
引脚 = 0
CANINTF.RX1IF =
 根据满足的验收滤波器条件,
RXB0CTRL.FILHIT <2:0> 1
CANINTE.RX1IE =
BFPCTRL.B1BFM =
BF1CTRL.B1BFE = 1
将报文移入 RXB1
CANINTF.RX1IF = 1
0
1
1
DS21801D_CN 26 初稿 2005 Microchip Technology Inc.
Loading...
+ 58 hidden pages