USER GUIDE / CONNECTIVITY & NETWORKING / CAN FD / REGISTER DESCRIPTION

寄存器描述

CAN 模式配置寄存器

CANMODEBASE + 0x00
Bit313029282726252423222120191817161514131211109876543210
字段ReservedRXCNT4TXARReservedSLEEPDMAENFDENFDTOLPTOEXCReservedERARSTELOMRSTM
RST?????????????????000000000000001
位名称说明RW
31:15Reserved写入无影响,读取为零。
R
14RXCNT4RX entry count 始终为 4 个字。
将 RXCNT4 置 1,以表示 RX entry count 始终为 4 个字。
该寄存器只能在复位模式下修改(RSTM=1)。
RW
13TXARTX 自动请求。
将 TXAR 置 1,以表示在访问最后一个有效的 CANTXDATA 时请求一次发送(由 dlc、fd、rtr 决定)
该寄存器只能在复位模式下修改(RSTM=1)。
RW
12:10Reserved写入无影响,读取为零。
R
9SLEEPSLEEP 模式
将 SLEEP 置 1,以表示 CAN Controller 即将进入 SLEEP 模式。该寄存器用于使能 CAN 总线唤醒检测器。
当检测到来自 CAN transceiver 的 rx_i 下降沿时,硬件会自动清除此寄存器。同时,如果 WKIE 置位,将产生 WKI 中断。为了检测来自 CAN bus 的有效唤醒信号,应在 CAN bus 空闲期间(rx_i 为高电平)对此寄存器进行编程。
此寄存器只能在复位模式下修改(RSTM=1)。
RW
8DMAENRX DMA 模式使能
DMAEN=1 使能 RXDMA 模式;DMAEN=0 禁用 RXDMA 模式
此寄存器只能在复位模式下修改(RSTM=1)。
RW
7FDENFD 模式使能
FDEN=1 使能 FD 模式,可接收和发送 FD 帧,以及 Classical 帧
FDEN=0 禁用 FD 模式
此寄存器只能在复位模式下修改(RSTM=1)。
RW
6FDTOLFD 容错模式
FDTOL=1 且 FDEN=0 时,使能 FD tolerant 模式。仅支持 classical CAN 帧格式,但不会干扰 FD 帧。
FDTOL=0 且 FDEN=0 时,仅支持 classical CAN 帧,并且会干扰 FD 帧。
此寄存器只能在复位模式下修改(RSTM=1)。
RW
5PTOEXC协议异常选项使能
PTOEXC=1 时,在 FD 模式下使能协议异常选项。CAN controller 在检测到 res 位为隐性而非预期的显性值时,应进入总线集成状态并等待总线空闲条件。
PTOEXC=0 时,禁用协议异常选项。启用 FD 的节点在检测到 FDF 位后的 res 位为隐性时,应将其视为格式错误。
此寄存器只能在复位模式下修改(RSTM=1)。
RW
4Reserved写入无影响,读取为零。
R
3ERAR错误自动恢复
ERAR=1 将允许从 bus off 状态自动恢复
当此位被置位时,使能从 Bus Off 状态到 Error Active 状态的自动恢复。
当接收到 128 次 bus-free 时间(11 个连续“隐性”位)时,满足自动恢复条件。退出 BusOff 状态时,如果 ERAR=1,硬件会将 TEC 和 REC 清零。
ERAR=0 表示禁用自动恢复功能。
如果 ERAR=0,软件必须清除 REC 和 TEC,才能从 Bus Off 状态退出到 Error Active 状态。请注意,在进入 Bus Off 状态时,如果 ERAR=0,硬件会将 RSTM 置位,因此允许修改 REC 和 TEC。清除 REC 和 TEC 后,软件还必须清除 RSTM 位,才能返回正常运行。
此寄存器只能在复位模式下修改(RSTM=1)。
RW
2STE自测试使能
STE=1 使能自测试模式。
STE=1 时,与正常工作模式的唯一区别是所有 ACK 错误都会被忽略。
STE=0 表示正常模式运行此寄存器只能在复位模式下修改(RSTM=1)
RW
1LOM只听模式
当 LOM=1 时,CAN 控制器将进入监听模式。
当 LOM=1 时,CAN 控制器处于监听模式。在这种模式下,CAN 控制器仅执行接收功能,不会进行任何传输(包括应答信号 ACK)。在这种模式下,其他功能可以像在正常操作模式下一样使用。然而,错误计数器会保持在当前值,并且无法进行消息传输。
这个寄存器只能在复位模式(RSTM=1)下被修改。
RW
0RSTM复位模式
RSTM=1 将强制 CAN Controller 进入复位模式,而不受其他设置影响,并初始化所有状态机。它不会影响寄存器内容。系统复位后,RSTM 默认值为 1。当进入 Bus-Off 状态且 ERAR=0 时,硬件会将 RSTM 置为 1。
当进入 Bus-Off 状态且 ERAR=0 时由硬件置位。
必须将 RSTM 清零为 0,才能使 CAN Controller 进入正常工作。
请注意,必须先将 RSTM 置为 1,才能修改 CANMODE 中的其他寄存器。RSTM 的写周期必须先于 FDEN、PTOEXC、PHYOFF、ERAR、STE 和 LOM 的修改周期。
RW

