MICROCHIP MCP2510 Technical data

MCP2510
带有 SPI
TM
接口的独立 CAN 控制器
特性
完全支持CAN 总线 V2.0A V2.0B 技术规范,通信 速率为 1Mb/s:
-0 - 8 字节报文长度
- 标准和扩展数据帧
- 可编程位传输速率可达 1Mb/s
- 两个接收缓冲器 , 可优先储存报文
- 六个完全验收滤波器
- 两个完全验收屏蔽滤波器
- 三个发送缓冲器,具有优先级设定以及发送中
止功能
- 用于自检的环回模式
- 高速 SPI 接口
(4.5V 工业级温度范围时可达 5MHz )
- 支持 0,0 1,1 SPI 模式
- 带有可编程预分频器的时钟输出引脚
- 带有可选择使能设定的中断输出引脚
-‘缓冲器满 ’ 输出引脚可配置为各接收缓冲器的
中断引脚或通用数字输出引脚
-‘请求发送 输入引脚可配置为发送缓冲器的控
制引脚 , 用以请求立即发送报文 , 或配置为通 用数字输出引脚
- 低功耗休眠工作模式
低功耗的 CMOS 技术:
- 工作电压范围 3.0V 5.5V
-5mA 典型工作电流
-5.5V时典型待机电流为 10 µA
•18引脚 PDIP/SOIC 和 20 引脚 TSSOP 封装
允许的工作温度范围:
- 工业级 (I): -40°C +85°C
- 扩展级 (E): -40°C +125°C
说明
Microchip Technology Inc.( 美国微芯科技有限公司 ) 生 产的 MCP2510 是一款控制器局域网络 (CAN) 协议控 制器 , 完全支持 CAN 总线 V2.0A/B 技术规范。该器件 支持 CAN1.2CAN2.0A、主动和被动 CAN2.0B 等版 本的协议,能够发送和接收标准和扩展报文。它还同时 具备验收过滤以及报文管理功能。该器件包含三个发送 缓冲器和两个接收缓冲器,减少了单片机 (MCU)的管 理负担。 MCU 的通讯是通过行业标准串行外设接口
SPI)来实现的,其数据传输速率高达 5Mb/s。
封装形式
18 引脚 PDIP/SOIC
20 19 18 17
16 15 14 13 12 11
DD
V
18
RESET
17
16
CS
SO
15
SI
14
SCK
13
INT
12
RX0BF
11
RX1BF10
VDD RESET CS
SO SI
NC SCK INT
RX0BF RX1BF
TXCAN
RXCAN
CLKOUT
TX0RTS
TX1RTS
TX2RTS
OSC2
OSC1
VSS
20 引脚 TSSOP
TXCAN
RXCAN
CLKOUT
TX0RTS TX1RTS
NC
TX2RTS
OSC2 OSC1
VSS
1
2
3
4
5
6
7
8
9
1 2 3 4
5 6 7 8 9
10
MCP2510
MCP2510
2004 Microchip Technology Inc. DS21291E_CN1
MCP2510
目录
1.0 器件功能介绍 ........................................................................................................................................................................ 3
2.0 Can 报文帧 ............................................................................................................................................................................ 7
3.0 报文发送 .............................................................................................................................................................................. 15
4.0 报文接收 .............................................................................................................................................................................. 21
5.0 位定时 ................................................................................................................................................................................. 35
6.0 错误检测 .............................................................................................................................................................................. 41
7.0 中断 ..................................................................................................................................................................................... 45
8.0 时钟振荡器 .......................................................................................................................................................................... 49
9.0 工作模式 .............................................................................................................................................................................. 51
10.0 寄存器映射表 ...................................................................................................................................................................... 55
11.0 SPI 接口 .............................................................................................................................................................................. 57
12.0 电气特性 .............................................................................................................................................................................. 61
13.0 封装信息 .............................................................................................................................................................................. 65
索引 ..................................................................................................................................................................................................... 69
在线支持.............................................................................................................................................................................................. 71
读者反馈表 .......................................................................................................................................................................................... 72
产品识别系统....................................................................................................................................................................................... 73
全球销售及服务网点 ............................................................................................................................................................................ 76
致 客 户
欲获得本数据手册的最新版本 , 请查询我公司的网站 :
http://www.microchip.com
您可通过检查数据手册中任意一页外侧下角的文献编号来确定其版本。文献编号的最后一个字母是版本编号 DS30000 A 版本。
勘误表
现有器件可能带有一份勘误表 , 说明了 ( 与数据手册的 ) 小运行差异以及建议的工作条件。当器件 / 文档的差异为我们所知时 , 我 们将出版一份勘误表。 勘误表上将注明其所适用的硅片版本和文件版本 .
欲了解某一器件是否存在勘误表 , 请通过以下方式之一查询 :
• Microchip 网站 http://www.microchip.com
当地 Microchip 销售办事处 ( 见尾页 )
• Microchip 总部文献中心 ; 美国传真号码 : 001 (480) 792-7277
当致电销售办事处或文献中心时 , 请说明您所使用的器件名称 , 芯片和数据手册版本 ( 包括文献编号 )。
本数据手册的更正
我们将不断努力提高产品和文档质量。 我们花费了大量的时间以保证本文件的正确性。然而 , 我们认识到可能会出现少量遗漏。 如 果您发现任何遗漏和错误 , 请 :
填写本数据手册后的读者反馈表
发电子邮件至 webmaster@microchip.com
您对提高本文件的质量所提供的帮助 , 我们将不胜感谢。
, 例如 : DS30000A
DS21291E_CN2 2004 Microchip Technology Inc.
MCP2510

