MCP25625

MCP25625 是一款完整、经济高效且占位面积小的 CAN 解决方案,可轻松添加到具有可用 SPI 接口的微控制器中。 MCP25625 直接与工作在 2.7V 至 5.5V 的微控制器接口;不需要外部电平转换器。此外,MCP25625 直接连接到物理 CAN 总线,支持 CAN 高速收发器的所有要求。 MCP25625 满足汽车对高速(高达 1 Mb/s)、低静态电流、电磁兼容性 (EMC) 和静电放电 (ESD) 的要求。
封装类型
典型的 CAN 解决方案包括一个实现 CAN 协议的 CAN 控制器和一个用作物理 CAN 总线接口的 CAN 收发器。 MCP25625 集成了 CAN 控制器和 CAN 收发器。因此,它是一个完整的 CAN 解决方案,可以轻松添加到具有 SPI 接口的微控制器中

在这里插入图片描述

图 1-2 显示了 MCP25625 的典型应用示例。在本例中,微控制器在 3.3V 下运行。 VDDA 为 CAN 收发器供电,并且必须连接到 5V。 MCP25625 的 VDD、VIO 连接到微控制器的 VDD。数字电源范围为 2.7V 至 5.5V。因此,MCP25625 的 I/O 直接连接到微控制器,不需要电平转换器。
在这里插入图片描述

  • CAN 收发器的 TXD 和 RXD 引脚必须外部连接到 CAN 控制器的 TxCAN 和 RxCAN 引脚。
  • SPI 接口用于配置和控制 CAN 控制器。
  • MCP25625 的 INT 引脚向微控制器发出中断信号。中断需要由单片机通过SPI清除
  • RxnBF 和 TxnRTS 的使用是可选的,因为这些引脚的功能可以通过 SPI 访问。可以选择使用 10 k 电阻将 RESET 引脚上拉至 MCP25625 的 VDD。
  • CLKOUT 引脚为微控制器提供时钟。

2运行模式

2.1 CAN 控制器有五种操作模式

  • 配置模式
  • 正常模式
  • 睡眠模式
  • 只听模式
  • 环回模式

通过 CANCTRL 寄存器中的 REQOP[2:0] 位选择工作模式(见寄存器 4-34)。更改模式时,模式不会真正更改,直到所有未决消息传输完成。必须通过读取 CANSTAT 寄存器中的 OPMOD[2:0] 位来验证请求的模式(见寄存器 4-35)。

2.2 CAN收发器操作模式
CAN 收发器有两种操作模式:

  • 正常模式
  • 待机模式

通过将低电平施加到 STBY 引脚来选择正常模式。驱动器块是可操作的并且可以驱动总线引脚。 CANH 和 CANL 上的输出信号斜率经过优化以产生最小的电磁辐射 (EME)。高速差分接收器处于活动状态。
通过向 STBY 引脚施加高电平来选择待机模式。在待机模式下,发送器和接收器的高速部分被关闭以最小化功耗。启用低功耗接收器和唤醒滤波器以监控总线的活动。由于唤醒滤波器,接收引脚 (RXD) 将显示 CAN 总线的延迟表示。
2.3 配置模式
MCP25625 必须在激活前初始化。这仅在设备处于配置模式时才有可能。上电、复位后自动选择配置模式,或者可以通过设置 CANCTRL 寄存器中的 REQOPx 位从任何其他模式进入。当进入配置模式时,所有错误计数器都被清除。配置模式是唯一可以修改以下寄存器的模式:

  • CNF1, CNF2, CNF3
  • TXRTSCTRL
  • Acceptance Filter registers