CAN 命令寄存器

CANCMDBASE + 0x04
Bit313029282726252423222120191817161514131211109876543210
字段ReservedCTBOFRSRRCDORRBATTR
RST????????????????????????????????
位名称说明RW
31:7Reserved写入无影响,读取为零。
R
6CTB清除发送缓冲区
将 CTB 置 1 会取消尚未执行的 Transmit Request(TR)命令并释放发送缓冲区,以便进行任意消息修改。该命令仅在发送缓冲区中存有尚未发送且 TBS=0 的消息时有效。当 TBS 置位时,该位由硬件自动清零。由于 CTB 仅取消发送缓冲区中尚未执行的发送,因此如果要中止所有发送,还需要额外的 AT 命令来中止 CAN MAC controller 中挂起的发送。
W
5OFR过载帧请求
将 OFR 设置为 1 会请求发送一个过载帧。过载帧将在下一个预期的间隔段(INTERMISSION)的第一个比特时间内发送。发送过载帧后,该位将由硬件自动清零。由于过载帧的发送不考虑总线状态,因此在完成发送时不会生成中断。
W
4SRR自接收请求
SRR=1 将导致一条消息被同时发送和接收。执行自接收请求命令时,如果验收过滤器设置为相应标识符,则会在发送消息的同时接收该消息。该命令主要用于 controller 的自测试。如果 STE=1 使能自测试模式,则即使不存在其他节点,发送和接收也可以成功。发送和接收操作完成后,该位由硬件自动清零,并且会同时产生发送和接收中断。仅当 CTB=0 且 TR=0 时,SRR 才有效。
W
3CDO清除数据溢出
CDO=1 将清除数据溢出状态位。该命令位用于清除由数据溢出状态位指示的数据溢出条件。此该命令位由硬件自动清零。
W
2RRB释放接收缓冲区
在读取接收缓冲区的内容后,CPU 可以通过将 Release Receive Buffer 位设为逻辑 1 来释放此 RX-FIFO 中的存储空间。这可能会使另一条消息立即变为接收缓冲区中可用。如果没有其他可用消息,则 Receive Buffer Status (RBS) 位被复位。RRB 仅在 DMAEN=0 时相关。
W
1AT中止发送
AT=1 将中止任何挂起的发送请求。AT 不会停止正在进行的消息发送。但是下一次发送尝试将被中止。中止完成后将导致 CANSTAT 寄存器中的 TCS=1。AT 仅应用于中止带有错误的消息发送(多数为 ACK 错误)。由于 AT 不能保证停止正在进行的消息发送,因此当 TCS=1 时,软件应检查 Bus Error Flag (BEI) 位和 Arbitration Lost Flag (ALI)。TCS=1 可能由中止或发送成功两者之一导致。如果 BEI=0 且 ALI=0,则即使发出了中止命令,消息也已成功发送。否则,发送实际上因总线错误或仲裁丢失而被中止。
W
0TR发送请求
设置 TR=1 将启动发送缓冲区中消息的发送过程。在设置 TR=1 时,如果 CAN 总线处于空闲状态,发送缓冲区中的消息(包括 CANTFIR 和 CANTXID)将被送至 CAN MAC 控制器进行发送处理。当消息被送至 CAN MAC 控制器后,发送缓冲区将被释放,以便 CPU 写入下一条消息。同时,TBS 和 TBI 会被设置,以通知用户。TR 仅在 CTB=0 时有效。
W

