ZHCAA54B January 2022 – June 2022 TCAN1145-Q1 , TCAN1146-Q1
参数 | 示例值 |
---|---|
所需的 WUF ID | 标准 ID(11 位)0x122/123 |
ID 掩码 | 0×001(匹配除位 0 以外的所有位,1 = 忽略,0 = 必须匹配) |
总线仲裁速率/CAN FD 速率 | 500kbps/2Mbps |
忽略 CAN FD | 真 |
WUF DLC | 2 字节(DLC:0×2) |
要唤醒至的 WUF 数据位 | 字节 0[1]、字节 1[7] |
对示例参数值进行分解后,WUF ID 为 0×123 或 0×122。写入寄存器的值与输入两者中的哪一个无关,因为会使用 ID 掩码将位 0 标记为忽略。通过将 ID 掩码的位 0 设置为 1,我们使器件忽略该位,这意味着器件将接受 0×122 或 0×123 ID。本例中的 CAN FD 总线的仲裁和数据速率分别为 500kbps 和 2Mbps。该理论总线是 CAN FD 总线,因此我们希望做到在某些节点处于睡眠状态时产生常规 CAN FD 流量,从而将 SW_PASSIVE 设置为 1b。
该示例的一处更改是对数据有效负载进行一些验证。请注意,数据有效负载检查需要 DLC 完全匹配,但检查 WUF 数据位的方式仅是按位或。例如,会根据有效负载检查设置为 1 的位,如果任何单个(或更多)位匹配,则将其视为匹配。同样,如果将 WUF 数据掩码设置为 0×FF,则任何包含等于 1 的位的值都将匹配。如果将 WUF 数据掩码设置为 0×00,则该特定字节本质上会被忽略,无法匹配,即使接收到的数据是 0×00 也是如此。会将该或运算应用于所有配置的数据字节(由 DLC 字段设置)。表 5-4 提供了一个示例,用于说明如何针对该行为对器件进行编程。
步骤 | 说明 | 寄存器 | 寄存器(十六进制) | 数据(十六进制) | 原始十六进制值 |
---|---|---|---|---|---|
0 | 禁用选择性唤醒 | SW_CONFIG_4 | 0×47 | 0×00 | 0×8F、0×00 |
1 | 写入所需的 WUF ID (0×123) | SW_ID1 | 0×30 | 0×00 | 0×61、0×00 |
2 | 写入所需的 WUF ID (0×123) | SW_ID2 | 0×31 | 0×00 | 0×63、0×00 |
3 | 写入所需的 WUF ID (0×123) | SW_ID3 | 0×32 | 0×04 | 0×65、0×04 |
4 | 写入所需的 WUF ID (0×123) | SW_ID4 | 0×33 | 0×8C | 0×67、0×8C |
5 | 将 ID 掩码写入 (0×001) SW_ID_MASK1 | SW_ID_MASK1 | 0×34 | 0×00 | 0×69、0×00 |
6 | 将 ID 掩码写入 (0×001) SW_ID_MASK2 | SW_ID_MASK2 | 0×35 | 0×00 | 0×6B、0×00 |
7 | 将 ID 掩码写入 (0×001) SW_ID_MASK3 | SW_ID_MASK3 | 0×36 | 0×00 | 0×6D、0×00 |
8 | 将 ID 掩码写入 (0×001) SW_ID_MASK4 | SW_ID_MASK4 | 0×37 | 0×00 | 0×6F、0×00 |
9 | 写入 ID 掩码 (0×001)、DLC (2) 和 DATA_MASK_EN (1) | SW_ID_MASK_DLC | 0×38 | 0×25 | 0×71、0×25 |
10 | 写入数据 0 (0×01) | DATA_0 | 0×39 | 0×01 | 0×73、0×01 |
11 | 写入数据 1 (0×80) | DATA_1 | 0×40 | 0×80 | 0×75、0×80 |
12 | 配置仲裁速度、FD:CAN 比率和 SW_FD_PASSIVE (1) | SW_CONFIG_1 | 0×44 | 0×D0 | 0×89、0×D0 |
13 | 将帧溢出设置为 255(唤醒前的最大错误数) | SW_CONFIG_3 | 0×46 | 0×FE | 0×8D、0×FE |
14 | 设置 SWCFG 位(配置完成) | SW_CONFIG_4 | 0×47 | 0×80 | 0×8F、0×80 |
15 | 启用选择性唤醒并进入睡眠状态 | MODE_CNTRL | 0×10 | 0×81 | 0×21、0×81 |