2.4 正常模式
正常模式是 MCP25625 的标准工作模式。在此模式下,器件主动监控所有总线消息并生成确认位、错误帧等。这也是 MCP25625 通过 CAN 总线传输消息的唯一模式。 CAN 控制器和 CAN 收发器都必须处于正常模式。
2.5 睡眠 待机模式
CAN 控制器具有内部休眠模式,用于最大限度地降低设备的电流消耗。即使 MCP25625 处于休眠模式,SPI 接口仍可读取,从而允许访问所有寄存器。通过 CANCTRL 寄存器中的 REQOPx 位选择休眠模式。 CANSTAT 寄存器中的 OPMODx 位指示操作模式。应在向 MCP25625 发送 SLEEP 命令后读取这些位。 MCP25625 处于活动状态且尚未进入休眠模式,直到这些位指示已进入休眠模式。在休眠模式下,MCP25625 停止其内部振荡器。当总线活动发生或微控制器通过 SPI 接口设置时,MCP25625 将被唤醒。 CANINTF 寄存器中的 WAKIF 位将“产生”唤醒尝试(CANINTE 寄存器中的 WAKIE 位也必须置位才能发生唤醒中断)。 CAN 收发器必须处于待机模式才能利用收发器的低待机电流。唤醒后,微控制器必须使用 STBY 引脚将收发器重新置于正常模式。
CAN 收发器将监控 CAN 总线的活动。收发器内部的唤醒滤波器已启用,以避免因噪声而唤醒。如果 CAN 总线上有活动,则 RXD 引脚将变为低电平。 CAN 总线唤醒功能要求两个 CAN 收发器电源电压都在有效范围内:VDDA 和 VIO。 CAN 控制器将检测 RxCAN 引脚上的下降沿并在启用唤醒中断时中断微控制器。由于内部振荡器在休眠模式下被关闭,因此振荡器起振以及器件使能自身以接收消息需要一些时间。该振荡器起振定时器 (OST) 定义为 128 TOSC。设备将忽略导致从睡眠模式唤醒的消息,以及设备“唤醒”时发生的任何消息。设备将在只听模式下唤醒。在 MCP25625 能够在总线上通信之前,微控制器必须将 CAN 控制器和 CAN 收发器都设置为正常模式。
2.6只听模式

通过配置 RXBxCTRL 寄存器中的 RXM[1:0] 位,只听模式为 MCP25625 提供了一种接收所有报文(包括有错误的报文)的方法。该模式可用于总线监控应用或在“热插拔”情况下检测波特率。
对于自动波特率检测 (ABD),必须至少有两个其他节点相互通信。波特率可以通过测试不同的值来凭经验检测,直到收到有效消息。 Listen-Only 模式是一种静默模式,这意味着在此模式下不会传输任何消息(包括错误标志或确认信号)。在只听模式下,无论过滤器和掩码或 RXBxCTRL 寄存器中的 RXM[1:0] 位如何,都将接收有效和无效消息。错误计数器在此状态下被重置和禁用。通过设置 CANCTRL 寄存器中的 REQOPx 位来激活只听模式。
2.7环回模式

环回模式将允许在内部将消息从发送缓冲区传输到接收缓冲区,而无需在 CAN 总线上实际发送消息。该模式可用于系统开发和测试。在这种模式下,ACK 位被忽略,设备将允许来自自身的消息,就像它们来自另一个节点一样。 Loopback 模式是一种静默模式,这意味着在此状态下不会传输任何消息(包括错误标志或确认信号)。 TxCAN 引脚将处于隐性状态。过滤器和掩码可用于仅允许将特定消息加载到接收寄存器中。掩码可以设置为全零以提供接受所有消息的模式。环回模式通过设置 CANCTRL 寄存器中的 REQOPx 位来激活。

3.0 控制器
CAN 控制器执行 CAN 协议 2.0B 版。它与 ISO 11898-1 标准兼容。
图 3-1 显示了 CAN 控制器的框图。 CAN 控制器由以下主要模块组成:

  • CAN协议引擎
  • TX handler
  • RX handler
  • SPI interface
  • 带有寄存器和中断逻辑的控制逻辑
  • I/O pins
  • Crystal oscillator

在这里插入图片描述