CAN 状态寄存器

CANSTATBASE + 0x08
Bit313029282726252423222120191817161514131211109876543210
字段ReservedTBFBOSESTSRSTCSTBSDOSRBS
RST00000000000000000000000100001100
位名称说明RW
31:9Reserved写入无影响,读取为零。
R
8TBF发送缓冲区空闲
TBF=1 表示发送缓冲区为空,可以写入新消息。
TBF=0 表示发送缓冲区被锁定,发送缓冲区中的内容要么正在等待发送,要么正在发送过程中。不能写入新消息。
R
7BOSBus Off 状态
BOS=1 表示 CAN controller 处于 Bus Off 状态。
BOS=0 表示 CAN controller 正在参与总线活动。
BusOff 状态在错误处理状态图中定义。退出 Bus Off 状态的可能方式包括总线自动恢复,或在复位模式下向 TEC 写入小于 255 的值。
R
6ES错误状态
ES=1 表示至少有一个错误计数器已达到或超过 CANEWLR 定义的告警限制。
ES=0 表示未超过告警限制。
在接收或发送期间检测到的错误将影响错误计数器,这符合 CAN 2.0B 协议规范。至少有一个错误计数器达到或超过告警限制设置(CANEWLR) 时,ES 被置位。如果使能,将产生错误告警中断。
硬件复位后 CANEWLR 的默认值为 0x60。
R
5TS发送状态
TS=1 表示 CAN controller 正在发送消息。
R
4RS接收状态
RS=1 表示 CAN controller 正在接收消息。
如果 TS 和 RS 均为 0,则 CAN controller 处于空闲状态。
R
3TCS发送完成状态
TCS=1 表示最近一次请求的消息发送已成功完成。
当发出 TR 或 SRR 命令时,TCS 被清零为 0。消息成功发送后,硬件将 TCS 置为 1。在消息发送期间,TCS 保持为 0;如果消息成功发送,硬件将 TCS 置为 1。请注意,TCS=1 也可能由 AT 命令导致。
R
2TBS发送缓冲区状态
TBS=1 表示发送缓冲区为空,可以写入新消息。
TBS=0 表示发送缓冲区被锁定,发送缓冲区中的内容要么正在等待发送,要么正在发送过程中,不能写入新消息。
R
1DOS数据溢出状态
DOS=1 表示由于 RX-FIFO 溢出而丢失了一条已接收消息。将产生溢出中断,并置位 DOI 标志。必须通过设置 CDO (Clear Data Overrun) 命令位或进入复位模式来清除 DOS。
R
0RBS接收缓冲区状态
RBS=1 表示 RX-FIFO 中有一条或多条有效消息可用。当 RX-FIFO 为空时,RBS 被清除。
R

CAN 中断寄存器

