本文介绍瑞萨RH850/F1L用户手册(user manual)的CAN接口部分的中文翻译。

博主会一直更新该文章,直到CAN部分翻译完成.

版权声明
本博文系欧科曼汽车电子所有,转载请注明出处。 欧科曼汽车电子致力于瑞萨MCU及周边相关产品开发设计。

email:1256153255@qq.com

website for get 瑞萨RH850F1x开发板和瑞萨E1仿真器

第19章 CAN Interface(RS-CAN)

本章节包含CAN Interface(RS-CAN)的一般描述。
本节的第一部分描述了所有RH850/F1L特性,如单元数、寄存器基地址等。本节的其余部分描述了RSCAN的功能和寄存器。

19.1 RH850/F1L RS-CAN的特点

19.1.1 CAN单元数量和CAN通道数量

此微控制器具有以下数量的RS-CAN单元。

各个产品具有下面列出的CAN接口通道

Note 1:仅在具有1.5MB和2MB Code Flash的设备中受支持。
Note 2:仅在F1L中支持网关。
Table 19.3 索引

Note:本节中寄存器的功能和说明适用于6通道RS-CAN(m=0至5)。在引用带有索引的信息时,请将索引值视为与您的产品对应的值。另外,注意,当将值写入寄存器时,将导致写入您正在使用的产品索引范围之外的位,请在重置到这些位后写入该值。

下表列出了各个产品的索引值。

19.1.2 寄存器基地址

下表列出了RSCAN0的基地址。
RSCAN0寄存器地址偏移量的形式给出(RSCAN0寄存器地址 = RSCAN0的基地址 + 偏移量)。

19.1.3 时钟源

下表显示了RSCAN0时钟源。

RSCAN0的工作频率取决于传输速率和使用的通道数。Table 19.7显示了频率范围。
Table 19.7 工作频率范围取决于传输速率和RH850/F1L中使用的通道数

Note 1:RSCAN0GCFG中的DCS位允许选择clk_ xincan或clkc。将时钟频率配置为小于或等于pclk/2(最高40 MHz)。
Note 2:当pclk<25 MHz时,选择clk_ xincan
Note 3:clk_ xincan的最大频率是24MHz

CAUTION
当RS-CAN模块在停止模式下使用时,将MainOSC设置为RS-CAN模块的时钟源。有关如何设置时钟源的详细信息,请参阅第10.4.3.10节,RS-CAN时钟域C_ISO_CAN和C_ISO_CANOSC。

19.1.4 中断请求

下表列出了RSCAN0中断请求。

NOTE
关于待机模式的唤醒因素,见第11.1.2.1节,Wake-Up Factors for Stand-By Modes(待机模式的唤醒因素)。

19.1.5 复位源

下表列出了RSCAN0重置源。这些复位源会初始化RSCAN0。

19.1.6 外部输入/输出信号

下表列出了RSCAN0的外部输入/输出信号。
Table 19.10 外部输入/输出信号

CAUTION
当端口P0_0用作CAN0TX时,端口P0_0(RESETOUT信号)在复位期间和从复位状态释放后输出低电平。
详细信息,请查看2.11.1.1 节:P0_0: RESETOUT

19.2 概述

19.2.1 功能概述

RH850/F1L包含一个CAN接口单元(RS-CAN),该单元有6个符合ISO11898-1规范的CAN控制器通道(CAN0~CAN5)。
Table 19.11 RS-CAN模块规格




19.2.2 框架图


Figure 19.1 RS-CAN模块框图
Note :m = 0 to 5
BRP[9:0]:RSCAN0CmCFG寄存器中的位
DCS :RSCAN0GCFG寄存器中的位
fCANTQm :CANmTq时钟
fCAN :CAN时钟

19.3 寄存器

19.3.1 寄存器列表

下表列出了RS-CAN寄存器。
有关<RSCAN0\u base>的详细信息,请参阅第19.1.2节,寄存器基地址。
Table 19.12 寄存器列表






19.3.2 RSCAN0CmCFG — Channel Configuration Register (m = 0 to 5)

      访问:RSCAN0CmCFG寄存器可以32位进行读写。RSCAN0CmCFGL、RSCAN0CmCFGH寄存器可以16位进行读写。RSCAN0CmCFGLL、RSCAN0CmCFGLH、RSCAN0CmCFGHL、RSCAN0CMCFGH寄存器可以8位进行读写地址:RSCAN0CmCFG: <RSCAN0_base> + 0000H + (10H × m)RSCAN0CmCFGL: <RSCAN0_base> + 0000H + (10H × m),RSCAN0CmCFGH: <RSCAN0_base> + 0002H + (10H × m)RSCAN0CmCFGLL: <RSCAN0_base> + 0000H + (10H × m),RSCAN0CmCFGLH: <RSCAN0_base> + 0001H + (10H × m),RSCAN0CmCFGHL: <RSCAN0_base> + 0002H + (10H × m),RSCAN0CmCFGHH: <RSCAN0_base> + 0003H + (10H × m) 。

复位值:0000 0000H

Table 19.17 RSCAN0CmCFG Register Contents (1/2)

在通道复位模式或通道停止模式下修改RSCAN0CmCFG寄存器。在切换到通道通信模式或通道停止模式之前,将该寄存器设置为通道复位模式。有关位定时的参数和设置说明,请参阅第19.10.1节“初始化设置”。

SJW[1:0]位
这些位用于指定重新同步跳转宽度的Tq值。允许值为1 Tq到4 Tq(含)。
设置一个小于或等于TSEG2位的值。

TSEG2[2:0]位
这些位用于指定相位段2(PHASE_SEG2)长度的Tq值。允许值为2 Tq到8 Tq(含)。
设置一个小于TSEG1位的值。

TSEG1[3:0]位
这些位用于指定传播段(PROP_SEG)和相位段1(PHASE_SEG1)的总长度的Tq值。
允许值为4 Tq到16 Tq(含)。

BRP[9:0]位
通过将CAN时钟(fCAN)除以波特率预分频器(BRP[9:0])+1)来计算CANmTq时钟(fCANTQm)。CANmTq时钟的一个时钟周期是1个时间量(Tq)。

19.3.3 RSCAN0CmCTR-通道控制寄存器(m = 0 to 5)

访问: RSCAN0CmCTR寄存器可以32位进行读写。RSCAN0CmCTRL、RSCAN0CmCTRH寄存器可按16位进行读写。RSCAN0CmCTRLL、RSCAN0CmCTRLH、RSCAN0CMCTRCHL、RSCAN0CmCTRHH寄存器可以8位进行读写。
地址:RSCAN0CmCTR: <RSCAN0_base> + 0004H + (10H × m)RSCAN0CmCTRL: <RSCAN0_base> + 0004H + (10H × m),RSCAN0CmCTRH: <RSCAN0_base> + 0006H + (10H × m)RSCAN0CmCTRH: <RSCAN0_base> + 0006H + (10H × m)RSCAN0CmCTRLL: <RSCAN0_base> + 0004H + (10H × m),RSCAN0CmCTRLH: <RSCAN0_base> + 0005H + (10H × m),RSCAN0CmCTRHL: <RSCAN0_base> + 0006H + (10H × m),RSCAN0CmCTRHH: <RSCAN0_base> + 0007H + (10H × m)

复位值:0000 0005H

Table 19.18 RSCAN0CmCTR Register Contents

CTMS[1:0] bits
这些位用于选择通信测试模式。仅在通道暂停模式下修改这些位。
在通道复位模式下,这些位设置为0。

CTME Bit
将此位设置为1将启用通信测试模式。在通道暂停模式下修改这些位。在通道复位模式下,该位设置为0。

ERRD Bit
该位用于控制RSCAN0CmERFL寄存器中位14~8的显示模式。
当此位清除为0时,只有第一个错误事件的标志设置为1。如果在第一个错误事件中发生两个或多个错误,则检测到的错误的所有标志都设置为1。
当该位设置为1时,无论错误发生顺序如何,所有已发生错误的标志都设置为1。
仅在通道复位模式或通道停止模式下修改此位。

BOM[1:0] Bits
这些位用于选择RS-CAN模块的bus-off恢复模式。
当BOM[1:0]位设置为00B时,从bus-off状态恢复到error active 状态符合CAN规范。也就是说,在连续检测到11个隐性位128次后,RS-CAN模块重新进入CAN通信(error active状态)。从bus-off状态恢复时生成bus-off恢复中断请求。即使在128次检测到隐性位之前CHMDC[1:0]位被置为10B(信道暂停模式),RS-CAN模块也不会转换到通道暂停模式,直到128次检测到隐性位RS-CAN模块才会转换到通道暂停模式。
当BOM[1:0]位置为01B且RS-CAN模块达到bus-off状态时,RSCAN0CmCTR寄存器(m=0~5)中的CHMDC[1:0]位置为10B,RS-CAN模块转换到通道停止模式。bus-off恢复中断请求不生成,且RSCAN0CmSTS寄存器中的TEC[7:0]和REC[7:0]位被清除为00H。
当RS-CAN模块达到bus-off状态且BOM[1:0]位设置为10B时,从bus-off状态(连续检测到11个隐性位128次)恢复后CHMDC[1:0]位置为10B且RS-CAN模块转换到通道停止模式。从bus-off状态恢复时生成bus-off恢复中断请求,同时TEC[7:0]和REC[7:0]位置为00H。
当当BOM[1:0]位置为11B且CHMDC[1:0]位置为10B但RS-CAN模块处于bus-off状态时,RS-CAN模块转换为通道停止模式。从总线断开状态恢复时,不产生总线断开恢复中断请求,并且TEC[7:0]和REC[7:0]位置为00H。但是,如果在CHMDC[1:0]位置为10B之前,连续检测到11个隐性位128次,并且RS-CAN模块已从总线断开状态恢复到错误激活状态,则会产生总线断开恢复中断请求。
如果程序在RS-CAN模块转换到信道暂停模式的同时写入CHMDC[1:0]位(at bus-off entry when the BOM[1:0] bits are 01B or at bus-off end when the BOM[1:0] bits are 10B),则优先写入。仅在通道复位模式下修改BOM[1:0]位。

TAIE Bit
当发送缓冲区的发送中止完成且TAIE位设置为1时,生成中断请求。仅在通道复位模式下修改此位。

ALIE Bit
当RSCAN0CmERFL寄存器中的ALF位置1且ALIE位置为1时,产生错误中断请求。仅在通道复位模式下修改此位。

BLIE Bit
当RSCAN0CmERFL寄存器中的BLF位置1且BLIE位置1时,将生成错误中断请求。仅在通道复位模式下修改此位。

OLIE Bit
当RSCAN0CmERFL寄存器中的OVLF位置1且OLIE位置1时,将生成错误中断请求。仅在通道复位模式下修改此位。

BORIE Bit
当RSCAN0CmERFL寄存器中的BORF位置为1且BORIE位置为1时,将生成错误中断请求。仅在通道复位模式下修改此位。

BOEIE Bit
当RSCAN0CmERFL寄存器中的BOEF位置为1且BOEIE位置为1时,将生成错误中断请求。仅在通道复位模式下修改此位。

