第十六章 CAN控制器
(5) CAN 模块屏蔽控制寄存器(C0MASKaL、C0MASKaH)(a = 1、2、3或4)
C0MASKaL和C0MASKaH寄存器通过屏蔽报文的ID比较的部分并使屏蔽部分无效,从而用来扩展同一个报文缓存器可接收的报文数目。
- CAN 模块屏蔽 1 寄存器(C0MASK1L、C0MASK1H)
复位后:未定义
R/W 地址:
C0MASK1L FF70H, FF71H C0MASK1H FF72H, FF73H
15
14
13
12
11
10
9
8
C0MASK1L CMID15 CMID14 CMID13 CMID12 CMID11 CMID10 CMID9 CMID8
7 6 5 4 3 2 1 0 CMID7 CMID6 CMID5 CMID4 CMID3 CMID2 CMID1 CMID0
15 14 13 12
11
10
9
8
C0MASK1H 0 0 0 CMID28 CMID27 CMID26 CMID25 CMID24
7
6
5
4
3
2
1
0
CMID23 CMID22 CMID21 CMID20 CMID19 CMID18 CMID17 CMID16
- CAN 模块屏蔽 2 寄存器(C0MASK2L、C0MASK2H)
复位后:未定义
R/W 地址:
C0MASK2L FF74H, FF75H C0MASK2H FF76H, FF77H
15
14
13
12
11
10
9
8
C0MASK2L CMID15 CMID14 CMID13 CMID12 CMID11 CMID10 CMID9 CMID8
7 6 5 4 3 2 1 0 CMID7 CMID6 CMID5 CMID4 CMID3 CMID2 CMID1 CMID0
15 14 13 12
11
10
9
8
C0MASK2H 0 0 0 CMID28 CMID27 CMID26 CMID25 CMID24
7
6
5
4
3
2
1
0
CMID23 CMID22 CMID21 CMID20 CMID19 CMID18 CMID17 CMID16
用户手册 U17553CA4V0UD
425
第十六章 CAN控制器
- CAN 模块屏蔽 3 寄存器(C0MASK3L、C0MASK3H)
复位后:未定义
C0MASK3L
C0MASK3H
15
14
13
12
11
10
9
8 CMID8 0 CMID0 8
R/W
地址:
C0MASK3L FF78H, FF79H C0MASK3H FF7AH, FF7BH
CMID15 CMID14 CMID13 CMID12 CMID11 CMID10 CMID9 7 CMID7 15 0 7
6 CMID6 14 0 6
5 CMID5 13 0 5
4 CMID4 12
3 CMID3 11
2 CMID2 10
1 CMID1 9
CMID28 CMID27 CMID26 CMID25 CMID24 4
3
2
1
0
CMID23 CMID22 CMID21 CMID20 CMID19 CMID18 CMID17 CMID16
- CAN 模块屏蔽 4 寄存器(C0MASK4L、C0MASK4H)
复位后:未定义
C0MASK4L
C0MASK4H
CMID28至CMID0 0 1 15
14
13
12
11
10
9
8 CMID8 0 CMID0 8
R/W
地址:
C0MASK4L FF7CH, FF7DH C0MASK4H FF7EH, FF7FH
CMID15 CMID14 CMID13 CMID12 CMID11 CMID10 CMID9 7 CMID7 15 0 7
6 CMID6 14 0 6
5 CMID5 13 0 5
4 CMID4 12
3 CMID3 11
2 CMID2 10
1 CMID1 9
CMID28 CMID27 CMID26 CMID25 CMID24 4
3
2
1
0
CMID23 CMID22 CMID21 CMID20 CMID19 CMID18 CMID17 CMID16
设置ID位的屏蔽模式 将CMID28至CMID0位设置的报文缓存器的ID位与已接收报文帧的ID位进行比较。 不将CMID28至CMID0位设置的报文缓存器的ID位与已接收报文帧的ID位进行比较(它们被屏蔽)。
备注 屏蔽总是以29位ID长度来定义。 如果给具有标准ID的报文指定一个屏蔽,则忽略CMID17
至CMID0位。 因此,只屏蔽了已接收ID的CMID28至CMID18位。 标准ID和扩展ID可使用相同的屏蔽。
426
用户手册 U17553CA4V0UD
第十六章 CAN控制器
(6) CAN 模块控制寄存器(C0CTRL)
C0CTRL寄存器用于控制CAN模块的操作模式。
复位后:
0000H R/W 地址: FF90H, FF91H
(a) 读取
15 14 13 12 11 10 9 8 C0CTRL 0 0 0 0 0 0 RSTAT TSTAT 7 6 5 4
3
2
1 0
CCERC AL VALID PSMODE1 PSMODE0 OPMODE2 OPMODE1 OPMODE0
(b) 写入
15 14 13 12 11 10 9 8
C0CTRL
设置 设置 0 设置 设置 设置 设置 设置
CCERC AL PSMODE1 PSMODE0 OPMODE2 OPMODE1 OPMODE0 7 6 5 4 3 2 1 0
清除 清除 清除 清除 清除 清除 清除 清除
CCERC AL VALID PSMODE1 PSMODE0 OPMODE2 OPMODE1 OPMODE0
(a) 读取
RSTAT 接收状态位 0 停止接收。 1 正在接收。
备注 - 在下列条件(时刻)下将RSTAT位设为1。 - 检测到接收帧的SOF位时 - 在一个发送帧期间发生仲裁失败时 - 在下列条件(时刻)下将RSTAT位清为0 - 在帧间间隔的第2位检测到隐性电平时
- 在帧间间隔的第1位转换至初始化模式时
用户手册 U17553CA4V0UD
427
第十六章 CAN控制器
TSTAT 0 1 停止发送。 正在发送。 发送状态位
备注
- 在下列条件(时刻)下将TSTAT位设为1 - 检测到发送帧的SOF位时
- 在发送帧中检测到错误标志的第1位。 - 在下列条件(时刻)下将TSTAT位清为0。 - 切换至掉线状态期间
- 在一个发送帧期间发生仲裁失败时 - 在帧间间隔的第2位检测到隐性电平时 - 在帧间间隔的第1位转换至初始化模式时
CCERC 0 1 错误计数器清除位 不在初始化模式下清除C0ERC和C0INFO寄存器。 在初始化模式下清除C0ERC和C0INFO寄存器。
备注
1. 2. 3. 4.
CCERC位用于重新初始化或从掉线状态强制恢复时清除C0ERC和C0INFO寄存器。 该位仅能在初始化模式下设为1。
清除C0ERC和C0INFO寄存器时,CCERC位也自动清除为0。
在初始化模式变为操作模式的请求产生的同时可将CCERC位设为1。 在CAN睡眠模式或CAN停止模式下,CCERC位为只读位。
从自检模式进入INIT模式之后立即设置CCERC位(1)的情况下,接收数据可能会被破坏。
AL 0 1 仲裁失败时的操作设置位 单次模式下当仲裁失败时不进行重传。 单次模式下当仲裁失败时进行重传。
有效接收报文帧检测位 从VALID位上一次清为0后未接收到有效报文帧。 从VALID位上一次清为0后已接收到有效报文帧。
备注 AL位仅在单次模式下有效。
VALID 0 1 备注
1. 2. 3.
有效接收数据帧的检测不依赖于接收报文缓存器(数据帧)或发送报文缓存器(远程帧)是否存有数据。
在初始化模式变为操作模式之前将VALID位清除(0)。
如果只有两个CAN节点连接到CAN总线,其中一个节点在正常模式下传送报文而另一个在只收模式下传送报文,所以在发送节点进入错误既成状态前VALID位不会置为1,因为在只收模式下未产生应答。
为了清除VALID位,应首先将Clear VALID位设为1然后确认VALID位被清除。 如果没有清除该位,则重新进行清除处理。
4.
428
用户手册 U17553CA4V0UD