CANINTBASE + 0x0C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedOFIETBIEDMAIEWKIEBEIEALIEEPIEBOIEDOIEEIETIERIEReservedOFITBIDMAIWKIBEIALIEPIBOIDOIEITIRI
RST????????????????????????????????
位名称说明RW
31:28Reserved写入无影响,读取为零。
R
27OFIE过载帧中断使能
RW
26TBIE发送缓冲区空中断使能
RW
25DMAIERX DMA 完成中断使能
RW
24WKIE唤醒中断使能
RW
23BEIE总线错误中断使能
RW
22ALIE仲裁丢失中断使能
RW
21EPIE错误被动中断使能
RW
20BOIEBus Off 中断使能
RW
19DOIE数据溢出中断使能
RW
18EIE错误告警中断使能
RW
17TIE发送中断使能
RW
16RIE接收中断使能
RW
15:12Reserved写入无影响,读取为零。
R
11OFI过载帧中断标志
当 CAN controller 在 CAN-bus 上检测到或发出过载帧时,OFI 被置位。读取后 OFI 被清除。必须置位 OFIE 位以使能 OFI 功能。
R
10TBI发送缓冲区空中断标志
当发送缓冲区可用于新消息时,TBI 置位。发送缓冲区(包括 CANTFIR 和 CANTXID)为双缓冲。TBS 和 TBI 表示发送缓冲区为空,可接受来自 CPU 的新消息。读取后 TBI 清零。必须将 TBIE 位置位以使能 TBI 功能。
R
9DMAIRX DMA 完成中断标志
在 RX DMA 模式下,当接收 dma_finsih 信号时,DMAI 置位。读取后 DMAI 清零。必须同时置位 DMAEN 和 DMAIE 才能使能 DMAI 功能。
R
8WKI唤醒中断标志
当 CAN 控制器在 SLEEP 模式(SLEEP=1)下检测到 CAN-bus 上的显性位时,WKI 置位。读取后 WKI 清零。必须同时置位 WKIE 和 SLEEP 位才能使能 WKI 功能。该中断可用于通知并将控制器从 CAN-bus 唤醒。
R
7BEI总线错误中断标志
当 CAN 控制器检测到 CAN-bus 上存在错误时,BEI 置位。错误类型包括格式错误、位填充错误、位错误(当发送的数据或 CRC 与接收的不匹配时)、CRC 错误以及 ACK 错误。必须将 BEIE 位置位以使能 BEI 功能。
R
6ALI仲裁丢失中断
当消息由于仲裁丢失而未能成功发送时,ALI 置位。必须将 ALIE 位置位以使能 ALI 功能。
R
5EPI错误被动中断
当 CAN 控制器进入错误被动状态,或 CAN 控制器已处于错误被动状态并进入错误主动状态时,EPI 置位。必须将 EPIE 位置位以使能 EPI 功能。
R
4BOI总线关闭状态中断
当 CAN 控制器处于总线关闭状态(BOS=1)时,BOI 被设置。由于 BOI 和 BOS 在总线关闭状态下始终为 1,软件必须在进入 BOI 中断服务例程时禁用 BOIE,否则中断会无限触发。必须设置 BOIE 位才能启用 BOI 功能。
R
3DOI数据溢出中断
当接收消息由于 RX-FIFO 溢出而丢失时,DOI 置位。该功能也等效于 DOS 从 0 变为 1 时。必须将 DOIE 位置位以使能 DOI 功能。读取后 DOI 清零。
R
2EI错误告警中断
当 REC 或 TEC 大于或等于 CANEWLR 设置值时,EI 置位,或等效地当 ES 从 0 变为 1 时。必须将 EIE 位置位以使能 EI 功能。
R
1TI发送中断
每当发送缓冲区变为空时,TI 置位,或等效地,当消息发送完成且 TBS 从 0 变为 1 时,TI 置位。必须将 TIE 位置位以使能 TI 功能。
R
0RI接收中断
当 CAN 控制器将一条新消息放入 RX-FIFO 时,RI 置位。读取后 RI 清零。必须将 RIE 位置位以使能 RI 功能。
R

CAN 总线时序寄存器

CANBTRBASE + 0x10
Bit313029282726252423222120191817161514131211109876543210
字段ReservedSAWTSEG2[2-0]TSEG1[3-0]SJW[1-0]CANCS[5-0]
RST????????????????????????????????
位名称说明RW
31:16Reserved写入无影响,读取为零。
R
15SAWSAW=1 时将使用三次采样方法。三次采样方法在 TSEG1 和 TSEG2 之间使用三个采样时刻,因此可接受两个相同的采样值。
RW
14:12TSEG2[2-0]TSEG2[2-0] 定义位时间段 2。TSEG2=TSEG2[2-0] +1。
RW
11:8TSEG1[3-0]TSEG1[3-0] 定义位时间段 1。TSEG1=TSEG1[3-0] +1。
RW
7:6SJW[1-0]同步跳转长度
该字段定义重同步时以 TQCLK 周期单位表示的最大调整量。接收器使用下降沿来确定网络的物理延迟。同步通过以下方式实现:在 SYNC SEG 之后的位时间中插入延迟补偿段,从而也会延迟本地接收器的采样点。
SJW[1-0]+1 用于设置以 TQCLK 周期计的最大允许延迟段。
RW
5:0CANCS[5-0]CANCS[5-0] 定义 CAN 控制器时钟
CAN 控制器时钟 TQCLK =CANCLK/(CANCS[5-0]+1)。这定义了来自 CAN 系统时钟的 CAN 时间量子 (TQCLK)。
RW

CAN FD 时序寄存器