EPIE Bit
当RSCAN0CmERFL寄存器中的EPF位置为1且EPIE位置为1时,将生成错误中断请求。仅在通道复位模式下修改此位。

EWIE Bit
当RSCAN0CmERFL寄存器中的EWF位置为1且EWIE位置为1时,将生成错误中断请求。仅在通道复位模式下修改此位。

BEIE Bit
当RSCAN0CmERFL寄存器中的BEF位置为1且BEIE位置为1时,将生成错误中断请求。仅在通道复位模式下修改此位。

RTBO Bit
在总线断开状态下将该位置1将强制将状态从总线断开状态返回到错误激活状态。此位自动清除为0。该位置1,将会使RSCAN0CmSTS寄存器中的TEC[7:0]和REC[7:0]位清除为00H,并将RSCAN0CmSTS寄存器中的BOSTS标志清除为0(非总线关闭状态)。其他寄存器保持不变。在这种情况下,从总线关闭状态恢复时,不会生成总线关闭恢复中断请求。仅当RSCAN0CmCTR寄存器中的BOM[1:0]位为00B(符合ISO11898-1)时才使用此位。RTBO位置1到RS-CAN模块转换到错误激活状态,最多会延迟1个CAN位时间。在信道通信模式下,将该位置为1。

CSLPR Bit
将此位置为1使通道进入通道停止模式。
将此位置为0使通道退出通道停止模式。
在通道通信模式或通道暂停模式下不可修改该位。

CHMDC[1:0] Bits
这些位用于选择通道模式(通道通信模式、通道复位模式或通道暂停模式)。详细请请参阅第19.5.2节,信道模式。信道复位模式下将CSLPR位置为1可允许转换到通道停止模式。不要将CHMDC[1:0]位置为11B。当CAN模块根据BOM[1:0]位的设置自动转换到通道停止模式时,CHMDC[1:0]位自动变为10B。

19.3.4 RSCAN0CmSTS — Channel Status Register (m = 0 to 5)

访问:RSCAN0CmSTS寄存器是只读寄存器,可以32位进行读取。RSCAN0CmSTSL、RSCAN0CmSTSH寄存器是可按16位读取的只读寄存器。RSCAN0CmSTSLL、RSCAN0CmSTSHL、RSCAN0CmSTSHH寄存器是可按8位读取的只读寄存器。
地址:RSCAN0CmSTS: <RSCAN0_base> + 0008H + (10H × m)RSCAN0CmSTSL: <RSCAN0_base> + 0008H + (10H × m),RSCAN0CmSTSH: <RSCAN0_base> + 000AH + (10H × m)RSCAN0CmSTSLL: <RSCAN0_base> + 0008H + (10H × m),RSCAN0CmSTSHL: <RSCAN0_base> + 000AH + (10H × m),RSCAN0CmSTSHH: <RSCAN0_base> + 000BH + (10H × m)

复位值:0000 0005H

Table 19.19 RSCAN0CmSTS Register Contents

TEC[7:0] Bits
这些位包含传输错误计数器值。有关传输错误计数器递增/递减条件,请参阅CAN规范(ISO11898-1)。
在通道复位模式下,这些位清0。

REC[7:0] Bits
这些位包含接收错误计数器值。有关接收错误计数器递增/递减条件,请参阅CAN规范(ISO11898-1)。
在通道复位模式下,这些位被清除为0。

COMSTS Flag
该位表示通信准备就绪。
当CAN模块从通道复位模式或通道停止模式转换到通道通信模式后,检测到11个连续的隐性位时,此标志位置为1。在通道复位模式或通道停止模式下,此标志位清0。

RECSTS Flag
当接收开始时,该标志位设置为1;当总线空闲或传输开始时,该标志位清0。

TRMSTS Flag
当传输启动时,此标志位置为1,当总线变为空闲或接收已启动时,该标志位清0。此标志位在总线关闭状态下保持1。

BOSTS Flag
当进入总线关闭状态(TEC[7:0]>255)时,此标志设置为1。当CAN模块退出总线关闭状态时,清除为0。