3.1 CAN模块
CAN 协议引擎与 TX 和 RX 处理程序一起提供在 CAN 总线上接收和传输消息所需的所有功能。通过首先加载适当的消息缓冲区和控制寄存器来传输消息。通过 SPI 接口使用控制寄存器位或使用发送使能引脚来启动传输。可以通过读取相应的寄存器来检查状态和错误。在 CAN 总线上检测到的任何消息都会检查错误,然后与用户定义的过滤器进行匹配,以查看是否应将其移至两个接收缓冲区之一。
3.2 Control Logic

控制逻辑块控制 MCP25625 的设置和操作并包含寄存器。
提供中断引脚以允许更大的系统灵活性。每个接收寄存器都有一个多用途中断引脚(以及特定中断引脚),可用于指示已接收到有效消息并将其加载到其中一个接收缓冲区中。特定中断引脚的使用是可选的。通用中断引脚以及状态寄存器(通过 SPI 接口访问)也可用于确定何时接收到有效消息

此外,还有三个引脚可用于启动已加载到三个发送寄存器之一的消息的立即发送。这些引脚的使用是可选的,因为启动消息传输也可以通过利用通过 SPI 接口访问的控制寄存器来完成。
3.3 SPI 协议模块
微控制器通过 SPI 接口与设备连接。可以使用 SPI READ 和 WRITE 命令访问寄存器。专用 SPI 命令可减少 SPI 过热
3.4 CAN 缓冲器和过滤器

图 3-2 更详细地显示了 CAN 缓冲器和过滤器。 MCP25625 具有三个发送缓冲器和两个接收缓冲器、两个接受屏蔽(每个接收缓冲器一个)和总共六个接受过滤器。
在这里插入图片描述
3.5 CAN协议引擎
CAN 协议引擎结合了几个功能块,如图 3-3 所示并在下文中描述

  • 协议有限状态机 引擎的核心是有限状态机 (FSM)。 FSM 是一个定序器,用于控制 TX/RX 移位寄存器、CRC 寄存器和总线之间的顺序数据流。 FSM 还控制错误管理逻辑 (EML) 以及 TX/RX 移位寄存器和缓冲器之间的并行数据流。 FSM保证接收、仲裁、发送和错误信令的过程按照CAN协议进行。总线上消息的自动重传也由 FSM 处理
  • 循环冗余校验 循环冗余校验寄存器生成循环冗余校验 (CRC) 代码,该代码在控制字段(对于具有 0 数据字节的消息)或数据字段之后发送,用于检查传入消息的 CRC 字段。
  • 错误管理逻辑 错误管理逻辑 (EML) 负责 CAN 设备的故障限制。它的两个计数器,接收错误计数器 (REC) 和发送错误计数器 (TEC),根据来自位流处理器的命令进行递增和递减。根据错误计数器的值,将 CAN 控制器设置为以下状态:错误主动、错误被动或总线关闭。
  • 位时序逻辑 位时序逻辑 (BTL) 监控总线输入并根据 CAN 协议处理与总线相关的位时序。 BTL 在帧开始时的隐性到显性总线转换(硬同步)和任何进一步的隐性到显性总线线路转换(如果 CAN 控制器本身不发送显性位)同步(重新同步)。 BTL 还提供可编程时间段来补偿传播延迟时间、相移并定义采样点在位时间内的位置。 BTL 的编程取决于波特率和外部物理延迟时间。

在这里插入图片描述
3.6消息传输
3.6.1发送缓冲器
MCP25625 实现了三个发送缓冲器。这些缓冲区中的每一个都占用 14 字节的 SRAM,并映射到设备内存映射中。
第一个字节 TXBxCTRL 是与消息缓冲区相关的控制寄存器。该寄存器中的信息决定了消息传输的条件,并指示消息传输的状态(见寄存器 4-1)。
五个字节用于保存标准标识符和扩展标识符,以及其他消息仲裁信息(见寄存器 4-3 到 4-7)。最后八个字节用于发送消息的八个可能的数据字节(见寄存器 4-8)
至少,必须加载 TXBxSIDH、TXBxSIDL 和 TXBxDLC 寄存器。如果报文中存在数据字节,则还必须加载 TXBxDn 寄存器。如果消息要使用扩展标识符,则还必须加载 TXBxEIDn 寄存器,并且应设置 TXBxSIDL 寄存器中的 EXIDE 位。
在发送报文之前,微控制器必须初始化 CANINTE 寄存器中的 TXxIE 位,以便在发送报文时启用或禁用中断生成