CANFDTRBASE + 0x14
Bit313029282726252423222120191817161514131211109876543210
字段SW_SSPSSP_SEL[2-0]ReservedFDTSEG2[2-0]FDTSEG1[3-0]FDSJW[1-0]CANFDCS[5-0]
RST????????????????0110011100000001
位名称说明RW
31SW_SSP软件发送器延迟补偿
SW_SSP=0 时,该机制会自动计算收发器的环路延迟时间,并补偿比较 tx_o 与 rx_i 所需的延迟时间。读取 SSP_SEL[2-0] 得到的是发送器延迟补偿值,该值由硬件机制计算。SW_SSP=1 时,发送器延迟补偿 SSP_SEL[2-0] 由软件编程设定。
RW
30:28SSP_SEL[2-0]发送器延迟补偿值
如果 SW_SSP=0,则 SSP_SEL[2-0] 为只读寄存器,读取 SSP_SEL[2-0] 得到的是发送器延迟补偿值,该值由硬件机制计算。
如果 SW_SSP=1,软件必须通过设置该寄存器来配置准确的环路延迟。该延迟值取决于发送时经由外部收发器从 tx_o 到 rx_i 的环路延迟。
发送时经由外部收发器从 tx_o 到 rx_i 的环路延迟。
SSP_SEL 发送器延迟补偿时间
000 零发送器延迟补偿。适用于环路延迟时间 <TSEG2
001 1 位时间发送器延迟补偿。适用于 TSEG2<= 环路延迟 <1 位时间 +TSEG2
010 2 位时间发送器延迟补偿。适用于 1 位时间 +TSEG2<= 环路延迟 <2 位时间 +TSEG2
011 3bittime 发送器延迟补偿。适用于 2bittime+TSEG2<= 环路延迟 <3bittime+TSEG2
100 4bittime 发送器延迟补偿。适用于 3bittime+TSEG2<= 环路延迟 <4bittime+TSEG2
101 5bittime 发送器延迟补偿。适用于 4bittime+TSEG2<= 环路延迟 <5bittime+TSEG2
110,111 Reserved
RW
27:15Reserved写入无影响,读取为零。
R
14:12FDTSEG2[2-0]FDTSEG2[2-0] 定义位时间分量 2。TSEG2 =FDTSEG2[2-0]+1。
RW
11:8FDTSEG1[3-0]FDTSEG1[3-0] 定义位时间分量 1。TSEG1 =FDTSEG1[3-0]+1。
RW
7:6FDSJW[1-0]数据阶段同步跳转长度
这定义了重同步时以 FDTQCLK 周期为单位的最大调整量。接收器使用下降沿来确定网络的物理延迟。同步通过以下方式实现:在 SYNC SEG 之后的位时间中插入延迟补偿段,从而也会延迟本地接收器的采样点。
FDSJW[1-0]+1 用于设置以 FDTQCLK 周期计的最大允许延迟段。
RW
5:0CANFDCS[5-0]CANFDCS[5-0] 定义 FD 数据阶段的 CAN Controller Clock。CAN 控制器时钟 FDTQCLK = CANCLK/(CANFDCS[5-0]+1)。这定义了来自 CAN 系统时钟的 CAN FD 时间量子 (FDTQCLK)。
RW

CAN 过滤器寄存器

