USER GUIDE / CONNECTIVITY & NETWORKING / CAN FD / REGISTER DESCRIPTION
寄存器描述
CAN 模式配置寄存器
CANMODEBASE + 0x00
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:15 | Reserved | 写入无影响,读取为零。 | R |
| 14 | RXCNT4 | RX entry count 始终为 4 个字。 将 RXCNT4 置 1,以表示 RX entry count 始终为 4 个字。 该寄存器只能在复位模式下修改(RSTM=1)。 | RW |
| 13 | TXAR | TX 自动请求。 将 TXAR 置 1,以表示在访问最后一个有效的 CANTXDATA 时请求一次发送(由 dlc、fd、rtr 决定) 该寄存器只能在复位模式下修改(RSTM=1)。 | RW |
| 12:10 | Reserved | 写入无影响,读取为零。 | R |
| 9 | SLEEP | SLEEP 模式 将 SLEEP 置 1,以表示 CAN Controller 即将进入 SLEEP 模式。该寄存器用于使能 CAN 总线唤醒检测器。 当检测到来自 CAN transceiver 的 rx_i 下降沿时,硬件会自动清除此寄存器。同时,如果 WKIE 置位,将产生 WKI 中断。为了检测来自 CAN bus 的有效唤醒信号,应在 CAN bus 空闲期间(rx_i 为高电平)对此寄存器进行编程。 此寄存器只能在复位模式下修改(RSTM=1)。 | RW |
| 8 | DMAEN | RX DMA 模式使能 DMAEN=1 使能 RXDMA 模式;DMAEN=0 禁用 RXDMA 模式 此寄存器只能在复位模式下修改(RSTM=1)。 | RW |
| 7 | FDEN | FD 模式使能 FDEN=1 使能 FD 模式,可接收和发送 FD 帧,以及 Classical 帧 FDEN=0 禁用 FD 模式 此寄存器只能在复位模式下修改(RSTM=1)。 | RW |
| 6 | FDTOL | FD 容错模式 FDTOL=1 且 FDEN=0 时,使能 FD tolerant 模式。仅支持 classical CAN 帧格式,但不会干扰 FD 帧。 FDTOL=0 且 FDEN=0 时,仅支持 classical CAN 帧,并且会干扰 FD 帧。 此寄存器只能在复位模式下修改(RSTM=1)。 | RW |
| 5 | PTOEXC | 协议异常选项使能 PTOEXC=1 时,在 FD 模式下使能协议异常选项。CAN controller 在检测到 res 位为隐性而非预期的显性值时,应进入总线集成状态并等待总线空闲条件。 PTOEXC=0 时,禁用协议异常选项。启用 FD 的节点在检测到 FDF 位后的 res 位为隐性时,应将其视为格式错误。 此寄存器只能在复位模式下修改(RSTM=1)。 | RW |
| 4 | Reserved | 写入无影响,读取为零。 | R |
| 3 | ERAR | 错误自动恢复 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 |
| 2 | STE | 自测试使能 STE=1 使能自测试模式。 STE=1 时,与正常工作模式的唯一区别是所有 ACK 错误都会被忽略。 STE=0 表示正常模式运行此寄存器只能在复位模式下修改(RSTM=1) | RW |
| 1 | LOM | 只听模式 当 LOM=1 时,CAN 控制器将进入监听模式。 当 LOM=1 时,CAN 控制器处于监听模式。在这种模式下,CAN 控制器仅执行接收功能,不会进行任何传输(包括应答信号 ACK)。在这种模式下,其他功能可以像在正常操作模式下一样使用。然而,错误计数器会保持在当前值,并且无法进行消息传输。 这个寄存器只能在复位模式(RSTM=1)下被修改。 | RW |
| 0 | RSTM | 复位模式 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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:7 | Reserved | 写入无影响,读取为零。 | R |
| 6 | CTB | 清除发送缓冲区 将 CTB 置 1 会取消尚未执行的 Transmit Request(TR)命令并释放发送缓冲区,以便进行任意消息修改。该命令仅在发送缓冲区中存有尚未发送且 TBS=0 的消息时有效。当 TBS 置位时,该位由硬件自动清零。由于 CTB 仅取消发送缓冲区中尚未执行的发送,因此如果要中止所有发送,还需要额外的 AT 命令来中止 CAN MAC controller 中挂起的发送。 | W |
| 5 | OFR | 过载帧请求 将 OFR 设置为 1 会请求发送一个过载帧。过载帧将在下一个预期的间隔段(INTERMISSION)的第一个比特时间内发送。发送过载帧后,该位将由硬件自动清零。由于过载帧的发送不考虑总线状态,因此在完成发送时不会生成中断。 | W |
| 4 | SRR | 自接收请求 SRR=1 将导致一条消息被同时发送和接收。执行自接收请求命令时,如果验收过滤器设置为相应标识符,则会在发送消息的同时接收该消息。该命令主要用于 controller 的自测试。如果 STE=1 使能自测试模式,则即使不存在其他节点,发送和接收也可以成功。发送和接收操作完成后,该位由硬件自动清零,并且会同时产生发送和接收中断。仅当 CTB=0 且 TR=0 时,SRR 才有效。 | W |
| 3 | CDO | 清除数据溢出 CDO=1 将清除数据溢出状态位。该命令位用于清除由数据溢出状态位指示的数据溢出条件。此该命令位由硬件自动清零。 | W |
| 2 | RRB | 释放接收缓冲区 在读取接收缓冲区的内容后,CPU 可以通过将 Release Receive Buffer 位设为逻辑 1 来释放此 RX-FIFO 中的存储空间。这可能会使另一条消息立即变为接收缓冲区中可用。如果没有其他可用消息,则 Receive Buffer Status (RBS) 位被复位。RRB 仅在 DMAEN=0 时相关。 | W |
| 1 | AT | 中止发送 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 |
| 0 | TR | 发送请求 设置 TR=1 将启动发送缓冲区中消息的发送过程。在设置 TR=1 时,如果 CAN 总线处于空闲状态,发送缓冲区中的消息(包括 CANTFIR 和 CANTXID)将被送至 CAN MAC 控制器进行发送处理。当消息被送至 CAN MAC 控制器后,发送缓冲区将被释放,以便 CPU 写入下一条消息。同时,TBS 和 TBI 会被设置,以通知用户。TR 仅在 CTB=0 时有效。 | W |
CAN 状态寄存器
CANSTATBASE + 0x08
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:9 | Reserved | 写入无影响,读取为零。 | R |
| 8 | TBF | 发送缓冲区空闲 TBF=1 表示发送缓冲区为空,可以写入新消息。 TBF=0 表示发送缓冲区被锁定,发送缓冲区中的内容要么正在等待发送,要么正在发送过程中。不能写入新消息。 | R |
| 7 | BOS | Bus Off 状态 BOS=1 表示 CAN controller 处于 Bus Off 状态。 BOS=0 表示 CAN controller 正在参与总线活动。 BusOff 状态在错误处理状态图中定义。退出 Bus Off 状态的可能方式包括总线自动恢复,或在复位模式下向 TEC 写入小于 255 的值。 | R |
| 6 | ES | 错误状态 ES=1 表示至少有一个错误计数器已达到或超过 CANEWLR 定义的告警限制。 ES=0 表示未超过告警限制。 在接收或发送期间检测到的错误将影响错误计数器,这符合 CAN 2.0B 协议规范。至少有一个错误计数器达到或超过告警限制设置(CANEWLR) 时,ES 被置位。如果使能,将产生错误告警中断。 硬件复位后 CANEWLR 的默认值为 0x60。 | R |
| 5 | TS | 发送状态 TS=1 表示 CAN controller 正在发送消息。 | R |
| 4 | RS | 接收状态 RS=1 表示 CAN controller 正在接收消息。 如果 TS 和 RS 均为 0,则 CAN controller 处于空闲状态。 | R |
| 3 | TCS | 发送完成状态 TCS=1 表示最近一次请求的消息发送已成功完成。 当发出 TR 或 SRR 命令时,TCS 被清零为 0。消息成功发送后,硬件将 TCS 置为 1。在消息发送期间,TCS 保持为 0;如果消息成功发送,硬件将 TCS 置为 1。请注意,TCS=1 也可能由 AT 命令导致。 | R |
| 2 | TBS | 发送缓冲区状态 TBS=1 表示发送缓冲区为空,可以写入新消息。 TBS=0 表示发送缓冲区被锁定,发送缓冲区中的内容要么正在等待发送,要么正在发送过程中,不能写入新消息。 | R |
| 1 | DOS | 数据溢出状态 DOS=1 表示由于 RX-FIFO 溢出而丢失了一条已接收消息。将产生溢出中断,并置位 DOI 标志。必须通过设置 CDO (Clear Data Overrun) 命令位或进入复位模式来清除 DOS。 | R |
| 0 | RBS | 接收缓冲区状态 RBS=1 表示 RX-FIFO 中有一条或多条有效消息可用。当 RX-FIFO 为空时,RBS 被清除。 | R |
CAN 中断寄存器
CANINTBASE + 0x0C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:28 | Reserved | 写入无影响,读取为零。 | R |
| 27 | OFIE | 过载帧中断使能 | RW |
| 26 | TBIE | 发送缓冲区空中断使能 | RW |
| 25 | DMAIE | RX DMA 完成中断使能 | RW |
| 24 | WKIE | 唤醒中断使能 | RW |
| 23 | BEIE | 总线错误中断使能 | RW |
| 22 | ALIE | 仲裁丢失中断使能 | RW |
| 21 | EPIE | 错误被动中断使能 | RW |
| 20 | BOIE | Bus Off 中断使能 | RW |
| 19 | DOIE | 数据溢出中断使能 | RW |
| 18 | EIE | 错误告警中断使能 | RW |
| 17 | TIE | 发送中断使能 | RW |
| 16 | RIE | 接收中断使能 | RW |
| 15:12 | Reserved | 写入无影响,读取为零。 | R |
| 11 | OFI | 过载帧中断标志 当 CAN controller 在 CAN-bus 上检测到或发出过载帧时,OFI 被置位。读取后 OFI 被清除。必须置位 OFIE 位以使能 OFI 功能。 | R |
| 10 | TBI | 发送缓冲区空中断标志 当发送缓冲区可用于新消息时,TBI 置位。发送缓冲区(包括 CANTFIR 和 CANTXID)为双缓冲。TBS 和 TBI 表示发送缓冲区为空,可接受来自 CPU 的新消息。读取后 TBI 清零。必须将 TBIE 位置位以使能 TBI 功能。 | R |
| 9 | DMAI | RX DMA 完成中断标志 在 RX DMA 模式下,当接收 dma_finsih 信号时,DMAI 置位。读取后 DMAI 清零。必须同时置位 DMAEN 和 DMAIE 才能使能 DMAI 功能。 | R |
| 8 | WKI | 唤醒中断标志 当 CAN 控制器在 SLEEP 模式(SLEEP=1)下检测到 CAN-bus 上的显性位时,WKI 置位。读取后 WKI 清零。必须同时置位 WKIE 和 SLEEP 位才能使能 WKI 功能。该中断可用于通知并将控制器从 CAN-bus 唤醒。 | R |
| 7 | BEI | 总线错误中断标志 当 CAN 控制器检测到 CAN-bus 上存在错误时,BEI 置位。错误类型包括格式错误、位填充错误、位错误(当发送的数据或 CRC 与接收的不匹配时)、CRC 错误以及 ACK 错误。必须将 BEIE 位置位以使能 BEI 功能。 | R |
| 6 | ALI | 仲裁丢失中断 当消息由于仲裁丢失而未能成功发送时,ALI 置位。必须将 ALIE 位置位以使能 ALI 功能。 | R |
| 5 | EPI | 错误被动中断 当 CAN 控制器进入错误被动状态,或 CAN 控制器已处于错误被动状态并进入错误主动状态时,EPI 置位。必须将 EPIE 位置位以使能 EPI 功能。 | R |
| 4 | BOI | 总线关闭状态中断 当 CAN 控制器处于总线关闭状态(BOS=1)时,BOI 被设置。由于 BOI 和 BOS 在总线关闭状态下始终为 1,软件必须在进入 BOI 中断服务例程时禁用 BOIE,否则中断会无限触发。必须设置 BOIE 位才能启用 BOI 功能。 | R |
| 3 | DOI | 数据溢出中断 当接收消息由于 RX-FIFO 溢出而丢失时,DOI 置位。该功能也等效于 DOS 从 0 变为 1 时。必须将 DOIE 位置位以使能 DOI 功能。读取后 DOI 清零。 | R |
| 2 | EI | 错误告警中断 当 REC 或 TEC 大于或等于 CANEWLR 设置值时,EI 置位,或等效地当 ES 从 0 变为 1 时。必须将 EIE 位置位以使能 EI 功能。 | R |
| 1 | TI | 发送中断 每当发送缓冲区变为空时,TI 置位,或等效地,当消息发送完成且 TBS 从 0 变为 1 时,TI 置位。必须将 TIE 位置位以使能 TI 功能。 | R |
| 0 | RI | 接收中断 当 CAN 控制器将一条新消息放入 RX-FIFO 时,RI 置位。读取后 RI 清零。必须将 RIE 位置位以使能 RI 功能。 | R |
CAN 总线时序寄存器
CANBTRBASE + 0x10
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15 | SAW | SAW=1 时将使用三次采样方法。三次采样方法在 TSEG1 和 TSEG2 之间使用三个采样时刻,因此可接受两个相同的采样值。 | RW |
| 14:12 | TSEG2[2-0] | TSEG2[2-0] 定义位时间段 2。TSEG2=TSEG2[2-0] +1。 | RW |
| 11:8 | TSEG1[3-0] | TSEG1[3-0] 定义位时间段 1。TSEG1=TSEG1[3-0] +1。 | RW |
| 7:6 | SJW[1-0] | 同步跳转长度 该字段定义重同步时以 TQCLK 周期单位表示的最大调整量。接收器使用下降沿来确定网络的物理延迟。同步通过以下方式实现:在 SYNC SEG 之后的位时间中插入延迟补偿段,从而也会延迟本地接收器的采样点。 SJW[1-0]+1 用于设置以 TQCLK 周期计的最大允许延迟段。 | RW |
| 5:0 | CANCS[5-0] | CANCS[5-0] 定义 CAN 控制器时钟 CAN 控制器时钟 TQCLK =CANCLK/(CANCS[5-0]+1)。这定义了来自 CAN 系统时钟的 CAN 时间量子 (TQCLK)。 | RW |
CAN FD 时序寄存器
CANFDTRBASE + 0x14
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | SW_SSP | 软件发送器延迟补偿 SW_SSP=0 时,该机制会自动计算收发器的环路延迟时间,并补偿比较 tx_o 与 rx_i 所需的延迟时间。读取 SSP_SEL[2-0] 得到的是发送器延迟补偿值,该值由硬件机制计算。SW_SSP=1 时,发送器延迟补偿 SSP_SEL[2-0] 由软件编程设定。 | RW |
| 30:28 | SSP_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:15 | Reserved | 写入无影响,读取为零。 | R |
| 14:12 | FDTSEG2[2-0] | FDTSEG2[2-0] 定义位时间分量 2。TSEG2 =FDTSEG2[2-0]+1。 | RW |
| 11:8 | FDTSEG1[3-0] | FDTSEG1[3-0] 定义位时间分量 1。TSEG1 =FDTSEG1[3-0]+1。 | RW |
| 7:6 | FDSJW[1-0] | 数据阶段同步跳转长度 这定义了重同步时以 FDTQCLK 周期为单位的最大调整量。接收器使用下降沿来确定网络的物理延迟。同步通过以下方式实现:在 SYNC SEG 之后的位时间中插入延迟补偿段,从而也会延迟本地接收器的采样点。 FDSJW[1-0]+1 用于设置以 FDTQCLK 周期计的最大允许延迟段。 | RW |
| 5:0 | CANFDCS[5-0] | CANFDCS[5-0] 定义 FD 数据阶段的 CAN Controller Clock。CAN 控制器时钟 FDTQCLK = CANCLK/(CANFDCS[5-0]+1)。这定义了来自 CAN 系统时钟的 CAN FD 时间量子 (FDTQCLK)。 | RW |
CAN 过滤器寄存器
CANFLTBASE + 0x18
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:21 | Reserved | 写入无影响,读取为零。 | R |
| 20 | ALC4 | 这些位为只读,用于报告仲裁丢失的位位置在发送消息时。下表定义了相应的对应关系。 | R |
| 19 | ALC3 | R | |
| 18 | ALC2 | R | |
| 17 | ALC1 | R | |
| 16 | ALC0 | R | |
| 15:12 | Reserved | 写入无影响,读取为零。 | R |
| 11 | FMS[3] | 验收过滤器 3 匹配状态 FSM[3]=1 表示验收过滤器 3 匹配 FSM[3]=0 表示验收过滤器 3 不匹配 | R |
| 10 | FMS[2] | 验收过滤器 2 匹配状态 FSM[2]=1 表示验收过滤器 2 匹配 FSM[2]=0 表示验收过滤器 2 不匹配 | R |
| 9 | FMS[2] | 验收过滤器 1 匹配状态 FSM[1]=1 表示验收过滤器 1 匹配 FSM[1]=0 表示验收过滤器 1 不匹配 | R |
| 8 | FMS[0] | 验收过滤器 0 匹配状态 FSM[0]=1 表示验收过滤器 0 匹配 FSM[0]=0 表示验收过滤器 0 不匹配 | R |
| 7:4 | Reserved | 写入无影响,读取为零。 | R |
| 3 | FTER3 | 验收过滤器 3 使能 FTER3=1 表示使能验收过滤器 3 | RW |
| 2 | FTER2 | 验收过滤器 2 使能 FTER2=1 表示使能验收过滤器 2 | RW |
| 1 | FTER1 | 验收过滤器 1 使能 FTER1=1 表示使能验收过滤器 1 | RW |
| 0 | FTER0 | 验收过滤器 0 使能 FTER0=1 表示使能验收过滤器 0 | RW |
表 1 发送过程中仲裁丢失的位位置
| 位 | 十进制值 | 说明 | ||||
|---|---|---|---|---|---|---|
| ALC4 | ALC3 | ALC2 | ALC1 | ALC0 | ||
| 0 | 0 | 0 | 0 | 0 | 0 | 在位 ID28 处仲裁丢失 |
| 0 | 0 | 0 | 0 | 1 | 1 | 在位 ID27 处仲裁丢失 |
| 0 | 0 | 0 | 1 | 0 | 2 | 在位 ID26 处仲裁丢失 |
| 0 | 0 | 0 | 1 | 1 | 3 | 在位 ID25 处仲裁丢失 |
| 0 | 0 | 1 | 0 | 0 | 4 | 在位 ID24 处仲裁丢失 |
| 0 | 0 | 1 | 0 | 1 | 5 | 在位 ID23 处仲裁丢失 |
| 0 | 0 | 1 | 1 | 0 | 6 | 在位 ID22 处丢失仲裁 |
| 0 | 0 | 1 | 1 | 1 | 7 | 在位 ID21 处丢失仲裁 |
CAN 错误寄存器
CANERRBASE + 0x1C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:24 | CANTEC[7-0] | 这些位表示发送错误计数。 这些位在复位模式下可修改(CANMODE.RSTM =1),在正常工作模式下为只读。CANTEC 包含当前错误计数,并在硬件复位后初始化为 0。如果发生 bus-off 事件且未启用自动恢复,则发送错误计数器会初始化为 128。软件只能通过使用复位模式来恢复到正常的 error-active 状态。 | RW |
| 23:16 | CANREC[7-0] | 这些位表示接收错误计数。 该寄存器在复位模式下可修改(CANMODE.RSTM=1),在正常工作模式下为只读。CANREC 包含当前错误计数。当控制器进入 bus-off 状态时,CANREC 会重新初始化为 0,并且在 bus-off 期间,对 CANREC 的写入无效。 | RW |
| 15:8 | CANEWLR[7-0] | 这些位表示错误警告限制值。 这些位在复位模式下可修改(CANMODE.RSTM=1),在正常工作模式下为只读。这些位用于设置错误计数器的警告限制值。当 CANREC 或 CANTEC 的值超过 CANEWLR 值时,会生成错误警告中断,并在中断标志寄存器中置位 EI 标志。CANEWLF 在硬件复位后默认为 0x60。 | RW |
| 7 | ERRC[1] | 错误代码。 这两位反映如下表所定义的错误类型。 | R |
| 6 | ERRC[0] | R | |
| 5 | DIR | 传输错误方向 DIR=1 表示错误发生在接收期间 DIR=0 表示错误发生在发送期间 | R |
| 4 | SEG[4] | 错误位置。 下表定义了该功能。 | R |
| 3 | SEG[3] | R | |
| 2 | SEG[2] | R | |
| 1 | SEG[1] | R | |
| 0 | SEG[0] | R |
表 2 错误位置
| SEG[4-0] | 功能 | ||||
|---|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 1 | 帧起始 |
| 0 | 0 | 0 | 1 | 0 | ID28 到 ID21 |
| 0 | 0 | 1 | 1 | 0 | ID20 到 ID18 |
| 0 | 0 | 1 | 0 | 0 | 位 SRTR |
| 0 | 0 | 1 | 0 | 1 | 位 IDE |
| 0 | 0 | 1 | 1 | 1 | ID17 到 ID13 |
| 0 | 1 | 1 | 1 | 1 | ID12 到 ID5 |
| 0 | 1 | 1 | 1 | 0 | ID4 到 ID0 |
| 0 | 1 | 1 | 0 | 0 | 位 RTR |
| 0 | 1 | 1 | 0 | 1 | 保留位 1 |
| 0 | 1 | 0 | 0 | 1 | 保留位 0 |
| 0 | 1 | 0 | 1 | 1 | 数据长度码 |
| 0 | 1 | 0 | 1 | 0 | 数据字段 |
| 0 | 1 | 0 | 0 | 0 | CRC 序列 |
| 1 | 1 | 0 | 0 | 0 | CRC 分隔符 |
| 1 | 1 | 0 | 0 | 1 | 应答槽 |
| 1 | 1 | 0 | 1 | 1 | 应答分隔符 |
| 1 | 1 | 0 | 1 | 0 | 帧结束 |
| 1 | 0 | 0 | 1 | 0 | 帧间隔 |
| 1 | 0 | 0 | 0 | 1 | 主动错误标志 |
| 1 | 0 | 1 | 1 | 0 | 被动错误标志 |
CAN 发送帧信息寄存器
CANTFIRBASE + 0x40
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:8 | Reserved | 写入无影响,读取为零。 | R |
| 7 | FF | 帧格式 FF=1 表示扩展格式帧,FF=0 表示标准格式帧 | RW |
| 6 | RTR | 远程帧发送请求 RTR=1 表示远程帧 RTR=0 表示常规数据帧 | RW |
| 5 | FDF | FD 格式指示位 FDF=1 表示 FD 帧格式 FDF=0 表示经典帧格式 | RW |
| 4 | BRS | 位速率切换 BRS=1 时切换到预配置的数据阶段数据位速率,BRS=0 时保持仲裁阶段的标称位速率 | RW |
| 3:0 | DLC[3-0] | 数据字节数 =DLC[3-0] 消息数据字段中的字节数由数据长度码编码。在远程帧传输开始时,由于 RTR 位为逻辑 1(remote),因此不考虑数据长度码。这会使发送/接收的数据字节数强制为 0。不过,仍必须正确指定数据长度码,以避免在两个 CAN 控制器同时以相同标识符开始远程帧传输时发生总线错误。 DLC 对应的数据字节数由下表定义。 | RW |
表 3 DLC 对应的数据字节数编码
| Frames | 数据长度码 | 数据字节数 | |||
|---|---|---|---|---|---|
| DLC3 | DLC2 | DLC1 | DLC0 | ||
| 经典帧和 FD帧 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 1 | |
| 0 | 0 | 1 | 0 | 2 | |
| 0 | 0 | 1 | 1 | 3 | |
| 0 | 1 | 0 | 0 | 4 | |
| 0 | 1 | 0 | 1 | 5 | |
| 0 | 1 | 1 | 0 | 6 | |
| 0 | 1 | 1 | 1 | 7 | |
| 1 | 0 | 0 | 0 | 8 | |
| 经典帧 | 1 | 0 或 1 | 0 或 1 | 0 或 1 | 8 |
| FD帧 | 1 | 0 | 0 | 1 | 12 |
| 1 | 0 | 1 | 0 | 16 | |
| 1 | 0 | 1 | 1 | 20 | |
| 1 | 1 | 0 | 0 | 24 | |
| 1 | 1 | 0 | 1 | 32 | |
| 1 | 1 | 1 | 0 | 48 | |
| 1 | 1 | 1 | 1 | 64 | |
CAN 发送标识符寄存器
CANTXIDBASE + 0x44
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:29 | Reserved | 写入无影响,读取为零。 | R |
| 28:0 | CANTXID | 对于 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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | CANTXDATA | 待发送的数据。 | 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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:29 | Reserved | 写入无影响,读取为零。 | R |
| 28:0 | CANAFID | 该寄存器只能在复位模式下修改,在正常工作模式下表现为只读。 | RW |
CAN 验收过滤器掩码 0/1/2/3
CANAFMK0/1/2/3BASE + 0x24 / 0x2C / 0x34 / 0x3C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:29 | Reserved | 写入无影响,读取为零。 | R |
| 28:0 | CANAFMK | 该寄存器只能在复位模式下修改,在正常工作模式下表现为只读。 | RW |
CAN 接收帧信息寄存器
CANRFIRBASE + 0x90
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:20 | Reserved | 写入无影响,读取为零。 | R |
| 19 | RXFMS[3] | 验收过滤器 3 匹配状态 RXFSM[3]=1 表示验收过滤器 3 匹配 RXFSM[3]=0 表示验收过滤器 3 不匹配 | R |
| 18 | RXFMS[2] | 验收过滤器 2 匹配状态 RXFSM[2]=1 表示验收过滤器 2 匹配 RXFSM[2]=0 表示验收过滤器 2 不匹配 | R |
| 17 | RXFMS[1] | 验收过滤器 1 匹配状态 RXFSM[1]=1 表示验收过滤器 1 匹配 RXFSM[1]=0 表示验收过滤器 1 不匹配 | R |
| 16 | RXFMS[0] | 验收过滤器 0 匹配状态 RXFSM[0]=1 表示验收过滤器 0 匹配 RXFSM[0]=0 表示验收过滤器 0 不匹配 | R |
| 15:8 | Reserved | 写入无影响,读取为零。 | R |
| 8 | ESI | 错误状态指示器 ESI=1 表示发送器是错误被动节点。 ESI=0 表示发送器是错误主动节点。 | R |
| 7 | FF | 帧格式 FF=1 表示扩展格式帧,FF=0 表示标准格式帧 | R |
| 6 | RTR | 远程帧发送请求 RTR=1 表示远程帧 RTR=0 表示常规数据帧 | R |
| 5 | FDF | FD 格式指示 FDF=1 表示 FD 帧格式 FDF=0 表示经典帧格式 | R |
| 4 | BRS | 位速率切换 BRS=1 应切换到预配置的数据阶段数据位速率,BRS=0 保持仲裁阶段的标称位速率 | R |
| 3:0 | DLC[3-0] | 数据字节数 =DLC[3-0] 消息数据字段中的字节数由数据长度码编码。在远程帧传输开始时,由于 RTR 位为逻辑 1(远程),因此不考虑数据长度码。这会强制发送/接收的数据字节数为 0。尽管如此,仍必须正确指定数据长度码,以避免在两个 CAN 控制器同时以相同标识符开始远程帧传输时发生总线错误。 | R |
CAN 接收标识符寄存器
CANRXIDBASE + 0x94
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | CANRXID | 对于 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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | CANRXDATA | 接收到的数据。 | R |
CAN 自环寄存器
CANSLFBASE + 0xFC
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | IPRESET | CAN 2.0B IP 复位。 仅当在复位模式(RSTM=1)下解锁 Self-Loop Security Key 时,才能对该位进行编程。 设置 IPRESET=1 将产生内部复位信号,以初始化 CAN 控制器中的所有寄存器和所有机制。IPRESET 会自动清零。 | RW |
| 30:26 | Reserved | 写入无影响,读取为零。 | R |
| 25 | CANTXOFF | CAN TX 关闭。 仅当在复位模式(RSTM=1)下解锁 Self-Loop Security Key 时,才能对该位进行编程。 CANTXOFF= 1 强制 tx_o 始终向 CAN transceiver 输出逻辑高电平。 CANTXOFF= 0 时,tx_o 对 CAN transceiver 正常工作。 | RW |
| 24 | CANSLEN | CAN 自环测试模式。 仅当在复位模式(RSTM=1)下解锁 Self-Loop Security Key 时,才能对该位进行编程, CANSLEN=1 使能 CAN 自环测试模式。 CANSLEN=0 禁用 CAN 自环测试模式。 | RW |
| 23:20 | Reserved | 写入无影响,读取为零。 | R |
| 19:16 | CANSLKEY[3-0] | CANSLKEY[3-0] 用于保护 CANSLEN,并且只能在复位模式(RSTM=1)下修改。向 CANSLKEY[3-0] 写入 0x6 可解锁对 CANSLEN 的访问。 | W |
| 15:0 | Reserved | 写入无影响,读取为零。 | R |