在写入发送缓冲区之前,TXBxCTRL 寄存器中的 TXREQ 位必须清零(表示发送缓冲区不是挂起的发送)。

3.6.2
传输优先级
传输优先级是 CAN 控制器内未决可传输消息的优先级。这与 CAN 协议内置的消息仲裁方案中隐含的任何优先级无关,也不一定相关。
在发送帧起始 (SOF) 之前,将比较所有排队等待发送的缓冲区的优先级。优先级最高的发送缓冲区将首先发送。例如,如果发送缓冲区 0 的优先级设置高于发送缓冲区 1,则缓冲区 0 将首先发送。
如果两个缓冲区的优先级设置相同,则缓冲区编号最高的缓冲区将首先发送。例如,如果 Transmit Buffer 1 与 Transmit Buffer 0 具有相同的优先级设置,则首先发送 Buffer 1。
TXBxCTRL 寄存器(见寄存器 4-1)中的 TXP[1:0] 位允许为每个发送缓冲区单独选择四个发送优先级。 TXPx 位等于“11”的缓冲器具有最高优先级,而 TXPx 位等于“00”的缓冲器具有最低优先级。
3.6.3
启动传输
为了启动报文发送,必须为每个要发送的缓冲区设置 TXBxCTRL 寄存器中的 TXREQ 位,
这可以通过:

  1. 通过 SPI WRITE 命令写入寄存器
  2. 发送 SPI RTS 命令
  3. 将要发送的特定发送缓冲区的 TxnRTS 引脚设置为低电平

如果通过 SPI 接口启动传输,则 TXREQ 位可以与 TXPx 优先级位同时设置。当 TXREQ 置位时,TXBxCTRL 寄存器中的 ABTF、MLOA 和 TXERR 位将自动清零。

将 TXBxCTRL 寄存器中的 TXREQ 位置 1
不会启动报文传输。它只是将消息缓冲区标记为准备好传输。当设备检测到总线可用时,传输将开始

一旦发送成功完成,TXREQ 位将被清零,CANINTF 寄存器中的 TXxIF 位将被置位,如果 CANINTE 寄存器中的 TXxIE 位被置位,则会产生中断。
如果报文传输失败,TXREQ 位将保持置位。这表明消息仍在等待传输,并且将设置以下条件标志之一:
报文开始发送但遇到错误情况,TXBxCTRL 寄存器中的 TXERR 位和 CANINTF 寄存器中的 MERRF 位将被置位,如果 CANINTE 寄存器中的 MERRE 位被置位,INT 引脚将产生中断.
如果仲裁失败,TXBxCTRL 寄存器中的 MLOA 位将被置位。

如果启用 One-Shot 模式(CANCTRL 寄存器中的 OSM 位),上述条件仍然存在。但是,TXREQ
位将被清零,消息不会再次尝试发送。

3.6.4 One-Shot 模式
One-Shot 模式确保消息只会尝试传输一次。通常,如果 CAN 消息失去仲裁或被错误帧破坏,则重新发送消息。启用 One-Shot 模式后,无论仲裁丢失或错误帧如何,一条消息都只会尝试传输一次。需要 One-Shot 模式来维护确定性系统(例如 TTCAN)中的时隙。