CANFLTBASE + 0x18
Bit313029282726252423222120191817161514131211109876543210
字段ReservedALC4ALC3ALC2ALC1ALC0ReservedFMS[3]FMS[2]FMS[1]FMS[0]ReservedFTER3FTER2FTER1FTER0
RST????????????????????????????1111
位名称说明RW
31:21Reserved写入无影响,读取为零。
R
20ALC4这些位为只读,用于报告仲裁丢失的位位置在发送消息时。下表定义了相应的对应关系。
R
19ALC3
R
18ALC2
R
17ALC1
R
16ALC0
R
15:12Reserved写入无影响,读取为零。
R
11FMS[3]验收过滤器 3 匹配状态
FSM[3]=1 表示验收过滤器 3 匹配
FSM[3]=0 表示验收过滤器 3 不匹配
R
10FMS[2]验收过滤器 2 匹配状态
FSM[2]=1 表示验收过滤器 2 匹配
FSM[2]=0 表示验收过滤器 2 不匹配
R
9FMS[2]验收过滤器 1 匹配状态
FSM[1]=1 表示验收过滤器 1 匹配
FSM[1]=0 表示验收过滤器 1 不匹配
R
8FMS[0]验收过滤器 0 匹配状态
FSM[0]=1 表示验收过滤器 0 匹配
FSM[0]=0 表示验收过滤器 0 不匹配
R
7:4Reserved写入无影响,读取为零。
R
3FTER3验收过滤器 3 使能
FTER3=1 表示使能验收过滤器 3
RW
2FTER2验收过滤器 2 使能
FTER2=1 表示使能验收过滤器 2
RW
1FTER1验收过滤器 1 使能
FTER1=1 表示使能验收过滤器 1
RW
0FTER0验收过滤器 0 使能
FTER0=1 表示使能验收过滤器 0
RW
表 1 发送过程中仲裁丢失的位位置
位十进制值说明
ALC4ALC3ALC2ALC1ALC0
000000在位 ID28 处仲裁丢失
000011在位 ID27 处仲裁丢失
000102在位 ID26 处仲裁丢失
000113在位 ID25 处仲裁丢失
001004在位 ID24 处仲裁丢失
001015在位 ID23 处仲裁丢失
001106在位 ID22 处丢失仲裁
001117在位 ID21 处丢失仲裁

CAN 错误寄存器

CANERRBASE + 0x1C
Bit313029282726252423222120191817161514131211109876543210
字段CANTEC[7-0]CANREC[7-0]CANEWLR[7-0]ERRC[1]ERRC[0]DIRSEG[4]SEG[3]SEG[2]SEG[1]SEG[0]
RST00000000000000000011000000000000
位名称说明RW
31:24CANTEC[7-0]这些位表示发送错误计数。
这些位在复位模式下可修改(CANMODE.RSTM =1),在正常工作模式下为只读。CANTEC 包含当前错误计数,并在硬件复位后初始化为 0。如果发生 bus-off 事件且未启用自动恢复,则发送错误计数器会初始化为 128。软件只能通过使用复位模式来恢复到正常的 error-active 状态。
RW
23:16CANREC[7-0]这些位表示接收错误计数。
该寄存器在复位模式下可修改(CANMODE.RSTM=1),在正常工作模式下为只读。CANREC 包含当前错误计数。当控制器进入 bus-off 状态时,CANREC 会重新初始化为 0,并且在 bus-off 期间,对 CANREC 的写入无效。
RW
15:8CANEWLR[7-0]这些位表示错误警告限制值。
这些位在复位模式下可修改(CANMODE.RSTM=1),在正常工作模式下为只读。这些位用于设置错误计数器的警告限制值。当 CANREC 或 CANTEC 的值超过 CANEWLR 值时,会生成错误警告中断,并在中断标志寄存器中置位 EI 标志。CANEWLF 在硬件复位后默认为 0x60。
RW
7ERRC[1]错误代码。
这两位反映如下表所定义的错误类型。
R
6ERRC[0]
R
5DIR传输错误方向
DIR=1 表示错误发生在接收期间
DIR=0 表示错误发生在发送期间
R
4SEG[4]错误位置。
下表定义了该功能。
R
3SEG[3]
R
2SEG[2]
R
1SEG[1]
R
0SEG[0]
R
表 2 错误位置
SEG[4-0]功能
00011帧起始
00010ID28 到 ID21
00110ID20 到 ID18
00100位 SRTR
00101位 IDE
00111ID17 到 ID13
01111ID12 到 ID5
01110ID4 到 ID0
01100位 RTR
01101保留位 1
01001保留位 0
01011数据长度码
01010数据字段
01000CRC 序列
11000CRC 分隔符
11001应答槽
11011应答分隔符
11010帧结束
10010帧间隔
10001主动错误标志
10110被动错误标志

CAN 发送帧信息寄存器