1.0 器件功能介绍

1.1 概述

MCP2510 是一款独立CAN 控制器,是为简化连接CAN 总线的应用而开发的。图 1-1 简要显示了 MCP2510 的 结构框图。该器件主要由三个部分组成:
1. CAN 协议引擎。
2. 用来为器件及其运行进行配置的控制逻辑和 SRAM 寄存器。
3. SPI 协议模块。
1-2 显示了该器件的典型系统应用。
CAN 协议引擎的功能是处理所有总线上的报文发送和
接收。报文发送时,首先将报文装载到正确的报文缓冲 器和控制寄存器中。利用控制寄存器位,通过 SPI 接口 或使用发送使能引脚均可启动发送操作。通过读取相应 的寄存器可以检查通信状态和错误。 任何在 CAN 总线

1-1: 结构框图

RXCAN
CAN
协议引擎
TXCAN
3 TX
缓冲器
上侦测到的报文都会进行错误检测,然后与用户定义的 滤波器进行匹配,以确定是否将其转移到两个接收缓冲 器之一中。
MCU 通过 SPI 接口与器件进行通信。通过使用标准 SPI 读写命令对寄存器所有读写操作。
所提供的中断引脚提高了系统的灵活性。器件上有一个 多用途中断引脚,以及各接收缓冲器专用的中断引脚, 可用于指示有效报文是否被接收和载入各接收缓冲器。 是否使用专用中断引脚由用户决定,若不使用,也可用 通用中断引脚和状态寄存器(通过 SPI 接口访问)确定 有效报文是否已被接收。
器件还有三个引脚,用来将装载在三个发送缓冲器之一 中的报文立即发送出去。是否使用这些引脚由用户决 定,若不使用,也可通过 SPI 接口访问控制寄存器的方 式来启动报文发送。
1-1 列出了 MCP2510 所有引脚的完整清单。
2 RX 缓冲器
6 个接收滤波器
报文集合缓冲器
SPI
接口逻辑
CS SCK SI
SO
SPI
总线
控制逻辑
INT
RX0BF
RX1BF
TX0RTS
TX1RTS
TX2RTS
2004 Microchip Technology Inc. DS21291E_CN 第3
MCP2510

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