3.6.5 TxnRTS 引脚
TxnRTS 引脚是输入引脚,可配置为:

  • Request-to-Send 输入,它提供了一种从任何传输缓冲区启动消息传输的替代方法
  • 标准数字输入
    这些引脚的配置和控制是使用 TXRTSCTRL 寄存器完成的(见寄存器 4-2)。 TXRTSCTRL 寄存器只能在 CAN 控制器处于配置模式时修改(见第 2.0 节“操作模式”)。如果配置为请求发送引脚,则该引脚映射到发送缓冲器的 TXBxCTRL 寄存器中的相应 TXREQ 位。 TXREQ 位由 TxnRTS 引脚的下降沿锁存。 TxnRTS 引脚旨在允许它们直接连接到 RxnBF 引脚,以便在 RxnBF 引脚变为低电平时自动启动消息传输。 TxnRTS 引脚具有 100 k(标称值)的内部上拉电阻。
    3.6.6 中止传输
    MCU 可以通过清除相关的 TXREQ 位来请求中止特定消息缓冲区中的消息。此外,可以通过设置 CANCTRL 寄存器中的 ABAT 位来请求中止所有待处理的消息。该位必须复位(通常在 TXREQ 位已被验证清除后)以继续发送消息。只有当通过 CANCTRL 寄存器中的 ABAT 位请求中止时,TXBxCTRL 寄存器中的 ABTF 标志才会被置位。通过复位 TXREQ 位中止消息不会导致 ABTF 位被置位。注 1:被 tr 的消息。

请求中止时正在传输的消息将继续传输。如果消息没有成功完成传输(即丢失仲裁或被错误帧中断),则将中止。 当 One-Shot
模式使能时,如果报文由于错误帧或仲裁丢失而中断,TXBxCTRL 寄存器中的 ABTF 位将被置位。

3.7 信息接收
3.7.1 .1接收消息缓冲
MCP25625 包括两个完整的接收缓冲器,每个缓冲器带有多个接收滤波器。还有一个单独的消息组装缓冲区 (MAB),用作第三个接收缓冲区(见图 3-6)
3.7.1.2 消息汇编缓冲区
在三个接收缓冲区中,MAB 始终致力于从总线接收下一条消息。 MAB 组装所有收到的消息。仅当满足验收过滤器标准时,这些报文才会传输到 RXBx 缓冲区(见寄存器 4-12 至 4-17)
3.7.1.3 RXB0 和 RXB1
剩下的两个接收缓冲区,称为 RXB0 和 RXB1,可以通过 MAB 接收来自协议引擎的完整消息。 MCU 可以访问一个缓冲区,而另一个缓冲区可用于消息接收,或用于保存先前接收到的消息。

一旦消息被接受,MAB 的全部内容就会被移入接收缓冲区。这意味着无论标识符的类型(标准或扩展)和接收的数据字节数如何,整个接收缓冲区都会被
MAB 内容覆盖。因此,当接收到任何消息时,必须假定缓冲区中所有寄存器的内容已被修改

3.7.1.4 接收标志/中断
当报文移入任一接收缓冲区时,CANINTF 寄存器中相应的 RXxIF 位置位。该位必须由 MCU 清零,以允许将新消息接收到缓冲区中。该位提供正向锁定以确保在 CAN 控制器尝试将新消息加载到接收缓冲区之前 MCU 已完成消息。
如果 CANINTE 寄存器中的 RXxIE 位置位,将在 INT 引脚上产生中断,以指示已接收到有效消息。此外,如果配置为接收缓冲器满引脚,相关的 RxnBF 引脚将驱动为低电平。详情请参见第 3.7.4 节“Rx0BF 和 Rx1BF 引脚”。

3.7.2 接收优先级
RXB0 是较高优先级的缓冲区,有一个掩码和两个与之关联的消息接收过滤器。接收到的消息首先应用于 RXB0 的掩码和过滤器。
RXB1 是较低优先级的缓冲区,有一个掩码和四个与之关联的接受过滤器。
除了首先将消息应用于 RB0 掩码和过滤器之外,接收过滤器数量越少,RXB0 上的匹配就越严格,意味着该缓冲区的优先级更高。
接收到消息时,RXBxCTRL[3:0] 位将指示启用接收的接受过滤器编号以及接收到的消息是否为远程传输请求。
3.7.2.1 Rollover
此外,可以配置 RXB0CTRL 寄存器,这样,如果 RXB0 包含有效消息并且接收到另一个有效消息,则不会发生溢出错误并且新消息将被移至 RXB1,而不管 RXB1 的接受标准如何。
3.7.2.2 RXM[1:0] Bits
RXBxCTRL 寄存器中的 RXM[1:0] 位设置特殊接收模式。通常,这些位被清除为“00”,以允许接收由适当的接受过滤器确定的所有有效消息。在这种情况下,是否接收标准或扩展消息的确定由 RFXxSIDL 寄存器中的 EXIDE 位决定。
如果 RXMx 位设置为“11”,则缓冲器将接收所有报文,而不管接受过滤器的值如何。此外,如果消息在帧结束 (EOF) 之前有错误,则在错误帧之前组装在 MAB 中的那部分消息将被加载到缓冲区中。该模式在调试 CAN 系统时具有一定的价值,不会在实际系统环境中使用。
不建议将 RXMx 位设置为“01”或“10”。