CANTFIRBASE + 0x40
Bit313029282726252423222120191817161514131211109876543210
字段ReservedFFRTRFDFBRSDLC[3]DLC[2]DLC[1]DLC[0]
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved写入无影响,读取为零。
R
7FF帧格式
FF=1 表示扩展格式帧,FF=0 表示标准格式帧
RW
6RTR远程帧发送请求
RTR=1 表示远程帧
RTR=0 表示常规数据帧
RW
5FDFFD 格式指示位
FDF=1 表示 FD 帧格式
FDF=0 表示经典帧格式
RW
4BRS位速率切换
BRS=1 时切换到预配置的数据阶段数据位速率,BRS=0 时保持仲裁阶段的标称位速率
RW
3:0DLC[3-0]数据字节数 =DLC[3-0]
消息数据字段中的字节数由数据长度码编码。在远程帧传输开始时,由于 RTR 位为逻辑 1(remote),因此不考虑数据长度码。这会使发送/接收的数据字节数强制为 0。不过,仍必须正确指定数据长度码,以避免在两个 CAN 控制器同时以相同标识符开始远程帧传输时发生总线错误。
DLC 对应的数据字节数由下表定义。
RW
表 3 DLC 对应的数据字节数编码
Frames数据长度码数据字节数
DLC3DLC2DLC1DLC0
经典帧和 FD帧00000
00011
00102
00113
01004
01015
01106
01117
10008
经典帧10 或 10 或 10 或 18
FD帧100112
101016
101120
110024
110132
111048
111164

CAN 发送标识符寄存器

CANTXIDBASE + 0x44
Bit313029282726252423222120191817161514131211109876543210
字段ReservedCANTXID
RST00000000000000000000000000000000
位名称说明RW
31:29Reserved写入无影响,读取为零。
R
28:0CANTXID对于 SFFID,CANTXID[10:0] =ID[10:0],CANTXID[31:11] 未使用。对于 EFFID,CANTXID[28:0] =ID[28:0],CANTXID[31:29] 未使用。
RW

CAN 发送数据寄存器 0-15

数据字段寄存器映射到地址 Base+0x48 到 Base+0x84。传输的数据字节数由数据长度码定义。首先传输的位是地址 Base+0x48 处数据字节 0 的最高有效位。

CANTXDATA0-15BASE + 0x48 - 0x84
Bit313029282726252423222120191817161514131211109876543210
字段CANTXDATA
RST00000000000000000000000000000000
位名称说明RW
31:0CANTXDATA待发送的数据。
RW

CAN 验收过滤器 ID0/1/2/3

有四个 Acceptance Filters 用于与总线上的消息 ID 进行匹配。每个过滤器都可以独立启用或禁用。每个验收过滤器由 1 个 ID 寄存器及其对应的 ID Mask 寄存器组成,ID Mask 寄存器用于在比较匹配时屏蔽 ID 中的特定位。对应于组成 SFF 和 EFF 的 ID28 到 ID0 的 ID 寄存器布局与 Transmit ID 寄存器相同。请注意,ID 寄存器仅定义 ID,并不定义帧类型,因此 ID 寄存器中的一个值可能分别对应 SFF 和 EFF 的两种可能匹配。软件应检查是否可能出现对另一种帧类型的非预期接受 ID。对于 Filter 的 Mask 寄存器,当 mask 位为 0 时,对应位参与比较匹配;当 mask 位为 1 时,对应位被忽略。所有 Acceptance Filter ID 寄存器和 Mask 寄存器只能在复位模式下修改,在正常工作模式下表现为只读。

CANAFID0/1/2/3BASE + 0x20 / 0x28 / 0x30 / 0x38
Bit313029282726252423222120191817161514131211109876543210
字段ReservedCANAFID
RST00000000000000000000000000000000
位名称说明RW
31:29Reserved写入无影响,读取为零。
R
28:0CANAFID该寄存器只能在复位模式下修改,在正常工作模式下表现为只读。
RW

CAN 验收过滤器掩码 0/1/2/3

CANAFMK0/1/2/3BASE + 0x24 / 0x2C / 0x34 / 0x3C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedCANAFMK
RST00000000000000000000000000000000
位名称说明RW
31:29Reserved写入无影响,读取为零。
R
28:0CANAFMK该寄存器只能在复位模式下修改,在正常工作模式下表现为只读。
RW

CAN 接收帧信息寄存器