CAN
总线
系统
主控制器
MCP2510
CAN
收发器
SPI
接口
CAN
收发器
MCP2510
CAN
收发器
MCP2510 MCP2510 MCP2510
节点控制器 节点控制器 节点控制器 节点控制器

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 振荡器输入
SS 910P逻辑和 I/O 引脚的参考地端
V
RX1BF
RX0BF
INT
SCK 13 14 I SPI 接口时钟输入引脚
SI 14 16 I SPI 接口数据输入引脚
SO 15 17 O SPI 接口数据输出引脚
CS
RESET
DD 18 20 P 逻辑和 I/O 引脚的正电源
V
NC 615 无内部连接
注: 类型标识: I=输入; O=输出; P=电源
DIP/
SOIC
引脚 #
TSSOP
引脚 #
44 I发送缓冲器 TXB0 请求发送或通用数字输入引脚。 100k
55 I发送缓冲器 TXB1 请求发送或通用数字输入引脚。 100k
67 I发送缓冲器缓冲器 TXB2 请求发送或通用数字输入引脚。 100k
10 11 O 接收缓冲器 RXB1 的中断引脚或通用数字输出引脚
11 1 2 O 接收缓冲器 RXB0 的中断引脚或通用数字输出引脚
12 13 O 中断输出引脚
16 18 I SPI 接口片选输入引脚
17 19 I 低电平有效器件复位输入引脚
I/O/P
类型
内部上拉电阻 (至 V
内部上拉电阻 (至 V
内部上拉电阻 (至 V
DD
DD
DD
CAN
收发器
说 明
CAN
收发器
DS21291E_CN 4 2004 Microchip Technology Inc.
MCP2510

1.2 发送 / 接收缓冲器

MCP2510 具有三个发送缓冲器和两个接收缓冲器,两个验收屏蔽寄存器 (分别对应不同的接收缓冲器)以及六个验收 过滤寄存器。图 1-3 的框图中显示了这些缓冲器以及它们与 CAN 协议引擎的连接方法。

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

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

1.3 CAN 协议引擎

CAN 协议引擎包含几个功能块,见图 1-4。下面将对这 些功能块及其功能进行介绍。

1.4 协议有限状态机

协议引擎的核心是有限状态机(FSM)。 该状态机逐个 逐位检查报文,当各个报文帧发生数据字段的发送和接 收时, 状态机改变状态。FSM 是一个定序器,对 TX/RX 移位寄存器, CRC 寄存器以及总线之间的顺序数据流 进行控制。 FSM 还对错误管理逻辑 (EML)以及 TX/
RX 移位寄存器和缓冲器之间的并行数据流进行控制。 FSM 确保了报文接收、总线仲裁、报文发送以及错误信
号发生等操作过程依据 CAN 总线协议来进行。总线上 报文的自动重发送也由 FSM 处理。

1.5 循环冗余校验

循环冗余校验寄存器产生循环冗余校验(CRC 代码。 该代码在控制字段(控制数据字节数为 0 的报文)或数 据字段之后被发送,并用来检查是否有报文发入 CRC 字段。

1-4: CAN 协议引擎框图

RX
位时序逻辑

1.6 错误管理逻辑

错误管理逻辑负责将 CAN 器件的故障进行隔离。该逻 辑具有两个计数器,即接收错误计数器(REC)和发送 错误计数器 (TEC)。这两个计数器根据来自位流处理 器的命令进行增减计数。根据错误计数器的计数值, CAN 控制器将被设定为错误主动、错误消极和总线关闭 三种状态。

1.7 位时序逻辑

位时序逻辑 (BTL)可监控总线输入, 并根据 CAN 协 议处理与总线相关的位时序操作。BTL 在帧起始时,以 隐性状态到显性状态的总线过渡进行同步操作(称为硬 同步)。之后, 若 CAN 控制器本身不发送显性位, BTL 在以后的隐性状态到显性状态总线过渡时会再进行 同步操作(称为再同步)。BTL 还提供可编程时间段以 补偿传播延迟时间和相位位移,并对位时段内的采样点 位置进行定义。对 BTL 的编程取决于波特率和外部物理 延迟时间。
发送逻辑
TX
SAM
Sample<2:0>
多数 决定
BusMon
CRC<14:0>
比较器
( 发送 <5:0> 接收 <7:0>)
接收 <7:0> 发送 <7:0>
RecData<7:0>
连接到标准缓冲器
StuffReg<5:0>
比较器
移位 <14:0>
TrmData<7:0>
接收
错误计数器
发送
错误计数器
协议 FSM
Rec/Trm 地址
REC
TEC
ErrPas BusOff
DS21291E_CN 第6 页  2004 Microchip Technology Inc.
MCP2510

2.0 CAN 报文帧

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

2.1 标准数据帧

CAN 标准数据帧如图 2-1 所示。与其它所有帧相同,帧 以起始帧 (SOF) 位开始。 SOF 为显性状态,允许所有 节点进行硬同步。
SOF 之后是仲裁字段,由 12 个位组成,分别为 11 个识别位和一个远程发送请求 (RTR) 位。 RTR 位用于 区分报文是数据帧 (RTR 位为显性) 还是远程帧 (RTR 位 为隐性状态)。
在仲裁字段之后是控制字段,由 6 个位组成。控制字段 的第一位为识别扩展(IDE) 位,该位为显性状态时,说 明这是标准帧。识别扩展位的下一位为零保留位 (RB0),这一保留位将由 CAN 协议定义为显性位。控制 字段的其余 4 位为数据长度码 (DLC),说明了报文中 包含的数据字节数。
控制字段之后为数据字段,包含正在发送的数据字节。 数据字段长度由上述数据长度码DLC定义(0-8字节)。
数据字段后为循环冗余校验字段 (CRC) ,用来检测报文 传输错误。 CRC 字段包含一个 15 位的 CRC 序列,之 后是隐性 CRC 定界位。
最后一个字段是确认字段,由两个位组成。在确认间隙 (ACK slot) 位执行期间,发送节点发出一个接收位。 任 何收到无错误帧的节点会发回一个显性位 ( 无论该节点 是否配置为接收该报文与否 ),确认帧收到无误。确认 字段以隐性确认定界符结束,该字符可能不允许被改写 为显性位。

2.2 扩展数据帧

在扩展数据帧中, 紧随 SOF 位的是 32 位仲裁字段,如 图 2-2 所示。仲裁字段的前 11 位为 29 位标识符的最有 效位 ( 基本 ID) 。紧随这 11 位的是替换远程请求 (SRR) 位,定义为隐性状态。 SRR 位之后是 lDE 位,该位隐 性时表示这是扩展的 CAN 帧。
应注意的是,如果在扩展帧标识符的前 11 位发送完后, 总线仲裁无果,而此时仲裁中的节点之一发出标准数据 帧(11 位标识符),那么, 由于节点发出了显性 IDE 位而使标准 CAN 帧赢得总线仲裁。 另外,扩展 CAN SRR 位应为隐性, 以允许正在发送标准 CAN 远程帧 的节点发出显性 RTR 位。
SRR 位和 lDE 位之后是标识符的其余 18 位(扩展 ID 以及一个远程发送请求位。
为使标准帧和扩展帧都能在共享网络上发送,应将29 位 的扩展报文标识符拆分成最高11 位和最低18位两部分。 拆分后可确保 IDE 位在标准数据帧和扩展帧中的位置保 持不变。
仲裁字段之后是 6 位控制字段。控制字段前两位为保留 位,必须定义为显性位。其余 4 位为数据长度码 (DLC), 说明报文中包含的数据字节数。
扩展数据帧的其它部分 (数据字段, CRC 字段,确认 字段, 帧结尾和间断) 与标准数据帧的结构相同 ( 见第
2.1 节)。

2.3 远程帧

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

2.4 错误帧

错误帧是由检测到总线错误的任一节点产生的。2-4 所示,错误帧包含两个字段,即错误标志字段, 及紧随其后的错误定界字段。错误标志字段有两种类 型。节点发送哪种类型的出错标志字段,取决于检测到 错误并产生错误标志字段的节点的错误状态。
当错误主动节点检测到一个总线错误时,这个节点将产 生一个主动错误标志,中断当前的报文发送 。主动错误 标志由 6 个连续的显性位构成。这种位顺序主动打破了 位填充规则。所有其它节点在识别到所形成的位填充错 误后,会自行产生错误帧,称为错误反射标志。错误标 志字段因此包含 6 到 12 个连续显性位 (由 1 个或多个 节点产生)。错误定界字段为错误帧划上了句号。在错 误帧发送完毕后,总线主动恢复正常状态,被中断的节 点会尝试重新发送被中止的报文。
当错误消极节点检测到一个总线错误时,该节点将发送 一个错误消极标志,并紧接着发送错误定界字段。错误
消极标志包含 6 个连续的隐性位,而错误消极节点发出 的错误帧则包含 14 个隐性位。由此可知,除非总线错
误被正在发送报文的节点检测到,否则错误消极节点错 误帧的发送,将不会影响网络中任何其它节点。如果发 送节点产生一个错误消极标志,那么,由于位填充规则 被打破,将导致其它节点产生错误帧。错误帧发送完毕 后,错误消极节点必须等待总线上出现 6 个连续隐性位 后,才能尝试重新参予总线通信。
错误定界符由 8 个隐性位组成,允许总线节点在错误发 生后重新启动总线通信。
2004 Microchip Technology Inc. DS21291E_CN7
MCP2510

2.5 过载帧

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

2.6 帧间间隔

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

2-1: 标准数据帧

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

2-2: 扩展数据帧

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

2-3: 远程数据帧

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

2-4: 错误帧

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

2-5: 过载帧

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

3.0 报文发送

3.1 发送缓冲器

MCP2510 采用三个发送缓冲器。每个发送缓冲器占据 14 字节的 SRAM,并映射到存储器中。其中第一字节
NCTRL 是与报文缓冲器相关的控制寄存器。 该寄
TXB
存器中的信息决定了报文在何种条件下被发送,并在报 文发送时指示其状态(见寄存器 3-2)。用 5 个字节用来 装载标准和扩展标识符以及其它报文仲裁信息 ( 见寄存 器 3-3至 3-8)。 最后 8 个字节用来装载等待发送的报文 的八个可能的数据字节 ( 见寄存器 3-8)。
对于可访问报文缓冲器的单片机来说,必须清除
NCTRL.TXREQ 位,表明发送缓冲器无等待发送的
TXB
报文。至少须将 TXBNSIDH TXBNSIDL 和 TXBNDLC 寄存器装载数据。如果报文包含数据字节,还需对
NDm 寄存器进行装载。若报文采用扩展标识符,应
TXB TXBNEIDm 寄存器进行装载,并将 TXBN- SIDL.EXIDE 位置位。
在报文发送之前,单片机应对 CANINTE.TXI 初始化,以便在报文发送时使能或禁止中断的产生。
MCU 还应对 TXB
NCTRL.TXP 优先级控制位进行初始化
( 3.2 )

3.2 发送优先级

发送优先级是指 MCP2510 内部等待发送报文之间的优 先级。它与 CAN 协议中固有的报文仲裁的优先级无关。 在发送起始帧 SOF 之前,器件将所有等待发送报文的 发送缓冲器的优先级进行比较。具有较高优先级的发送 缓冲器将首先发送。例如,如果发送缓冲器 0 的优先级 设定比发送缓冲器 1 高,缓冲器 0 将首先发送。如果两 个缓冲器的优先级相同,编号较高的发送缓冲器将优先 发送。例如,如果发送缓冲器 1 与发送缓冲器 0 的优先 级设定相同, 缓冲器 1 将优先发送。发送优先级的设定 共有 4 个等级。如果某个发送缓冲器的 TXB TRL.TXP<1:0> 设定为 11 该发送缓冲器具有最高的 发送优先级。如果 TXB 该发送缓冲的发送优先级最低。
NCTRL.TXP<1:0> 设定为 00
NE 位进行
NC-
如果报文发送失败, TXB
NCTRL.TXREQ 将保持置位,
表明该报文仍在等待发送。此时以下条件标志之一将被 置位。 如果报文发送已开始但发生错误, TXB
NCTRL.
TXERR CANINTF.MERRF 位将被置位,此时在 CANINTE.MERRE 位置位后, 器件将会在 I
NT 引脚产
生中断。若发送报文总线仲裁失败,TXBNCTRL.MLOA 位将被置位。

3.4 TXnRTS 引脚

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

3.5 中止发送

MCU 可通过清除与特定发送缓冲器对应的 TXBnC- TRL.TXREQ 位来中止某条报文的发送。也可通过设置 CANCTRL.ABAT 位以中止所有等待发送的报文。如果 CANCTRL.ABAT 被置位则所有报文中止发送,用户要
继续报文发送,必须对该位进行复位(通常须先确认所 有 TXREQ 位都已被清零 )。只有通过设定 CAN- CTRL.ABAT 位中止报文发送时, CANCTRL.ABTF 标 志才将被置位。通过复位 TXREQ 来中止报文发送,将 不会使 AT BF 位置位。
只有尚未开始发送的报文可被中止。报文一旦开始发 送,用户将不能对 TXBnCTRL.TXREQ 位进行复位。在 报文开始发送后,如果总线出现错误或该报文总线仲裁 失败,无论是否存在报文中止请求,该报文都将重新发 送。

3.3 发送启动

通过设定控制寄存器中TXBNCTRL.TXREQ发送控制位 可以启动相应发送缓冲器的报文发送。通过 SPI 接口写 寄存器或向某一发送缓冲器的 T 平可以进行设定。如果选择 SPI 接口方式进行位设定以 启动报文发送,可以同时设定 TXREQ 位和 TXP 优先级 控制位。
TXB
NCTRL.TXREQ 置位后, TXBNCTRL.ABTF
TXBNCTRL.MLOA TXBNCTRL.TXERR 位都将被清
除。
NCTRL.TXREQ 位置位并不能启动报文发送,仅
TXB 将发送缓冲器标记为准备发送。 当器件检测到总线空 闲时,才会启动报文发送。优先级最高的报文将首先发 送。
报文发送成功后,TXB
CANINTF.TX
2004 Microchip Technology Inc. DS21291E_CN15
NIF 位将被置位,置位后将产生中断。
NCTRL.TXREQ 位将被清除,
XNRTS 引脚输入低电
MCP2510
3-1: 报文发送流程图
开始
检查 TXBnCTRL.TXP <1:0> 以确定 最高优先级的报文
任一
TXBnCTRL.TXREQ
= 1
?
清零 :
TXBnCTRL.ABTF TXBnCTRL.MLOA TXBnCTRL.TXERR
CAN 总线是否
可以进行报文发送?
报文发送
当器件确定任一发送控制寄存 器 TXBnCTRL.TXREQ 位已被 置位后,报文发送序列开始
将置 1 的 TxBnCTRL.TXREQ 位清 零 或在报文发送之前将 CAN- CTRL.ABAT 位置1将会中止报文发 送
TXBnCTRL.TXREQ=0
CANCTRL.ABAT=1
?
产生 中断
CANINTE.TXnIE 位决定 在报文成功发送后是否产 生中断请求
报文发送
成功 ?
TxBnCTRL.TXREQ=0
CANINTE.TXnIE=1?
CANTINF.TXnIF=1
返回开始
报文出错?
发送过程中
仲裁失败了吗?
TxBnCTRL.TXERR=1
TxBnCTRL.MLOA=1
DS21291E_CN16 2004 Microchip Technology Inc.
寄存器 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
MCP2510
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1-0
未用 : 读作 '0'
ABTF: 报文发送中止标志
1 = 报文中止 0 = 报文发送成功
MLOA: 报文仲裁失败
1 = 报文发送中仲裁失败 0 = 报文发送中仲裁未失败
TXERR: 检测到的发送错误
1 = 报文发送中发生了总线错误 0 = 报文发送中未发生总线错误
TXREQ: 报文发送请求
1 = 缓冲器等待报文发送
( 单片机将此位置位以请求报文发送 - 报文发送后该位自动清零 )
0 = 缓冲器无报文发送
( 单片机将此位清零以请求中止报文发送 )
未使用 : 读作 '0'
TXP<1:0>: 发送缓冲器优先级
11 = 最高的报文发送优先级 10 = 中偏高的报文发送优先级 11 = 中偏低的报文发送优先级 00 = 最低的报文发送优先级
图注:
R = 可读位 W = 可写位 U = 未用,读作 ‘0’
-n = 上电复位值 ’1’ = 置位值 ’0’ = 清零值 x = 未知值
2004 Microchip Technology Inc. DS21291E_CN17
MCP2510
寄存器 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
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
未使用 : 读作 '0'
未使用 : 读作 '0'
B2RTS: TX2RTS
- 作为数字输入引脚时,读出值为 T
- 作为请求发送输入引脚时读作 ‘0’
B1RTS: TX1RT
- 作为数字输入引脚时,读出值为 TX
- 作为请求发送输入引脚时读作 ‘0’
B0RTS: TX0RTS
- 作为数字输入引脚时,读出值为 TX
- 作为请求发送输入引脚时读作 ‘0’
B2RTSM: TX2RTS
1 = 该引脚用来请求 TXB2 缓冲器发送报文 ( 在下降沿 ) 0 = 数字输入
B1RTSM: TX1RTS
1 = 该引脚用来请求 TXB1 缓冲器发送报文 ( 在下降沿 ) 0 = 数字输入
B0RTSM: TX0RTS
1 = 该引脚用来请求 TXB0 缓冲器发送报文 ( 在下降沿 ) 0 = 数字输入
其中 : R = 可读位 W = 可写位 U = 未用,读作 ‘0’
-n = 上电复位值 ’1’ = 置位值 ’0’ = 清零值 x = 未知值
引脚状态
X2RTS 引脚电平
X 引脚状态
1RTS 引脚电平
引脚状态
0RTS 引脚电平
引脚模式
引脚模式
引脚模式
寄存器 3-3: TXB
NSIDH - 发送缓冲器 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
DS21291E_CN18  2004 Microchip Technology Inc.
SID<10:3>: 标准标识符 <10:3>
其中 :
R = 可读位 W = 可写位 U = 未用,读作 ‘0’
-n = 上电复位值 ’1’ = 置位值 ’0’ = 清零值 x = 未知值
寄存器 3-4: TXBNSIDL - 发送缓冲器 N 标准标识符低位
( 地址 : 32h, 42h, 52h)
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
MCP2510
bit 7-5
bit 4
bit 3
bit 2
bit 1-0
SID<2:0>: 标准标识符位数 <2:0>
未用 : 读作 '0’
EXIDE: 扩展标识符使能
1 = 报文将发送扩展标识符 0 = 报文将发送标准标识符
未用 : 读作 '0’
EID<17:16>: 扩展标识符位数 s <17:16>
其中 :
R = 可读位 W = 可写位 U = 未用,读作 ‘0’
-n = 上电复位值 ’1’ = 置位值 ’0’ = 清零值 x = 未知值
寄存器 3-5: TXB
( 地址 : 33h, 43h, 53h)
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>: 扩展标识符位数 <15:8>
其中 :
R = 可读位 W = 可写位 U = 未用,读作 ‘0’
-n = 上电复位值 ’1’ = 置位值 ’0’ = 清零值 x = 未知值
NEID8 - 发送缓冲器 N 扩展标识符高位
寄存器 3-6: TXB
NEID0 - 发送缓冲器 N 扩展标识符低位
( 地址 : 34h, 44h, 54h)
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
2004 Microchip Technology Inc. DS21291E_CN19
EID<7:0>: 扩展标识符位数 <7:0>
其中 :
R = 可读位 W = 可写位 U = 未用,读作 ‘0’
-n = 上电复位值 ’1’ = 置位值 ’0’ = 清零值 x = 未知值
MCP2510
寄存器 3-7: TXBNDLC - 发送缓冲器 N 数据长度码
( 地址 : 35h, 45h, 55h)
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
bit 6
bit 5-4
bit 3-0
未用 : 读作 '0’
RTR: 远程发送请求位
1 = 发送的报文为远程帧 0 = 发送的报文为数据帧
未用 : 读作 '0’
DLC<3:0>: 数据长度码 设定发送的数据长度 (0 8 字节 )
Note: 可以将 DLC 设定为大于 8 的值,但只发送 8 个字节
其中 :
R = 可读位 W = 可写位 U = 未用,读作 ‘0’
-n = 上电复位值 ’1’ = 置位值 ’0’ = 清零值 x = 未知值
寄存器 3-8: TXB
( 地址 : 36h-3Dh, 46h-4Dh, 56h-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
TXB
bit 7 bit 0
bit 7-0
TXB
NDM - 发送缓冲器 N 数据段字节 m
NDm
7
NDM7:TXBNDM0: 发送缓冲器 n 数据字段字节 m
TXBNDm6TXBNDm5TXBNDm4TXBNDm3TXBNDm2TXBNDm1TXBNDm
0
其中:
R = 可读位 W = 可写位 U = 未用,读作 ‘0’
-n = 上电复位值 ’1’ = 置位值 ’0’ = 清零值 x = 未知值
DS21291E_CN20  2004 Microchip Technology Inc.

4.0 报文接收

4.1 报文接收缓冲器

MCP2510 具有两个全文接收缓冲器。每个接收缓冲器 配备有多个验收滤波器。除上述专用接收缓冲器外, MCP2510 还具有单独的报文集成缓冲器 (MAB) ,可作 为第三个接收缓冲器 (见图 4-1)。

4.2 接收缓冲器

在三个接收缓冲器中,MAB总能够接收来自总线的下一 条报文。其余两个接收缓冲器 RXB0 RXB1 则从协议 引擎接收完整的报文。 当其中一个缓冲器处于接收等待 或保存着上一条接收到的报文时, MCU 可对另一缓冲 器进行访问。
MAB对接收到的报文进行组合,并将满足验收滤波器条 件的报文传送到至 RXB4-9 )
注: 一旦报文被验收, MAB 中所有的内容将传
送到接收缓冲器。这表明无论标识符为何 种类型 (标准或扩展标识符)或接收到多 少字节的数据,整个接收缓冲器都将被 MAB的内容所改写。因此,在接收任何报文 后,必须断定接收缓冲器中所有寄存器的 内容都被修改了。
当报文传送至某一接收缓冲器,与该接收缓冲器对应的
CANINTF.RX
毕, MCU 就必须将该位清除以接收下一条报文。 该控 制位提供的锁定功能确保在 MCU 尚未处理完上一条报 文前, MCP2510 不会将新的报文载入接收缓冲器。 如 果 CANINTE.RX 一个中断 , 显示接收到有效报文。
NIF 位将置 1。一旦缓冲器中的报文处理完
N 缓冲器(见寄存器 4-4 至寄存
NIE 位被置 1,器件会在 INT 引脚产生
MCP2510
NCTRL.RXM 位设置为11 , 无论验收滤波器的设置
RXB
值是什么 , 缓冲器都将接收所有报文。如果报文在帧结 束前出错,在 MAB 中组合的出错前的那部分报文将被 移入缓冲器。该工作模式可在 CAN 系统调试时使用,一 般不在实际系统环境中使用。

4.4 RX0BF RX1BF 引脚

INT 引脚在多种情况下可向 MCU 提出中断请求。除此 之外,接收缓冲器满引脚(RX0BF 来显示有效报文是否分别载入 RXB0 RXB1
NBF 引脚可配置为缓冲器满中断引脚或标准数字
RXB
输出引脚。通过 BFPCTRL 寄存器 ( 寄存器 4-3) 可对这 些引脚进行配置和状态查询。 当设定为中断工作模式
(设定 BFPCTRL.BxBFE BFPCTRL.BxBFM 位为
1) ,这些引脚为低电平有效并且被映射到相应接收缓 冲器的 CANINTF.RX CANINTF.RXNIF 位变为高电平,表明有效报文已被载 入接收缓冲器,相应的 RXNBF 引脚将变为低电平。如 果 CANINTF.RX 将进入逻辑高电平状态, 直到下一条报文载入接收缓冲 器。
当该引脚设定为数字输出时,相关的接收缓冲器的 BFPCTRL.BxBFM 位应被清零 ,而 BFPCTRL.BxBFE 位应被置 1。在这种工作模式下,引脚的状态由 BFPC- TRL.BxBFS 位控制。在 BxBFS 位写入 1,将使相关的 缓冲器满输出引脚输出高电平,写入 0 将使该引脚输出 低电平。 当引脚用于这种模式时 , 该引脚的状态只应通Bit Modify SPI 命令来修改,以避免任何缓冲器满引 脚出现干扰。
NIF 位。当其中一个接收缓冲器的
NIF 位被 MCU 清零,相应的中断引脚
RX1BF)也可用

4.3 接收优先级

RXB0 是具有较高优先级的寄存器 , 并配置有 2 个报文 验收滤波寄存器。 RXB1 优先级较低,配置有 4 个验收 滤波器寄存器。 RXB0 的验收滤波寄存器数量较少,因 此 RXB0 接受匹配条件更为严格,表明 RXB0 具有较高 的优先级。此外通过配置 RXB0CTRL 寄存器,还可以 实现以下功能:如果 RXB0 中装有上一条有效报文,而 另一条报文也正被接收,该项设置将避免发生溢出错 误。无论新的报文是否符合 RXB1 验收条件,都将被滚 存至 RXB1 。 每个接收缓冲器还分别配置有一个可编程 验收滤波屏蔽寄存器 (见 第 4.5 节 )。
当报文被接收时, RXB 能该接收操作的验收滤波器的编号 , 以及接收到的报文 是否为远程传输请求。
通过 RXB 该位通常设置为 00,以接收所有被验收滤波器器认可 的报文。在这种情况下,标准或扩展帧报文的接收与否 取决于验收滤波寄存器中 RFX 状态。如果 RXB 缓冲器将分别只接收标准帧或扩展帧。如果验收滤波寄 存器中 RFX TRL.RXM 工作模式,验收滤波器将不起作用。上述两 种由 RXBNCTRL.RXM 控制位决定的接收模式可以应 用在总线上只有标准帧或扩展帧的系统中。如果
NCTRL.RXM 位可以设定特殊接收工作模式。
NSIDL.EXIDE 位的设置不对应于 RXBNC-
NCTRL <3:0> 位状态将显示使
NSIDL.EXIDE 控制位的
NCTRL.RXM 设定值为 01 10,接 收
2004 Microchip Technology Inc. DS21291E_CN21
MCP2510

4-1: 接收缓冲器原理图

验收屏蔽寄存器
RXM1
验收滤波寄存器
RXF2
验 收
验收屏蔽寄存器
RXM0
验收滤波寄存器
RXF3
验 收
验收滤波寄存器
RXF0
验收滤波寄存器
RXF1
R X
标识符
B 0
数据字段 数据字段
M A B
验收滤波寄存器
RXF4
验收滤波寄存器
RXF5
标识符
R X B 1
DS21291E_CN22  2004 Microchip Technology Inc.

4-2: 报文接收流程图

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