3.7.3 帧开始信号
如果使能,则在 RxCAN 引脚上检测到的每个 CAN 消息开始时的 SOF 位上会生成 Start-of-Frame 信号。
RxCAN 引脚监视空闲总线的隐性到显性边沿。如果主导条件一直保持到采样点,MCP25625 将其解释为 SOF 并生成 SOF 脉冲。如果显性条件直到采样点才保持,MCP25625 将其解释为总线上的毛刺并且不生成 SOF 信号。图 3-5 说明了 SOF 信令和毛刺滤波。
与 One-Shot 模式一样,SOF 信号的一种用途是用于 TTCAN 型系统。此外,通过监控 RxCAN 引脚和 SOF 位,MCU 可以通过在影响 CAN 通信之前检测小毛刺来检测早期的物理总线问题。
3.7.4 Rx0BF 和 Rx1BF 引脚
除了 INT 引脚(在许多不同条件下向 MCU 提供中断信号)外,接收缓冲区已满引脚(Rx0BF 和 Rx1BF)还可用于分别指示有效消息已加载到 RXB0 或 RXB1。这些引脚具有三种不同的配置(参见表 3-1):

  1. Disabled
  2. Buffer Full Interrupt
  3. Digital Output

3.7.4.1 Disabled
通过清零 BFPCTRL 寄存器中的 BxBFE 位,可以将 RxnBF 引脚禁用为高阻抗状态
3.7.4.2 配置为缓冲区已满
RxnBF 管脚可以配置为缓冲器满中断管脚或标准数字输出。这些引脚的配置和状态可通过 BFPCTRL 寄存器(寄存器 4-11)获得。当设置为在中断模式下工作时(通过设置 BFPCTRL 寄存器中的 BxBFE 和 BxBFM 位),这些引脚为低电平有效,并映射到每个接收缓冲区的 CANINTF 寄存器中的 RXxIF 位。当其中一个接收缓冲区的该位变为高电平时(表示已将有效消息加载到缓冲区中),相应的 RxnBF 引脚将变为低电平。当 MCU 清零 RXxIF 位时,相应的中断引脚将进入逻辑高电平状态,直到下一条报文加载到接收缓冲区。
3.7.4.3 Configured as Digital Output
当用作数字输出时,必须清除 BFPCTRL 寄存器中的 BxBFM 位,并且必须为相关缓冲区设置 BxBFE 位。在此模式下,引脚的状态由同一寄存器中的 BxBFS 位控制。向 BxBFS 位写入“1”将导致相关缓冲器满引脚驱动为高电平,而“0”将导致该引脚驱动为低电平。在此模式下使用引脚时,只能使用 SPI BIT MODIFY 命令修改引脚的状态,以防止在任一缓冲区满引脚上发生毛刺。
3.7.5 消息接受过滤器和掩码
消息接受过滤器和掩码用于确定是否应将消息组合缓冲区中的消息加载到任一接收缓冲区中(见图 3-9)。一旦 MAB 接收到有效消息,就会将消息的标识符字段与过滤器值进行比较。如果匹配,该消息将被加载到适当的接收缓冲区。第 4.3 节“接受过滤器寄存器”中描述了消息过滤所需的寄存器

3.7.5.1 数据字节过滤

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值