CANRFIRBASE + 0x90
Bit313029282726252423222120191817161514131211109876543210
字段ReservedRXFMS[3]RXFMS[2]RXFMS[1]RXFMS[0]ReservedESIFFRTRFDFBRSDLC[3]DLC[2]DLC[1]DLC[0]
RST00000000000000000000000000000000
位名称说明RW
31:20Reserved写入无影响,读取为零。
R
19RXFMS[3]验收过滤器 3 匹配状态
RXFSM[3]=1 表示验收过滤器 3 匹配
RXFSM[3]=0 表示验收过滤器 3 不匹配
R
18RXFMS[2]验收过滤器 2 匹配状态
RXFSM[2]=1 表示验收过滤器 2 匹配
RXFSM[2]=0 表示验收过滤器 2 不匹配
R
17RXFMS[1]验收过滤器 1 匹配状态
RXFSM[1]=1 表示验收过滤器 1 匹配
RXFSM[1]=0 表示验收过滤器 1 不匹配
R
16RXFMS[0]验收过滤器 0 匹配状态
RXFSM[0]=1 表示验收过滤器 0 匹配
RXFSM[0]=0 表示验收过滤器 0 不匹配
R
15:8Reserved写入无影响,读取为零。
R
8ESI错误状态指示器
ESI=1 表示发送器是错误被动节点。
ESI=0 表示发送器是错误主动节点。
R
7FF帧格式
FF=1 表示扩展格式帧,FF=0 表示标准格式帧
R
6RTR远程帧发送请求
RTR=1 表示远程帧
RTR=0 表示常规数据帧
R
5FDFFD 格式指示
FDF=1 表示 FD 帧格式
FDF=0 表示经典帧格式
R
4BRS位速率切换
BRS=1 应切换到预配置的数据阶段数据位速率,BRS=0 保持仲裁阶段的标称位速率
R
3:0DLC[3-0]数据字节数 =DLC[3-0]
消息数据字段中的字节数由数据长度码编码。在远程帧传输开始时,由于 RTR 位为逻辑 1(远程),因此不考虑数据长度码。这会强制发送/接收的数据字节数为 0。尽管如此,仍必须正确指定数据长度码,以避免在两个 CAN 控制器同时以相同标识符开始远程帧传输时发生总线错误。
R

CAN 接收标识符寄存器

CANRXIDBASE + 0x94
Bit313029282726252423222120191817161514131211109876543210
字段CANRXID
RST00000000000000000000000000000000
位名称说明RW
31:0CANRXID对于 SFFID,CANRXID[10:0]=ID[10:0],CANRXID[31:11] 未使用。对于 EFFID,CANRXID[28:0]= ID[28:0],CANRXID[31:29] 未使用。
R

CAN 接收数据寄存器 0-15

数据字段寄存器映射到地址 Base+0x98 至 Base+0xD4。接收到的数据字节数由数据长度码定义。

CANRXDATA0-15BASE + 0x98 - 0xD4
Bit313029282726252423222120191817161514131211109876543210
字段CANRXDATA
RST00000000000000000000000000000000
位名称说明RW
31:0CANRXDATA接收到的数据。
R

CAN 自环寄存器

CANSLFBASE + 0xFC
Bit313029282726252423222120191817161514131211109876543210
字段IPRESETReservedCANTXOFFCANSLENReservedCANSLKEY[3-0]Reserved
RST00000000000000000000000000000000
位名称说明RW
31IPRESETCAN 2.0B IP 复位。
仅当在复位模式(RSTM=1)下解锁 Self-Loop Security Key 时,才能对该位进行编程。
设置 IPRESET=1 将产生内部复位信号,以初始化 CAN 控制器中的所有寄存器和所有机制。IPRESET 会自动清零。
RW
30:26Reserved写入无影响,读取为零。
R
25CANTXOFFCAN TX 关闭。
仅当在复位模式(RSTM=1)下解锁 Self-Loop Security Key 时,才能对该位进行编程。
CANTXOFF= 1 强制 tx_o 始终向 CAN transceiver 输出逻辑高电平。
CANTXOFF= 0 时,tx_o 对 CAN transceiver 正常工作。
RW
24CANSLENCAN 自环测试模式。
仅当在复位模式(RSTM=1)下解锁 Self-Loop Security Key 时,才能对该位进行编程,
CANSLEN=1 使能 CAN 自环测试模式。
CANSLEN=0 禁用 CAN 自环测试模式。
RW
23:20Reserved写入无影响,读取为零。
R
19:16CANSLKEY[3-0]CANSLKEY[3-0] 用于保护 CANSLEN,并且只能在复位模式(RSTM=1)下修改。向 CANSLKEY[3-0] 写入 0x6 可解锁对 CANSLEN 的访问。
W
15:0Reserved写入无影响,读取为零。
R