EPSTS Flag
当RS-CAN模块进入错误被动状态((128)时,此标志位设置为1((128 ≤ TEC[7:0] ≤
255) or (128 ≤ REC[7:0])) ,当RS-CAN模块退出错误被动状态或进入通道复位模式时,清除为0。

CSLPSTS Flag
当CAN模块转换到通道停止模式时,此标志位置为1;当CAN模块从通道停止模式退出时,此标志位清0。

CHLTSTS Flag
当CAN模块转换到信道暂停模式时,此标志位置为1;当CAN模块从信道暂停模式返回时,此标志位清0。

CRSTSTS Flag
当CAN模块转换到通道复位模式时,此标志位置为1;当CAN模块转换到通道通信模式或通道停止模式时,此标志清0。当CAN模块从通道复位模式转换到通道停止模式时,此标志位保持为1。

19.3.5 RSCAN0CmERFL — Channel Error Flag Register (m = 0 to 5)

访问:RSCAN0CmERFL寄存器可以32位进行读写。RSCAN0CmERFLL寄存器可按16位进行读写。RSCAN0CmERFLH是16位只读寄存器。RSCAN0CmERFLLL, RSCAN0CmERFLLH寄存器可以8位进行读写。RSCAN0CmERFLHL, RSCAN0CmERFLHH是8位只读寄存器。
地址:RSCAN0CmERFL: <RSCAN0_base> + 000CH + (10H × m)RSCAN0CmERFLL: <RSCAN0_base> + 000CH + (10H × m),RSCAN0CmERFLH: <RSCAN0_base> + 000EH + (10H × m)RSCAN0CmERFLLL: <RSCAN0_base> + 000CH + (10H × m),RSCAN0CmERFLLH: <RSCAN0_base> + 000DH + (10H × m),RSCAN0CmERFLHL: <RSCAN0_base> + 000EH + (10H × m),RSCAN0CmERFLHH: <RSCAN0_base> + 000FH + (10H × m)

复位值:0000 0000H

Note 1:写入该标志位的唯一有效值是0,这将清除该位。否则写入该标志位会导致保留其状态。

Table 19.20 RSCAN0CmERFL Register Contents (1/2)

有关错误发生条件的说明,请参阅CAN规范(ISO11898-1)。要清除这个寄存器的每个标志位,程序必须在相应的位上写0。程序无法将这些标志位设置为1。如果在程序将0写入标志位的同时将这些标志位中的任何一个设置为0,则标志位仍设置为1。通道复位模式转换将所有这些标志清除为0。如果RSCAN0CmCTR寄存器中的ERRD位设置为0(即,仅显示第一个错误事件的标志),并且检测到与RSCAN0CmERFL的位14至8相关的错误,当错误发生且bit14~bit8均为0时,则错误事件设置标志位。

CRCREG[14:0] Flag
当RSCAN0CmCTR寄存器中的CTME位置为1(启用通信测试模式)时,可以读取发送或接收消息计算的CRC值。当CTME位置为0(通信测试模式被禁用)时,这些位始终为0。

ADERR Flag
在传输期间ACK分隔符中检测到格式错误时,此标志位置为1。

B0ERR Flag
当通过传输显性位检测到隐性位时,此标志设置为1。

B1ERR Flag
当通过传输隐性位检测到显性位时,此标志设置为1。

CERR Flag
当检测到CRC错误时,此标志位置为1。

AERR Flag
当检测到ACK错误时,此标志位置为1。

FERR Flag
当检测到格式错误时,此标志位置为1。

SERR Flag
当检测到填充位错误时,此标志位置为1。

ALF Flag
当检测到仲裁丢失时,此标志位置为1。

BLF Flag
当在信道通信模式下的CAN总线上检测到32个连续的显性位时,此标志位置为1。之后,当满足以下任一条件时,重新开始dominant lock的检测。
◆ BLF位从1清除到0后检测到隐性位。
◆ BLF位从1清除到0后,CAN模块转换到通道复位模式并返回到通道通信模式。

OVLF Flag
当在执行接收或发送时检测到过载帧发送时,该标志位设置为1。

BORF Flag
当连续检测到11个隐性位128次且CAN模块从bus-off状态返回时,此标志位置为1。但是,如果在128次检测到11个连续的隐性位之前,CAN模块以下列任一方式从bus-off状态返回,则此标志位不置为1。
◆ RSCAN0CmCTR寄存器中的CHMDC[1:0]位设置为01B(通道复位模式)。
◆ RSCAN0CmCTR寄存器中的RTBO位置为1(从bus-off状态强制恢复)。
◆ RSCAN0CmCTR寄存器中的BOM[1:0]位置为01B(在bus-off entry状态下转换为通道停止模式)。
◆ 在连续检测到11个隐性位128次前,RSCAN0CmCTR寄存器中的CHMDC[1:0]位被置为10B(通道暂停模式)同时BOM[1:0]位被设置为11B(在bus-off期间由程序请求转换到通道暂停模式)。

BOEF Flag
当达到总线关闭状态(TEC[7:0]值>255)时,此标志位置为1。当RSCAN0CmCTR寄存器(m=0到5)中的BOM[1:0]位置为01B(在bus-off entry时转换到通道停止模式)时,如果达到总线断开状态,此标志位也置为1。

EPF Flag
当达到错误被动状态(REC[7:0] or TEC[7:0] value > 127)时,此标志位变为1。
仅当REC[7:0]或TEC[7:0]的值首次超过127时,此标志才变为1。因此,如果程序在REC[7:0]或TEC[7:0]的值大于127时对该标志位写0,则该位不会置为1,直到REC[7:0]和TEC[7:0]的值都小于或等于127,然后REC[7:0]或TEC[7:0]的值再次超过127。

BEF Flag
当RSCAN0CmERFL寄存器中的ADERR、B0ERR、B1ERR、CERR、AERR、FERR和SERR之一置为1时,此标志位置为1。

NOTE
若要将此寄存器的标志清除为0,请使用存储指令将“0”写入给定标志位,将“1”写入其他标志位。

19.3.6 RSCAN0GCFG — Global Configuration Register

访问:RSCAN0GCFG寄存器可以32位进行读写。RSCAN0GCFGL, RSCAN0GCFGH寄存器可以16位进行读写。RSCAN0GCFGLL, RSCAN0GCFGLH, RSCAN0GCFGHL, RSCAN0GCFGHH寄存器可以8位进行读写。
地址:RSCAN0GCFG: <RSCAN0_base> + 0084HRSCAN0GCFGL: <RSCAN0_base> + 0084H, RSCAN0GCFGH: <RSCAN0_base> + 0086HRSCAN0GCFGLL: <RSCAN0_base> + 0084H, RSCAN0GCFGLH: <RSCAN0_base> + 0085H,RSCAN0GCFGHL: <RSCAN0_base> + 0086H, RSCAN0GCFGHH: <RSCAN0_base> + 0087H

复位值:0000 0000H

Table 19.21 RSCAN0GCFG Register Contents

Note 1:当指定pclk/2作为时间戳计数器计数源时,将TSBTCS[2:0]设置为000B。
Note 2:请参阅Table 19.7, Range of Operating Frequency Depending on the Transfer Rate and the Number of Channels in Use in the RH850/F1L. 了解CAN时钟频率设置。

仅在全局复位模式下修改RSCAN0GCFG寄存器。

ITRCP[15:0] Bits
这些位用于设置FIFO缓冲区间隔计时器的时钟源分频值。请参阅Section 19.7.3.1, Interval Transmission Function.

TSBTCS[2:0] Bits
当TSSS位为1时,这些位用于选择将成为时间戳计数器的时钟源的位时钟的通道。

TSSS Bit
该位用于选择时间戳计数器的时钟源。

TSP[3:0] Bits
通过对时钟源分频得到的时钟被用作时间戳计数器计数源,该时钟源由TSBTCS[2:0]位和TSSS位选择,分频系数由TSP[3:0]位决定。

DCS Bit
当该位设置为0时,clkc用作CAN时钟(fCAN)的时钟源。
当该位设置为0时,clk_xincan用作CAN时钟(fCAN)的时钟源。
请参阅Table 19.7, Range of Operating Frequency Depending on the Transfer Rate and the Number of Channels in Use in the RH850/F1L. 了解CAN时钟频率的设置。

MME Bit
将此位设置为1将使mirror功能可用。

DRE Bit
当DRE位设置为1时,接收规则的DLC值被存储在缓冲器中,在这种情况下,超出接收规则DLC值的每个数据字节中存储着00。

只有当DCE位设置为1(启用了DLC检查)时,DLC替换功能才可用。

DCE Bit
将此位设置为1将使DLC检查功能可用。禁用DLC检查功能时,将RSCAN0GAFLP0j寄存器中的GAFLDLC[3:0]位设置为0000B,然后将RSCAN0GCFG寄存器中的DCE位清除为0。

TPRI Bit
该位用于设置传输优先级。
当该位设置为0时,选择ID优先级,传输优先级符合CAN总线仲裁规则(ISO11898-1规范)。当该位设置为1时,选择传输缓冲区编号优先级,其中最低的传输缓冲区编号具有最高优先级。

在使用传输队列时,该位应设置为0。

19.3.7 RSCAN0GCTR — Global Control Register

访问:RSCAN0GCTR寄存器可以32位进行读写。RSCAN0GCTRL, RSCAN0GCTRH寄存器可以16位进行读写。RSCAN0GCTRLL, RSCAN0GCTRLH, RSCAN0GCTRHL寄存器可以8位进行读写。
地址:RSCAN0GCTR: <RSCAN0_base> + 0088HRSCAN0GCTRL: <RSCAN0_base> + 0088H, RSCAN0GCTRH: <RSCAN0_base> + 008AHRSCAN0GCTRLL: <RSCAN0_base> + 0088H, RSCAN0GCTRLH: <RSCAN0_base> + 0089H,RSCAN0GCTRHL: <RSCAN0_base> + 008AH

复位值:0000 0005H

Table 19.22 RSCAN0GCTR Register Contents


TSRST Bit
此位用于复位时间戳计数器。当该位设置为1时,RSCAN0GTSC寄存器被清除为0000H。

THLEIE Bit
当THLEIE位置为1且RSCAN0GERFL寄存器中的THLES标志位置为1时,将生成中断请求。仅在全局重置模式下修改此位。

MEIE Bit
当MEIE位置为1且RSCAN0GERFL寄存器中的MES标志位置为1时,生成中断请求。仅在全局重置模式下修改此位。

DEIE Bit
当DEIE位置为1且RSCAN0GERFL寄存器中的DEF标志位置为1时,将生成中断请求。仅在全局重置模式下修改此位。

GSLPR Bit
将该位置为1,使RS-CAN模块进入全局停止模式。
将该位除为0,使RS-CAN模块退出全局停止模式。
该位不运行在全局操作模式或全局测试模式下进行修改。

GMDC[1:0] Bits
这些位用于选择整个RS-CAN模块的模式(全局操作模式、全局复位模式或全局测试模式)。请参阅Section 19.5.1, Global Modes 了解更多。在全局复位模式下,将GSLPR位置为1,使RS-CAN模块进入全局停止模式。

19.4 Interrupt Sources 中断源

RS-CAN模块有20个中断,分为全局中断和通道中断。
全局中断(2个中断源):
接收FIFO中断
全局错误中断
通道中断(3个中断源/通道):
CANm传输中断(m=0到5)
–CANm传输完全中断
–CANm传输中止中断
–CANm传输/接收FIFO传输完全中断(在传输模式、网关模式下)
–CANm传输历史中断
–CANm传输队列中断
CANm发送/接收FIFO接收完全中断(在接收模式、网关模式下)
CANm错误中断
产生中断请求时,相应的中断请求标志位置为1(存在中断请求)。在该情况下,当中断使能位置为1(使能中断)时,RS-CAN模块输出中断请求(中断的产生还取决于中断控制器的中断控制寄存器设置)。

将中断请求标志位置为0(不存在中断请求)或将中断使能位置为0(失能中断)清除当前中断请求。在中断请求标志位被清除之前,当前中断请求仍然输出。

Table 19.88列出了CAN中断源。Figure 19.2展示了CAN全局中断框图。Figure 19.3展示了CAN通道中断框图。

19.5 CAN Modes

RS-CAN模块有四种全局模式控制整个RS-CAN模块状态,四种通道模式控制单个通道状态。Section 19.5.1, Global Modes 讲述了全局模式的详细介绍。Section 19.5.2, Channel Modes.讲述了通道模式的详细介绍。
全局停止模式:停止整个模块的时钟,以实现低功耗。
全局重置模式:对整个模块执行初始设置。
全局测试模式:执行测试设置和RAM测试。
全局操作模式:使整个模块可操作。
通道停止模式:停止通道时钟。
通道重置模式:执行通道的初始设置。
信道停止模式:停止CAN通信并允许信道测试。
信道通信模式:执行CAN通信

19.5.1 Global Modes

Figure 19.4 展示了了全局模式的相互转换。

在某些情况下,全局模式转换也会强制通道模式转换。Table 19.89 显示全局模式下的信道模式转换,全局模式由GMDC[1:0]位和GSLPR位指定

Note :GMDC[1:0], GSLPR: 这些位位于寄存器RSCAN0GCTR中。

Table 19.90 显示了全局模式转换时间。

Note 1:正在使用的通道在最低通信速度情况下的CAN帧时间。

19.5.1.1 Global Stop Mode

在全局停止模式下,CAN时钟不运行,功耗得以降低。可以读取CAN寄存器,但禁止向其写入数据。保留寄存器值。只有CPU用于写入GSLPR位的时钟在此模式下运行。

MCU复位后,CAN模块切换到Global Stop Mode。在全局复位模式下,将RSCAN0GCTR寄存器中的GSLPR位置为1(在全局停止模式下),会使每个RSCAN0CmCTR寄存器中的CSLPR位置为1(通道停止模式)。之后,如果所有通道都被迫转换到通道停止模式,CAN模块将转换到全局停止模式。在全局操作模式和全局测试模式下禁止修改GSLPR位。

19.5.1.2 Global Reset Mode

在全局复位模式下,执行RS-CAN模块设置。当RS-CAN模块转换到全局复位模式时,一些寄存器被初始化。Table 19.93和Table 19.94列出了将被初始化的寄存器。

将RSCAN0GCTR寄存器的GMDC[1:0]位置为01B,将会使每个RSCAN0CmCTR寄存器(m=0~5)的CHMDC[1:0]位置为01B(通道复位模式)。如果强制将所有通道转换到通道复位模式,CAN模块将转换到全局复位模式。已经处于通道复位模式或通道停止模式的通道不转换(因为CHMDC[1:0]位已经置为01B)。

19.5.1.3 Global Test Mode

在全局测试模式下,设置测试相关寄存器。当CAN模块转换到全局测试模式时,所有CAN通信将被禁用。
将RSCAN0GCTR寄存器的GMDC[1:0]位置为10B,将会使每个RSCAN0CmCTR寄存器中的CHMDC[1:0]位置为10B(通道暂停模式)。如果所有通道被强制转换到通道停止模式,CAN模块将切换到全局测试模式。处于通道停止模式、通道复位模式或通道停止模式的通道不切换。

19.5.1.4 Global Operating Mode

RS-CAN模块工作在全局工作模式下。
当RSCAN0GCTR寄存器的GMDC[1:0]位置为00B时,RS-CAN模块切换到全局操作模式。

19.5.2 Channel Modes

Figure 19.5显示了信道模式状态转换图。Table 19.91显示了信道模式转换时间。

Figure 19.5 Channel Mode State Transition Chart

NOTE:CHMDC[1:0], CSLPR, BOM[1:0]位在寄存器RSCAN0CmCTR中(m=0到5)
BOSTS, TRMSTS, RECSTS, COMSTS 位在寄存器RSCAN0CmSTS中(m=0到5)

Note 1:从总线关闭状态过渡到通道停止模式的时间
BOM[1:0]=01B时:当TEC超过255时,切换到通道停止模式
BOM[1:0]=10B时:当连续检测到11个隐性位128次时,转换到通道暂停模式
BOM[1:0]=11B时:当CHMDC[1:0]位置为10B时,转换到通道暂停模式

Note 2:当CAN总线锁定在显性时,不会转换到通道暂停模式。在这种情况下,进入通道复位模式。

19.5.2.1 Channel Stop Mode

在通道停止模式下,停止通道时钟进一步降低功耗。可以读取CAN寄存器,但禁止向其写入数据。保留寄存器值。

MCU复位后,每个通道进入通道停止模式。在通道复位模式下,当RSCAN0CmCTR寄存器(m=0到5)中的CSLPR位设置为1(通道停止模式)时,通道切换到通道停止模式。在通道通信模式和通道暂停模式下,不能修改CSLPR位。

19.5.2.2 Channel Reset Mode

在通道复位模式下,进行通道设置。当通道转换到通道复位模式时,一些通道相关的寄存器被初始化。Table 19.93 列出了将被初始化的寄存器。

在CAN通信期间,当RSCAN0CmCTR寄存器的CHMDC[1:0]位置为01B(信道复位模式)时,通信在完成前会被终止,通道转换为信道复位模式。Table 19.92展示了在CAN通信期间将CHMDC[1:0]位置为01B(信道复位模式)时的操作。

19.5.2.3 Channel Halt Mode

在通道暂停模式下,设置通道测试相关的寄存器。当通道转换到通道暂停模式时,通道的CAN通信停止。

Table 19.92展示了在CAN通信期间将CHMDC[1:0]位设置为10B(信道暂停模式)时的操作。

Table 19.92 Operation a Channel Transitions to Channel Reset Mode/Channel Halt Mode

Note 1:要允许在通信完成后转换到通道复位模式,请将CHMDC[1:0]位置为10B,并确认通信已完成,并且已转换到信道暂停模式,然后将CHMDC[1:0]位置为01B。

Note 2:当CAN总线保持显性时,不会转换到通道暂停模式。在这种情况下,进入通道复位模式。当检测到显性时,可以用RSCAN0CmERFL寄存器的BLF标志为(BLF标志位置1)确认CAN总线状态。

Note 3:当需要从通道复位模式转换到通道停止模式时,可通过以下方式进行设置–将RSCAN0CmCFG寄存器设置为通道复位模式,然后切换到通道停止模式。

19.5.2.4 Channel Communication Mode

在通道通信模式下进行CAN通信。在CAN通信过程中,每个通道具有以下通信状态。
◆ Idle(空闲) :接收和传输都没有进行。
◆ Reception(接收) :接收从另一个节点发送的消息。
◆ Transmission(传送):传送信息。
◆ Bus-off(总线关闭) :与CAN通信隔离

当RSCAN0CmCTR寄存器的CHMDC[1:0]位置为00B时,通道转换为通道通信模式。切换到通道通信模式后,一旦检测到11个连续的隐性位,RSCAN0CmSTS寄存器(m=0到5)的COMSTS标志位置1(通信准备就绪),并且在CAN网络上作为活动节点启用发送和接收。此时,可以开始发送和接收消息。

19.5.2.5 Bus-off State

根据CAN规范的发送/接收错误计数器递增/递减规则,通道转换到bus-off状态。

从bus-off返回的条件由RSCAN0CmCTR寄存器中的BOM[1:0]位确定。
◆ When BOM[1:0] = 00B:
Bus-off恢复符合CAN规范。在连续检测到11个隐性位128次后,通道从bus-off状态返回到CAN通信就绪状态(错误激活状态)。此时,RSCAN0CmSTS寄存器的TEC[7:0]和REC[7:0]位被初始化为00H,RSCAN0CmERFL寄存器的BORF标志位被置为1(检测到bus-off恢复),并生成bus-off恢复中断请求。当RSCAN0CmCTR寄存器的CHMDC[1:0]位在bus-off状态下置为10B(通道暂停模式)时,在bus-off恢复完成后,转换到通道暂停模式(已检测到11个连续的隐性位128次)。

◆ When BOM[1:0] = 01B:
当某个通道转换到bus-off状态时,CHMDC[1:0]位置为10B,通道转换到通道停止模式。此时,TEC[7:0]和REC[7:0]位被初始化为00H。BORF标志位不会被置为1,并且不生成bus-off恢复中断请求。

◆ When BOM[1:0] = 10B:
当通道转换到bus-off状态时,CHMDC[1:0]位被置为10B。Bus-off恢复后(已检测到11个连续的隐性位128次),通道转换到通道停止模式。此时,TEC[7:0]和REC[7:0]位被初始化为00H,BORF标志位被置为1,并且生成bus-off恢复中断请求。

◆ When BOM[1:0] = 11B:
当CHMDC[1:0]位在bus-off状态下设置为10B时,在bus-off恢复完成之前,通道转换到通道停止模式。此时,TEC[7:0]和REC[7:0]位被初始化为00H,但是BORF标志位未被置为1。此外,不生成bus-off恢复中断。

但是,如果在CHMDC[1:0]位设置为10B之前,CAN模块转换到错误激活状态(通过检测到11个连续隐性位128次),则BORF标志位变为1,并生成bus-off恢复中断请求。

如果RS-CAN模块在向通道停止模式切换的同时有软件程序在写CHMDC[1:0]位,则优先软件程序写入操作。当BOM[1:0]位置为01B或10B时,仅当CHMDC[1:0]位为00B(通道通信模式)时,才会自动转换到通道暂停模式。

此外,将RSCAN0CmCTR寄存器中的RTBO位置1可允许从bus-off状态强制恢复。一旦RTBO位置为1,状态就变为error active状态。在检测到11个连续的隐性位之后,CAN模块可以开始通信。在这种情况下,BORF标志位不会被置为1,TEC[7:0]和REC[7:0]位被初始化为00H。仅当BOM[1:0]值为00B时,才将1写入RTBO位。只能在bus-off状态对RTBO位写1,并且RTBO位立即置为0。

19.6 Reception Function

有两种接收类型。
◆ 通过接收缓冲buffer接收:
所有通道可以共享0到96个接收缓冲buffer。由于存储在接收缓冲buffer中的消息在每次接收时都会被覆盖,因此始终可以读取最新的接收数据。

◆ 通过接收FIFO缓冲buffer和发送/接收FIFO缓冲buffer的接收(接收模式):
8个接收FIFO缓冲器可由所有通道共享,每个通道提供三个专用的发送/接收FIFO缓冲器。用RFDC[2:0]和CFDC[2:0]位指定的最多缓冲级数的消息可以存储在FIFO缓冲区中,并且可以从最早的缓冲区顺序读取。

19.6.1 Data Processing Using the Receive Rule Table

使用接收规则表的数据处理允许将选定的消息分派到指定的缓冲区。数据处理包括接受滤波处理、DLC滤波处理、路由处理、标签添加处理和Mirror功能处理。
每个通道最多可注册128个接收规则(64 * 通道数),整个模块都可以注册接收规则(该模组有6个通道,最多可注册384个规则)。为每个通道设置接收规则。接收规则不能与其他通道共享。如果未设置接收规则,则无法接收任何消息。Figure 19.6说明了如何注册接收规则。

CAUTION
每个通道的接收规则必须在连续块中设置。
通道1规则和通道0规则必须分别设置。

每个接收规则由RSCAN0GAFLIDj、RSCAN0GAFLMj、RSCAN0GAFLP0j和RSCAN0GAFLP1j寄存器中的16个字节组成(j=0到15)。RSCAN0GAFLIDj寄存器用于设置GAFLID、GAFLIDE位、GAFLRTR位和Mirror功能,RSCAN0GAFLMj寄存器用于设置掩码,RSCAN0GAFLP0j寄存器用于设置要添加的标签信息、DLC值和存储接收缓冲区,RSCAN0GAFLP1j寄存器用于设置存储FIFO缓冲区。每页最多可设置16个接收规则。

19.6.1.1 Acceptance Filter Processing

在接受过滤处理中,将接收到消息中的ID数据、IDE位和RTR位与在相应通道的接收规则中设置的ID数据、IDE位和RTR位进行比较。当所有这些位匹配时,消息将通过接受过滤处理。接收消息–与RSCAN0GAFLMj寄存器中设置为0的位(不参与比较的位)相对应–中的ID数据、IDE位和RTR位不参与比较,并视为匹配。

从相应通道的最小数量的接收规则开始检查。当接收到的消息中要比较的所有位与接收规则中设置的位匹配时,或者接收到的信息于所有接收规都不匹配时,停止过滤。如果没有匹配的接收规则,则接收的消息不会存储在接收缓冲区或FIFO缓冲区中。

19.6.1.2 DLC Filter Processing

当RSCAN0GCFG寄存器的DCE位置为1(启用了DLC检查)时,DLC 过滤处理将添加到通过接收过滤处理的消息中。当消息中的DLC值等于或大于接收规则中设置的DLC值时,消息将通过DLC过滤处理。

当message通过了DLC过滤处理,且RSCAN0GCFG寄存器中的DRE位置为0(禁用DLC替换)时,接收message的DLC值存储在buffer中。在这种情况下,接收message中的所有数据字节都存储在缓冲区中。

当消息已通过DLC过滤处理,且RSCAN0GCFG寄存器中的DRE位置为1(启用DLC替换)时,接收规则中的DLC值将存储在缓冲区中,而不是接收消息中的DLC值存储在缓冲区中。在这种情况下,接收规则中由DLC指定的字节数之外的每个数据字节置为00H。

当接收到的消息中的DLC值小于接收规则中的值时,消息不能通过DLC过滤处理。在这种情况下,消息不会存储在接收缓冲区或FIFO缓冲区中,并且RSCAN0GERFL寄存器中的DEF标志设位置为1(存在DLC错误)。

19.6.1.3 Routing Processing

通过接收过滤处理和DLC过滤处理的消息存储在接收缓冲器、接收FIFO缓冲器或发送/接收FIFO缓冲器(设置为接收模式或网关模式)中。消息存储位置由RSCAN0GAFLP0j寄存器(j=0到15)的GAFLRMV和GAFLRMDP[6:0]位以及RSCAN0GAFLP1j寄存器设置。通过接收过滤处理和DLC过滤处理的消息最多可以存储在8个缓冲区中。

19.6.1.4 Label Addition Processing

可以将12位宽的标签信息添加到通过过滤处理的消息中,并将标签信息存储在缓冲区中。该标签信息由RSCAN0GAFLP0j寄存器的GAFLPTR[11:0]位设置。

19.6.1.5 Mirror Function Processing

Mirror功能允许CAN节点接收自己传输的信息。通过将RSCAN0GCFG寄存器中的MME位置为1(启用Mirror功能),可以使用Mirror功能。

在使用Mirror功能时,当接收从其他CAN节点发送的消息时,RSCAN0GAFLIDj寄存器中GAFLLB位置为0的接收规则用于数据处理。当CAN节点接收自己发送的消息时,GAFLLB位设置为1的接收规则用于数据处理。

19.6.1.6 Timestamp

时间戳计数器是用于记录消息接收时间的16位自由运行计数器。时间戳计数值在消息的帧开始(SOF)时获取,然后与消息ID和数据一起存储在接收缓冲器或FIFO缓冲器中。可以使用RSCAN0GCFG寄存器的TSBTCS[2:0]和TSSS位选择使用pclk/2或CANm位时钟(m=0到5)作为时间戳计数器的时钟源。通过将所选时钟源除以RSCAN0GCFG寄存器中的TSP[3:0]值来获得时间戳计数器计数源。

CANm位时钟用作时钟源时,当相应的通道转换到通道复位模式或通道停止模式时,时间戳计数器停止。当pclk/2用作时钟源时,时间戳功能不受信道模式的影响。

通过将RSCAN0GCTR寄存器的TSRST位置为1,将时间戳计数器值复位为0000H。

19.7 Transmission Functions

有三种类型的传输。
使用传输缓冲器传输:
每个channel有16个buffers。

使用发送/接收FIFO缓冲器进行传输(传输模式):
每个通道有三个FIFO缓冲器。单个FIFO缓冲区最多可包含128条消息。每个FIFO缓冲区与传输缓冲区的链接一起使用。只有下一个在FIFO缓冲区中传输的消息才成为传输优先级确定的目标。消息以先进先出的方式依次传输。

使用传输队列传输:
每个通道最多可为传输队列分配16个传输缓冲区。传输缓冲器((16× m) +15)用作相应信道的访问窗口。传输缓冲区按缓冲区数目的降序分配给传输队列。由优先级确定的传输队列中的所有消息都按ID号的顺序传输。

Figure 19.9显示了传输队列和传输/接收FIFO缓冲链路的分配。

19.7.1 Transmit Priority Determination

如果传输请求是从多个缓冲区或同一通道上的队列发出的,则使用以下方法之一确定传输优先级。

通过使用以下方法之一确定优先级。
◆ ID priority (TPRI bit = 0)
◆ Transmit buffer number priority (TPRI bit = 1)

所有CAN通道都使用RSCAN0GCFG寄存器中TPRI位的设置。

当TPRI位设置为0时,根据存储的消息id的优先级发送消息。ID优先级符合CAN规范中定义的CAN总线仲裁规范。挂起的传输消息的所有ID都是由优先级确定的对象,不管它们是存储在传输缓冲区、传输/接收FIFO缓冲区(设置为传输模式或网关模式)还是传输队列中。如果使用了单个传输队列,请选择ID优先级。当使用发送/接收FIFO缓冲buffer时,FIFO缓冲buffer中最早的消息成为优先级确定的目标。当从发送/接收FIFO缓冲buffer发送消息时,FIFO缓冲buffer中的下一条消息成为优先级确定的目标。使用传输队列时,传输队列中的所有消息都是优先级确定的目标。如果为两个或多个缓冲buffer设置了相同的ID,则缓冲buffer编号较小的优先级更高。

当TPRI位置为1时,最先发送传输buffer中的消息,这个传输buffer是所有发送请求的buffer中编号最小的。当发送/接收FIFO缓冲buffer链接到传输缓冲buffer时,根据链接的发送缓冲buffer编号确定发送优先级。

当由于仲裁丢失或错误而重新发送消息时,根据TPRI位再次确定传输优先级。

19.7.2 Transmission Using Transmit Buffers

将传输缓冲器中的传输请求位(RSCAN0TMCp寄存器的TMTR位)置为1(请求传输)可允许传输数据帧或远程帧。

发送结果由相应RSCAN0TMSTSp寄存器(p=0到95)的TMTRF[1:0]标志位显示。传输成功时,TMTRF[1:0] 标志位置为10B(传输完成(没有传输中止请求))或11B(传输完成(有传输中止请求))。

19.7.2.1 Transmit Abort Function

对于RSCAN0TMSTSp寄存器的TMTRM位置为1的传输缓冲buffer(存在传输请求),当RSCAN0TMCp寄存器的TMTAR位置为1(请求中止传输)时,取消传输。传输中止完成时,RSCAN0TMSTSp寄存器的TMTRF[1:0]标志位置为01B(传输中止已完成),传输请求被取消(将TMTRM位置为0)。

根据传输优先级确定的正在传输或下一个将要传输的信息,不能被中止。但是对于传输过程中仲裁丢失或或发生错误的message(该message对应的TMTAR位置为1),不进行重传。

19.7.2.2 One-Shot Transmission Function (Retransmission Disabling Function)

当RSCAN0TMCp寄存器中的TMOM位设置为1(启用一次传输)时,仅执行一次传输。即使仲裁失败或发生错误,也不会执行重传。

单次发送的结果由相应RSCAN0TMSTSp寄存器的TMTRF[1:0]标志位显示。当单次传输成功时,TMTRF[1:0]标志设置为10B或11B。当仲裁丢失或发生错误时,TMTRF[1:0]标志位置为01B(中止传输已完成)。

19.7.3 Transmission Using FIFO Buffers

多条消息可以存储在一个发送/接收FIFO缓冲buffer中,最多由FIFO缓冲buffer深度决定了最多能够存储多少条信息,该深度由RSCAN0CFCCk寄存器的CFDC[2:0]位(k=0到17)设置。消息按照先进先出的顺序传输。

每个发送/接收FIFO缓冲buffer都链接到一个传输缓冲buffer,该传输缓冲buffer由RSCAN0FCCK寄存器CFTML[3:0]位选择。当RSCAN0CFCCk寄存器中的CFE位置为1(使用发送/接收FIFO缓冲器)时,发送/接收FIFO缓冲器成为发送优先级确定的目标。只有下一个传输消息的优先级在FIFO缓冲区中确定。

当CFE位设置为0(不使用发送/接收FIFO缓冲区)时,CFEMP标志位在以下时间置为1(发送/接收FIFO缓冲区不包含消息(缓冲区为空))。
◆ 如果发送/接收FIFO缓冲区中的消息未被发送或下一次也不被发送,则该缓冲区立即变为空。
◆ 如果发送/接收FIFO缓冲器中的消息正在发送或将在下一次发送,则发送/接收FIFO缓冲器在发送完成、CAN总线错误检测或仲裁丢失后变为空。

当CFE位清0时,发送/接收FIFO缓冲区中的所有消息都将丢失,并且消息不能存储在FIFO缓冲区中。在再次将CFE位置为1之前,需要先确认CFEMP标志位置为1。

19.7.3.1 Interval Transmission Function

当使用设置为传输模式或网关模式的发送/接收FIFO缓冲器时,可以设置消息传输间隔时间,以便为来自同一FIFO缓冲器的消息传输留出空间。

在RSCAN0CFCCk寄存器中的CFE位置为1的情况下,FIFO buffer的第一条message传输成功后,间隔计时器立即开始计数(CAN协议的EOF7之后)。之后,间隔时间超时后,传输下一条消息。间隔计时器在通道复位模式下或通过将CFE位清0而停止。

间隔时间由RSCAN0CFCCk寄存器的CFITT[7:0]位设置。不使用间隔计时器时,将CFITT[7:0]位设置为00H。

使用RSCAN0CFCCk寄存器中的CFITR和CFITSS位选择间隔计时器计数源。当CFITR和CFITSS位设置为00B时,通过将ITRCP[15:0]位的值除以pclk/2来获得计数源。当CFITR和CFITSS位设置为10B时,通过将RSCAN0GCFG寄存器中ITRCP[15:0]位的值 × 10 除以pclk/2来获得计数源。当CFITR和CFITSS位设置为x1B时,CANm位时钟用作计数源。

间隔时间由以下公式计算,其中M是ITRCP[15:0]的值,N是CFITT[7:0]的值。

Figure 19.11展示了间隔计时器时序图。

(1)间隔计时器在传输完成时开始计数。由于在传输完成时预分频器没有初始化,因此第一个间隔时间最多包含一个间隔计时器计数错误。
(2)间隔计时器从下一个计数启用信号递减。
(3)当间隔计时器减少到0时,发送/接收FIFO缓冲器发出传输请求。
(4)发送/接收FIFO缓冲器通过优先级来确定下一次发送,然后开始发送数据。传输通常从发出传输请求起延迟三个或更少的CANm位时钟周期开始。如果在所有信道中发生多个内部处理(例如,接收滤波器处理、消息路由和发送优先级确定),则可能产生高达582个pclk周期的延迟。

19.7.4 Transmission Using Transmit Queues

为每个信道的传输队列分配三到十六个缓冲器,并且这些传输缓冲器((16× m) +15)用作相应信道的访问窗口。

传输队列中的所有消息都是传输优先级确定的目标,并且以ID优先级顺序传输,而与存储顺序无关。如果两个具有相同ID的消息存储在传输队列中,则这些消息并不总是按照它们在传输队列中的存储顺序进行传输。

RSCAN0TXQCCm寄存器的TXQE位置为0将禁用传输队列。当TXQE位设置为0时,RSCAN0TXQSTSm寄存器的TXQEMP标志位在以下时间置为1(传输队列不包含消息(亦即传输队列为空))。
◆ 当传输队列中没有消息正在传输或也不在下次传输时,传输队列立即变为空。
◆ 当队列中的消息正在传输或将要传输时,传输队列在传输完成、CAN总线错误检测或仲裁丢失后变为空。

当TXQE位被清除为0时,传输队列中的所有消息都将丢失,并且消息不能存储在传输队列中。在再次将TXQE位置为1之前,确认TXQEMP标志位置为1。

19.7.5 Transmit History Function

有关传输完成message的信息可以存储在传输历史缓冲区中。每个通道都有一个传输历史缓冲区,可以包含16组传输历史数据。

可以通过RSCAN0THLCCm寄存器中的THLDTE位选择消息传输源缓冲区类型。RSCAN0CFIDk(k=0到17)寄存器中的第n位确定是否为每条消息的传输历史数据已经存储。

成功完成传输后,关于传输message的以下信息将被存储在传输历史缓冲器中。

存储成功完成传输的历史数据将占用多达150个pclk周期。

Table 19.95 Transmit History Data Buffer Numbers

标签数据用于标识每条消息。唯一标签数据可以添加到传输缓冲区、传输队列或传输/接收FIFO缓冲区传输的每条消息中。

传输历史数据可以从RSCAN0THLACCm寄存器读取。如果试图在缓冲区已满时存储新的传输历史数据,则缓冲区溢出,新数据被丢弃。

19.8 Gateway Function

当发送/接收FIFO缓冲区设置为网关模式时,接收消息可以从任意通道发送,无需CPU干预。

当RSCAN0CFCCk寄存器的CFM[1:0]位置为10B(网关模式)并且由寄存器RSCAN0GAFLP1j选定的传输message的收发FIFO缓冲buffer时,根据接收规则通过滤波处理的消息存储在指定的发送/接收FIFO缓冲器中,并从缓冲器自动发送。

存储在发送/接收FIFO缓冲器中的消息以先进先出的方式依次发送。只有下一个要传输的消息会成为传输优先级确定的目标。

通过将RSCAN0CFCCk寄存器中的CFE位置为0,并且CFEMP标志位根据下面的定时变为1,网关模式下的发送/接收FIFO缓冲区被禁用。
◆ 当发送/接收FIFO缓冲区中的消息未被发送且下一次也不被发送时,该缓冲区立即变空。
◆ 当发送/接收FIFO缓冲区中的消息正在传输或在下一次进行传输时,发送/接收FIFO缓冲区在传输完成、CAN总线错误检测或仲裁丢失后变位空。

当CFE位被清除为0时,发送/接收FIFO缓冲区中的所有消息都将丢失,消息不能再存储在发送/接收FIFO缓冲区中。再次将CFE位置为1前,先确认CFEMP标志位置为1。

19.9 Test Function

测试功能分为通信测试和全局测试。

19.9.1 Standard Test Mode

标准测试模式允许CRC测试。

19.9.2 Listen-Only Mode

Listen-only模式允许接收数据帧和远程帧。CAN总线上只传输隐性位,不传输ACK位、过载标志和激活错误标志。
Listen-only模式可用于检测通信速度。
不要在Listen-only模式下从任何缓冲区或队列发出传输请求。
Figure 19.12显示了选择Listen-only模式时的连接。

19.9.3 Self-Test Mode (Loopback Mode)

在自检模式下,将发送的消息与自己信道的接收规则进行比较,如果消息通过l滤波处理,则将消息存储在缓冲区中。从其他CAN节点发送的消息仅与接收规则进行比较,RSCAN0GAFLIDj寄存器(j=0到15)中的GAFLLB位设置为0(当接收到从另一CAN节点发送的消息时)。

如果Mirror功能和自检模式都已启用,则自检模式设置优先。

19.9.3.1 Self-Test Mode 0 (External Loopback Mode)

自检模式0用在包括CAN收发器的信道内执行环回测试。

在自检模式0中,发送的消息作为通过CAN收发器接收的消息进行处理,并存储在缓冲器中。生成ACK位以接收从自己的CAN节点发送的消息。

Figure 19.13显示了选择自检模式0时的连接。

19.9.3.2 Self-Test Mode 1 (Internal Loopback Mode)

在自检模式1中,发送的消息作为接收的消息处理,并存储在缓冲区中。生成ACK位以接收从自己的CAN节点发送的消息。

在自检模式1中,执行从内部CANmTX引脚(m=0到5)到内部CANmRX引脚的内部反馈。外部CANmRX引脚输入被隔离。外部CANmTX引脚只输出隐性位。

Figure 19.14显示了选择自检模式1时的连接。

19.9.4 RAM Test

RAM测试功能允许访问所有CAN RAM地址。

当使用RAM测试功能时,RAM区域被分成pages,256Bytes/page。RAM测试页由RSCAN0GTSTCFG寄存器的RTMPS[6:0]位设置。设置页中的数据可以从RSCAN0RPGACCr寄存器(r=0到63)读取和写入。可用的总RAM大小为14592字节(3900H)。

19.9.5 Inter-Channel Communication Test

可通过内部CAN通道的相互连接来实现Inter-Channel通信测试。此测试过程中,通道与外部CAN总线隔离。

在信道通信模式下开始数据发送/接收之前,需对每个信道进行发送/接收设置。

Figure 19.15显示了通道间通信测试的连接。
CAUTION
48pin封装的产品不支持通道间通信测试。

19.10 RS-CAN Setting Procedure

19.10.1 Initial Settings

在MCU复位后,RS-CAN模块初始化CAN RAM。RAM初始化时间是7298个pclk周期。在RAM初始化期间,RSCAN0GSTS寄存器中的GRAMINIT标志位置为1(CAN RAM初始化正在进行),初始化完成时,将清除为0(CAN RAM初始化完成)。GRAMINIT标志位清0后可进行CAN设置。Figure 19.16显示了MCU复位后的CAN设置六流程。

19.10.1.1 Clock Setting

将CAN时钟(fCAN)设置为RS-CAN模块的时钟源。使用RSCAN0GCFG寄存器的DCS位选择clk_xincan或clkc。

19.10.1.2 Bit Timing Setting

在CAN协议中,通信帧的每一位由三个段SS、TSEG1和TSEG2组成,其中两个段TSEG1和TSEG2可由RSCAN0CmCFG寄存器为每个信道设置。可以通过设置这两段来确定采样点timing。该timing可以以1个时间量(以下称为Tq)为单位进行调整。1Tq等于一个CANmTq时钟周期。通过在RSCAN0GCFG寄存器中用DCS位选择时钟源,并在RSCAN0CmCFG寄存器中用BRP[9:0]位选择时钟分频比,可以获得CANmTq时钟。

Figure 19.17显示了位时序图。Table 19.96显示了位定时设置的示例。

19.10.1.3 Communication Speed Setting

使用fCAN、波特率预分频器除法值(RSCAN0CmCFG寄存器中的BRP[9:0]位)和每个位时间的Tq数来设置每个通道的CAN通信速度。
Figure 19.18显示了CAN时钟控制框图,Table 19.97显示了通信速度设置的示例。

Note:括号()中的值是波特率预分频器除法值。

19.10.1.4 Receive Rule Setting

可以使用接收规则相关寄存器设置接收规则。

每页最多可以注册16个接收规则。通过RSCAN0GAFLECRT寄存器的AFLPN[4:0]位指定页0到23。使用AFLDAE位设置接收规则表写入使能/写入失能。

Figure19.19显示了接收规则设置流程。

19.10.1.5 Buffer Setting

设置缓冲区的大小和中断源。对于设置为传输模式的传输/接收FIFO缓冲区,将其链接到传输缓冲区。

Figure 19.20显示了缓冲区配置。Figure 19.21显示了缓冲器设置程序。

CAUTION
依此放置在接收缓冲器、接收FIFO缓冲器、发送/接收FIFO缓冲器和发送缓冲器。

19.10.2 Reception Procedure

19.10.2.1 Receive Buffer Reading Procedure

当开始存储接收buffer的message时,RSCAN0RMNDy寄存器(y=0 to 2)中的RMNSq(q=0 to 95)标志位置为1(接收缓冲区q包含新消息)。可以从RSCAN0RMIDq、RSCAN0RMPTRq、RSCAN0RMDF0q和RSCAN0RMDF1q寄存器读取消息。如果在从接收缓冲区读取当前消息之前已接收到下一条消息,则会覆盖该消息。Figure 19.22显示了接收缓冲区读取过程。


(1)当接收到消息中的ID字段时,开始接收过滤处理。
(2)当消息与相应通道的接收规则匹配并且消息已成功接收时,开始将消息传输到指定缓冲区的路由处理。当RSCAN0GCFG寄存器的DCE位设置为1(启用DLC检查)时,DLC过滤处理将在此时开始。
(3)当消息已通过DLC过滤处理时,将开始将消息存储在指定接收缓冲区的处理。
开始消息存储处理时,相应RSCAN0RMNDy寄存器的RMNSq标志位置为1(接收缓冲区包含新消息)。如果其他信道正在执行过滤处理或发送优先级确定处理,则路由处理和存储处理可以被延迟。
(4)当接收到下一条消息的ID字段时,开始接收过滤处理。
(5)当消息与相应通道的接收规则匹配并且消息已成功接收时,开始将消息传输到指定缓冲区的路由处理。当RSCAN0GCFG
寄存器中的DCE位置为1(启用DLC检查)时,DLC过滤处理将在此时开始。
(6)当相应的RMNSq标志被为0(接收缓冲区不包含新消息)时,一旦开始消息存储处理,该标志位将再次被置为1。即
使RMNSq标志位保持为1,新消息也会覆盖接收缓冲区。存储消息期间,不应将RMNSq标志位清0。

19.10.2.2 FIFO Buffer Reading Procedure

当接收到的消息存储在一个或多个接收FIFO缓冲器或设置为接收模式或网关模式的发送/接收FIFO缓冲器中时,相应的消息计数器(RSCAN0RFSTSx寄存器中的RFMC[7:0]位(x=0到7)或RSCAN0CFSTSk寄存器中的CFMC[7:0]位(k=0到17))递增。此时,当RSCAN0RFCCx寄存器中的RFIE位(接收FIFO中断启用)或RSCAN0CFCCk寄存器中的CFRXIE位(发送/接收FIFO接收中断启用)设置为1时,产生中断请求。接收到的消息可以从接收FIFO缓冲区的RSCAN0RFIDx、RSCAN0RFPTRx、RSCAN0RFDF0x和RSCAN0RFDF1x寄存器读取,也可以从发送/接收FIFO缓冲区的RSCAN0CFIDk、RSCAN0CFTRK、RSCAN0CFF0K和RSCAN0CFF1K寄存器读取。FIFO缓冲区中的消息按先进先出的顺序读取。

当消息计数器值与FIFO缓冲区深度(由RSCAN0RFCCx寄存器的RFDC[2:0]位或RSCAN0CFCCk寄存器的CFDC[2:0]位设置)匹配时,RFFLL或CFFLL标志位置为1(意味着接收FIFO缓冲区已满)。

从FIFO缓冲区读取所有消息后,RSCAN0RFSTSx寄存器的RFEMP标志位或RSCAN0CFSTSk寄存器的CFEMP标志位置为1(接收FIFO缓冲区无未读消息(意味着缓冲区为空))。

如果中断请求标志位(RSCAN0RFSTSx寄存器的RFIF标志位或RSCAN0CFSTSk寄存器的CFRXIF标志位)置为1(存在接收FIFO中断请求),同时RFE位或CFE位清除为0(不使用接收FIFO缓冲区),则中断请求标志位不会自动清0。必须由软件程序清0。

(1)接收到消息中的ID字段时,开始接收过滤处理。
(2)当消息与相应通道的接收规则匹配并且消息已成功接收时,开始将消息传输到指定缓冲区的路由处理。当RSCAN0GCFG
寄存器中的DCE位设置为1(启用DLC检查)时,开始DLC过滤处理。
(3)当消息通过DLC过滤处理,且RSCAN0FCCK寄存器中的CFE位为1(使用了传输/接收FIFO缓冲区),且RSCAN0FCCK
寄存器中的CFDC[2:0]值为001B或大于001B时,则该消息存储在设置为接收模式的发送/接收FIFO缓冲区中。RSCAN0CFSTSk寄存器中的CFMC[7:0]值递增并变为01H。当RSCAN0CFCCk寄存器中的CFIM位置为1(每次接收到消息时都会生成FIFO接收中断请求)时,RSCAN0CFSTSk寄存器中的CFRXIF标志位置为1(存在发送/接收FIFO接收中断请求)。CFRXIF标志位可由程序复位为0。
(4)接收到下一条消息的ID字段时,开始接收过滤处理。
(5)读取RSCAN0CFDK、RSCAN0CFTRK、RSCAN0CFF0K和RSCAN0CFF1K寄存器接收到的消息,并将FFH写入RSCAN0CFCTRK
寄存器。这会导致RSCAN0CFSTSk寄存器中的CFMC[7:0]位递减。当CFMC[7:0]变为00H时,RSCAN0CFSTSk寄存器中的CFEMP标志变为1(发送/接收FIFO缓冲区没有消息(意味着缓冲区为空))。
(6)当消息与相应通道的接收规则匹配并且消息已成功接收时,开始将消息传输到指定缓冲区的路由处理。当RSCAN0GCFG
寄存器中的DCE位置为1(启用DLC检查)时,开始DLC过滤处理。
(7)如果CFE位设置为1(使用发送/接收FIFO缓冲区),并且CFDC[2:0]位设置为001B或更高,则消息通过DLC过滤处理
后,被存储在接收模式下设置的发送/接收FIFO缓冲区中。CFMC[7:0]的值增加1为01H。当CFIM位设置为1(每次接
收到消息时都会发生中断)时,CFRXIF标志设置为1(存在发送/接收FIFO接收中断请求)。
如果RSCAN0RFCCx寄存器中的RFE位设置为1(使用接收FIFO缓冲区),并且RSCAN0RFCCx寄存器中的RFDC[2:0]位设置为001B或更多,则消息存储在接收FIFO缓冲区中。RSCAN0RFSTSx寄存器中的RFMC[7:0]位递增1到01H。当RSCAN0RFCCx寄存器中的RFIM位设置为1(每次接收到消息时都会发生中断)时,RSCAN0RFSTSx寄存器中的RFIF标志设置为1(存在接收FIFO中断请求)。

19.10.3 Transmission Procedure

19.10.3.1 Procedure for Transmission from Transmit Buffers

Figure 19.26显示了从传输缓冲器进行传输的过程。
Figure 19.27显示了从同一信道中的两个传输缓冲器传输消息并成功完成传输的时序图。
Figure 19.28显示了从同一信道中的两个传输缓冲器传输消息并完成传输中止的时序图。

(1)当CAN总线空闲时,RSCAN0TMCa寄存器中的TMTR位设置为1时,传输优先级确定处理开始确定最高优先级的传输缓冲区。如果发送缓冲器A被确定为最高优先级的发送缓冲器,则相应RSCAN0TMSTSa寄存器中的TMTSTS标志被设置为1(传输正在进行),并且CAN信道开始传输数据。
(2)当存在来自缓冲器的传输请求时,从下一次传输的CRC分隔符开始优先级确定。如果传输优先级确定处理是在另一信道上执行的,则确定时间可能延迟。然而,在传输期间不发生延迟,因为确定处理由间歇的第三个位完成。
(3)当传输成功完成时,RSCAN0TMSTSa寄存器中的TMTRF[1:0]标志被设置为10B(传输已完成(无传输中止请求)),并且RSCAN0TMCa寄存器中的TMTSTS标志和TMTR位被清0。当RSCAN0TMIEC0寄存器中的TMIEa位为1(传输缓冲区中断启用)时,生成CAN0传输完整中断请求。要清除中断请求,请将TMTRF[1:0]标志设置为00B(传输正在进行或不存在传输请求)。
(4)在启动下一个传输之前,先将TMTRF[1:0]标志位置为00B。将下一条消息写入传输缓冲区,然后将TMTR位置1(请求传输)。只有当TMTRF[1:0]标志值为00B时,才能将TMTR位设置为1。

如果在传输开始后发生仲裁丢失,则TMTSTS标志位清0。在CRC分隔符的开头重新执行传输优先级确定,以搜索优先级最高的传输缓冲区。如果在传输期间或仲裁丢失之后发生了错误,则在传输错误帧期间重新执行优先级确定处理。

(1)当CAN总线空闲时,RSCAN0TMCa寄存器中的TMTR位设置为1时,开始确定最高优先级的传输缓冲区。如果发送缓冲器A被确定为最高优先级的发送缓冲器,则相应RSCAN0TMSTSa寄存器中的TMTSTS标志位置为1(传输正在进行),并且CAN信道开始传输数据。
(2)当传输缓冲器被确定用于下一次传输或传输正在进行时,除非发生错误或仲裁丢失,否则消息传输不会中止,即使TMTAR位置为1(请求传输中止)。
(3)从下一次传输的CRC分隔符开始优先级确定。在该时序图中,缓冲器B没有被选择作为下一个发送缓冲器。如果传输优先级确定处理在另一信道上执行,则确定时间可能延迟。然而,在传输期间不发生延迟,因为确定处理由间歇的第三个位完成。
(4)当传输成功完成时,RSCAN0TMSTSa寄存器中的TMTRF[1:0]标志位置为11B(传输已完成(带有传输中止请求)),并且RSCAN0TMCa寄存器中的TMTSTS标志位和TMTR位清0。当RSCAN0TMIEC0寄存器中的TMIEa值为1(传输缓冲区中断已启用)时,将生成CAN0传输完整中断请求。要清除中断请求,请将TMTRF[1:0]标志设置为00B(传输正在进行或不存在传输请求)。
(5)当另一个CAN节点在CAN总线上传输数据时(TMTSTS标志=0),如果在相应信道确定传输优先级时TMTAR位设置为1,则TMTR位不能清除为0。
(6)内部处理时间过后,传输终止,TMTRF[1:0]标志位置为01B。当发送缓冲器没有发送数据并且没有被选为下一个发送缓冲器并且没有进行优先级确定时,立即中止请求并置TMTRF[1:0]标志位为01B。此时,TMTR和TMTAR位被清0。当传输中止完成且RSCAN0CmCTR寄存器中的TAIE位置为1(传输中止中断被启用)时,将生成中断请求。要清除中断请求,请将TMTRF[1:0]标志位置为00B。

如果在CAN通道开始传输后发生仲裁丢失,则TMTSTS位清除为0。传输优先级确定将在CRC分隔符的开头重新执行,以搜索优先级最高的传输缓冲区。如果在传输期间或仲裁丢失之后发生了错误,则在传输错误帧期间重新执行优先级确定处理。

19.10.3.2 Procedure for Transmission from Transmit/Receive FIFO Buffers

Figure 19.29显示了从发送/接收FIFO缓冲器进行传输的过程。
Figure 19.30显示了从同一信道中的两个发送/接收FIFO缓冲器发送消息并成功完成传输的时序图。
Figure 19.31显示了一个时序图,其中消息从同一信道中的两个发送/接收FIFO缓冲器传输,并且传输中止已完成。

(1)CAN总线空闲时,当RSCA0CFCCa寄存器中的CFE位为1(使用发送/接收FIFO缓冲器)且RSCAN0CFCCa寄存器中的
CFDC[2:0]值为001B(4条消息)或更大且RSCAN0CFSTSa寄存器中的CFMC[7:0]值为01H或更大时,优先级确定处理开始确定最高优先级的发送消息。当确定了最高优先级的传输消息时,开始传输消息。在该图中,消息从信道0的发送/接收FIFO缓冲器A发送。
(2)当存在来自缓冲器的传输请求时,优先级确定从下一次传输的CRC分隔符开始。如果发送优先级确定处理在另一信道
上执行,则确定时间可能延迟。然而,在传输期间不发生延迟,因为确定处理由间歇的第三个位完成。
(3)当传输成功完成时,RSCAN0CFSTSa寄存器中的CFMC[7:0]值递减。RSCAN0CFCCa寄存器中的CFIM位置为1(每次发送
消息时都会生成FIFO传输中断请求)将使RSCAN0CFSTSk寄存器的CFTXIF标志位置为1(存在传输/接收FIFO传输中断请求)。
(4)软件程序可以清除CFTXIF标志。
(5)信道0的发送/接收FIFO缓冲器b的消息传输已经完成,并且RSCAN0CFSTSb寄存器中的CFMC[7:0]值递减。CFMC[7:0]
位被清除为00H,因此RSCAN0CFSTSk寄存器中的CFEMP标志位置为1(发送/接收FIFO缓冲区不包含消息(意味着缓冲区为空))。

继续传输,直到CFEMP标志设置为1。可以在FIFO缓冲区中连续存储传输消息,直到RSCAN0CFSTSa和RSCAN0CFSTSb寄存器中的CFFLL标志设置为1(传输/接收FIFO缓冲区已满)。

(1)CAN总线空闲时,当RSCAN0CFCCa寄存器(a=0至17)中的CFE位为1(使用发送/接收FIFO缓冲器)且RSCAN0CFCCa
寄存器中的CFDC[2:0]值为001B(4条消息)或更大且RSCAN0CFSTSa寄存器中的CFMC[7:0]值为01H或更大时,优先级确定处理开始确定最高优先级的发送消息。当确定了最高优先级的传输消息时,开始传输消息。在该图中,消息从信道0的发送/接收FIFO缓冲器A发送。
(2)当传输正在进行或确定下一个传输使用的发送/接收FIFO缓冲区时,即使CFE位置为0(不使用发送/接收FIFO缓冲区),
消息传输也不会中止,除非发生错误或仲裁丢失。
(3)当存在来自缓冲器的传输请求时,优先级确定从下一次传输的CRC分隔符开始。在该图中,发送/接收FIFO缓冲器b
没有被选为下一次发送的缓冲器。如果传输优先级确定处理在另一信道上执行,则确定时间可能延迟。然而,在传输期间不发生延迟,因为确定处理由间歇的第三个位完成。
(4)当传输成功完成时,CFMC[7:0]值被清为00H。CFIM位置为1(每次发送消息时生成FIFO传输中断请求)将使
RSCAN0CFSTSa寄存器中的CFTXIF标志位置为1(存在传输/接收FIFO传输中断请求)。软件程序可以清除CFTXIF标志
位。
(5)如果CAN总线上的另一个CAN节点正在传输数据(不是来自发送/接收FIFO缓冲器b),则在发送优先级确定期间,
即使RSCAN0CFCCb寄存器中的CFE位被清0(未使用发送/接收FIFO缓冲器),也无法立即禁用发送/接收FIFO缓冲
器(RSCAN0CFSTSb寄存器中的CFEMP标志位没有立即置为1(发送/接收FIFO缓冲区没有消息(意味着缓冲区为空))
(6)内部处理时间过后,发送/接收FIFO缓冲区被禁用,RSCAN0CFSTSb寄存器的CFMC[7:0]位被清00H,CFEMP标志位被
置为1。当发送/接收FIFO缓冲器未发送数据且未被选为下一个发送缓冲器且优先级确定未进行时,发送/接收FIFO缓
冲器立即被禁用(CFMC[7:0]位清00H,CFEMP标志位置为1。)

19.10.3.3 Procedure for Transmission from the Transmit Queue

Figure 19.32显示了从传输队列进行传输的过程。

19.10.3.4 Transmit History Buffer Reading Procedure

传输历史数据可以从RSCAN0THLACCm寄存器读取。在读取一组数据之后,可以通过将FFH写入相应的RSCAN0THLPCTRm寄存器(m=0到5)来访问下一个数据。Figure 19.33显示了传输历史缓冲区读取过程。

19.10.4 Test Settings

19.10.4.1 Self-Test Mode Setting Procedure

自检模式使CAN节点能够接收其自身传输的消息,允许基于channel的通信测试。

Figure 19.34显示了自检模式设置程序。

19.10.4.2 Procedure for Releasing the Protection

由于Table 19.98中的全局测试功能受到保护,所以需要将保护释放数据1和释放数据2依次写入RSCAN0GLOCKK寄存器中的LOCK[15:0]位,然后将目标测试位置为1。

如果向LOCK[15:0]位写入了不正确的值,则写保护释放数据1以开始重新。Figure 19.35显示了释放保护的过程。

19.10.4.3 RAM Test Setting Procedure

RAM测试包括CAN RAM读/写测试。读/写测试验证写入RAM的数据是否正确读取。在关闭RAM测试之前,将0000 0000H写入CAN RAM的所有页面。

Figure 19.36显示了RAM测试设置过程。

19.10.4.4 Inter-Channel Communication Test Setting Procedure

通信测试可以通过在不同信道之间发送和接收数据来执行。

Figure 19.37显示了通道间通信测试设置过程。

19.11 Detection and Correction of Errors in RS-CAN RAM

19.11.1 ECC for the RSCAN0 RAM

Table 19.99给出了RSCAN0 RAM的ECC功能概要。
Table 19.99 List of the ECC Functions for the RSCAN0 RAM

CAUTION
执行ECC错误检测/校正时,在使用RSCAN0 RAM(RSCAN0GSTS.GRAMINIT=0)之前确认其初始化。

19.11.2 Interrupt Request

Table 19.100列出了RSCAN0 RAM的ECC中断请求。

19.11.3 ECCRCAN0CTL — RSCAN0 ECC Control Register

ECCRCAN0CTL寄存器控制ECC的模式和RSCAN0的状态。
当RSCAN0操作停止时,应设置(写入)位7、5和4。
此外,写入位7时,EMCA1和EMCA0需要为01B。

Table 19.101 ECCRCAN0CTL Register Contents (1/2)

CAUTION
未设置ECC错误消息标志位(ECEMF)时,应清除位2和1。
建议在清除位2和1之前初始化RAM。

19.11.4 ECCRCAN0TMC — RSCAN0 ECC Test Mode Control Register

ECCRCAN0TMC寄存器切换到测试模式并控制测试模式。
RS-can不能访问RAM时,可以使用该寄存器。
Access: This register can be read or written in 16-bit units.
Address: FFC7 1004H
Value after reset: 0000H

19.11.5 ECCRCAN0TED — RSCAN0 ECC Encode/Decode Input/Output Replacement Test Register

在ECC测试模式下,此寄存器负责处理测试数据。
寄存器的值可用于生成ECC数据或syndrome code。
使能ECC测试模式时(ECCRCAN0TMC.ECTMCE=1),可以访问该模式。当ECCRCAN0TMC.ECTMCE=0时,将忽略对该寄存器的写入,并读取0000 0000H。
当RS-can不能访问RAM时,可以使用该寄存器。

Table 19.103 ECCRCAN0TED Register Contents

19.11.6 ECCRCAN0TRC — RSCAN0 ECC Redundant Bit Data Control Test Register

在ECC测试模式下,此ECC数据测试寄存器由四个8位寄存器组成:ECCRCAN0SYND、ECCRCAN0HORD、ECCRCAN0ECRD和ECCRCAN0ERDB。
使能ECC测试模式(ECCRCAN0TMC.ECTMCE=1)时,可以访问此寄存器。
ECCRCAN0TMC.ECTMCE=0时,将忽略对该寄存器的写入,并读取0000 0000H。
当RS-can不能访问RAM时,可以使用该寄存器。

19.11.7 ECCRCAN0SYND — RSCAN0 ECC Decode Syndrome Data Register

ECC测试模式下,该寄存器只读,用于存储生成的syndrome code。
写入此寄存器将被忽略。
使能ECC测试模式(ECCRCAN0TMC.ECTMCE=1)时,可以访问此寄存器。
禁用ECC测试模式(ECRCAN0TMC.ECTMCE=0)时,读取00H。

19.11.8 ECCRCAN0HORD — RSCAN0 ECC 7-Bit Redundant Bit Data Hold Test Register

在ECC测试模式下,此寄存器用于存储读取RAM数据的ECC数据。
写入此寄存器被忽略。
使能ECC测试模式(ECCRCAN0TMC.ECTMCE=1)时,可以访问此寄存器。
当ECC测试模式被禁用(ECCRCAN0TMC.ECTMCE=0)时,读取00H。

19.11.9 ECCRCAN0ECRD — RSCAN0 ECC Encode Test Register

在ECC测试模式下,这是一个只读寄存器,用于存储为写RAM数据生成的ECC数据。

写入此寄存器被忽略。

使能ECC测试模式(ECCRCAN0TMC.ECTMCE=1)时,可以访问该寄存器。当ECC测试模式被禁用(ECCRCAN0TMC.ECTMCE=0)时,读取00H。

19.11.10 ECCRCAN0ERDB — RSCAN0 ECC Redundant Bit Input/Output Replacement Buffer Register

在ECC测试模式下,此寄存器处理ECC数据。

该寄存器的值可用作RAM写入时生成的ECC数据或RAM数据读取时读取的ECC数据。

使能ECC测试模式(ECCRCAN0TMC.ECTMCE=1)时,可以访问该寄存器。当ECC测试模式被禁用(ECCRCAN0TMC.ECTMCE=0)时,读取00H。

19.11.11 SELB_READTEST — ECCREAD Test Select Register

SELB_READTEST用于检查对RSCAN0 ECC寄存器的读/写访问。有关详细信息,请参阅Section 15.7.11, SELB_READTEST — ECCREAD Test Select Register.

19.12 Notes on the RS-CAN Module

◆ 更改全局模式时,请检查RSCAN0GSTS寄存器中的GSLPSTS、GHLTSTS和GRSTSTS标志位是否转换。更改通道模式时,检查RSCAN0CmSTS寄存器(m=0到5)中的CSLPSTS、CHLTSTS和CRSTSTS标志位是否转换。

◆ 接收过滤处理按从小到大的编号检查接收规则。如果多个接收规则设置了相同的ID、IDE位或RTR位值,则接收规则的最小编号将用于接收过滤处理。

◆ 将传输缓冲区链接到传输/接收FIFO缓冲区或将传输缓冲区分配到传输队列时,将相应传输缓冲区的控制寄存器(RSCAN0TMCp)置为00H。不可使用相应传输缓冲区的状态寄存器(RSCAN0TMSTSp)。其他状态寄存器(寄存器RSCAN0TMTRSTS0到RSCAN0TMTRSTS2,RSCAN0TMTARSTS0到RSCAN0TMTARSTS2,RSCAN0TMTCSTS0到RSCAN0TMTCSTS2,以及RSCAN0TMTASTS0到RSCAN0TMTASTS2)的标志位保持不变,这些标志位对应于链接到发送/接收FIFO缓冲区或分配给发送队列的发送缓冲区。将相应中断使能寄存器(寄存器RSCAN0TMIEC0到RSCAN0TMIEC2)中的使能位置为0(传输缓冲区中断被禁用)。

◆ 链接到传输/接收FIFO缓冲区的传输缓冲区不得分配给传输队列。

◆ 一个发送/接收FIFO缓冲区链接到一个发送缓冲区。不要将两个或多个发送/接收FIFO缓冲区链接到相同编号的发送缓冲区。

◆ CANm位时钟作为时间戳计数器时钟源时,当相应的信道转换到信道复位模式或信道停止模式时,时间戳计数器停止。

◆ 如果在接收FIFO缓冲区和发送/接收FIFO缓冲区已满时尝试存储新接收的消息,则新消息被丢弃。如果要在发送/接收FIFO缓冲区或发送队列中存储新的发送消息,请检查发送/接收FIFO缓冲区或发送队列是否已满。

◆ 当RS-CAN模块从全局复位模式退出转换到全局操作模式或全局测试模式时,未使用的接收缓冲区(RSCAN0RMIDq、RSCAN0RMPTRq、RSCAN0RMDF0q和RSCAN0RMDF1q寄存器)、接收FIFO缓冲区访问寄存器(RSCAN0RFIDx、RSCAN0RFPTRx、RSCAN0RFDF0x和RSCAN0RFDF1x寄存器)和发送/接收FIFO缓冲区访问寄存器(RSCAN0CFIDk、RSCAN0CFPTRk、RSCAN0CFDF0k、RSCAN0CFDF1k寄存器)未定义。

总算翻译完成了,时间仓促再加上博主能力有限,而且是专业英语,有些词汇的叫法可能不一致,所以文章中难免会有错误或歧义的地方,欢迎各位同行留言指出。
但是谢绝粗言秽语,试图发不尊重言语的朋友,请关闭本博文。

瑞萨RH850F1L用户手册(UM)CAN接口部分中文翻译(Section 19 CAN Interface (RS-CAN))相关推荐

  1. 瑞萨RH850F1L用户手册(UM)LIN master接口章节 中文翻译(Section 16 LIN Master Interface (RLIN2))

    本文介绍瑞萨RH850/F1L用户手册(user manual)的CAN接口部分的中文翻译. 博主会一直更新该文章,直到CAN部分翻译完成. 版权声明 本博文系欧科曼汽车电子所有,转载请注明出处. 欧 ...

  2. 瑞萨单片机c语言程序,瑞萨单片机开发环境系统用户手册.pdf

    RCC10J0005-0100 M16C R8C FOUSB/UART软件 用户手册 瑞萨单片机开发环境系统 Rev.1.00 发行:2006年10月27日 Keep safety first in ...

  3. 瑞萨Ez-cube仿真器引脚与4线接口对应关系

    瑞萨仿真器Ez-cube有8个引脚,如下图, 但在实际使用中,可能仅需要连接4个引脚至MUC端,对应关系如下表: 仅需要1.3.7.8脚,其中1.3分别为地和电源,7接Reset,8接Tool0. 各 ...

  4. 瑞萨RH850 FCL、FDL和EEL库的配置和使用

    目录 1.FCL库 1.1.配置FCL库 1.2.使用FCL库 2.FDL库 2.1.配置FDL库 2.2.使用FDL库 3.EEL库 瑞萨RH850 Flash中有两种存储类型:Mapping of ...

  5. 瑞萨 RH850 FCL、FDL 和 EEL 库的配置和使用

    瑞萨RH850 Flash中有两种存储类型:Mapping of Code Flash Memory和Mapping of Data Flash Memory. Mapping of Code Fla ...

  6. 惠斯通电桥信号调理芯片_瑞萨推出集成LIN输出接口的传感器信号调理芯片,适用于电动/混动汽车HVAC系统...

    " 全球领先的半导体解决方案供应商瑞萨电子集团(TSE:6723)今日宣布推出通过汽车级认证.集成LIN v2.2a接口的汽车压力传感器解决方案--ZSSC4132.该单封装传感器信号调理芯 ...

  7. 嵌入式 - 瑞萨电子的并购交易

    2010年4月1日,瑞萨科技和NEC电子合并,合并后称为瑞萨电子. 2017年2月25日,瑞萨电子完成对Intersil的收购. 2019年3月29日,瑞萨完成对Integrated Device T ...

  8. Renesas瑞萨电子提供的RcarH3,第一个SOC从第三代R-Car汽车计算平台的自动驾驶领域时代

    e-mail:174176320@qq.com 瑞萨电子株式会社(东京证交所:6723),一个英超的先进半导体解决方案供应商,今天宣布推出第三代Rcar,汽车计算平台解决方案的安全驾驶辅助系统和车载信 ...

  9. 瑞萨e2studio(6)----编译调试

    瑞萨e2studio.6----编译调试 概述 视频教学 样品申请 csdn课程 硬件准备 开发板 调试配置 启动栏配置 调试窗口 DEBUG调试按钮 中断点视图 表达式视图 内存视图 反汇编视图 I ...

  10. 瑞萨开发板编译和烧录

    瑞萨开发版编译和烧录 烧板子是一条充满荆棘的路,尤其是对于之前没有烧过的同学来说,更对于比较冷门的板子来说.去某高校的实验室跑了两趟,和官方技术支持挤牙膏挤了好久才挖点资料过来参考.换了两台电脑,在P ...

最新文章

  1. 附加 集合数据_最全的实例详解:Python字符串、列表、元组、字典、集合的补充...
  2. 求数组最小数平均值和和值
  3. MySQL5.7.17绿色版安装
  4. AWS Elasticsearch后模式
  5. 参数化测试 junit_使用JUnitParams进行参数化的JUnit测试
  6. libevent简述
  7. tomcat利用setenv对内存的限制和docker中tomcat内存的优雅配置
  8. APP被苹果App Store拒绝的79个原因【转】
  9. Windows 98 资源管理(转)
  10. Ubuntu16.04 解决外置USB蓝牙模块链接蓝牙耳机没有声音输出问题
  11. 台式计算机VGA线可以拔掉吗,电脑开机花屏拔掉vga线在插入又会清晰
  12. android wear 2.0.国行,你的智能手表升级Android Wear 2.0系统吗? 快来看看
  13. Android 开发笔记___图像按钮__imageButton
  14. Ubuntu18配置静态IP地址
  15. 指甲半月痕 血象和微量元素检查分析是否有贫血
  16. 高德地图 鼠标点击后 地图上点标记跟着变化
  17. ps 2019直装版 for Mac
  18. 基于Qt5.14.2和mingw的Qt源码学习(三) — 元对象系统简介及moc工具是如何保存类属性和方法的
  19. VIC Classic 驱动程序
  20. elementui upload与form一起提交

热门文章

  1. 多元统计分析假设检验
  2. 网络与信息安全基础知识专栏
  3. 十分钟倒计时flash_Flash 101-第6部分:最终倒计时
  4. 如何搭建tftp服务器
  5. ibm刀片服务器系统瘫痪,ibm刀片服务器系统安装资料
  6. rapidxml使用
  7. java连接SqlServer2000
  8. linux找不到fastboot驱动下载,fastboot 刷机傻瓜教程
  9. 第六章、面向对象(oop)
  10. jquery案例15——jq回到顶部