ZHCAA54B January   2022  – June 2022 TCAN1145-Q1 , TCAN1146-Q1

 

  1.   摘要
  2.   商标
  3. 1简介 – 局部联网
  4. 2局部联网应用
    1. 2.1 工作模式和局部联网
    2. 2.2 睡眠模式和局部联网
    3. 2.3 唤醒帧
    4. 2.4 传统高速 CAN、CAN FD 和 PN
    5. 2.5 混合网络信息
  5. 3CAN 帧和唤醒帧
    1. 3.1 CAN 帧结构
    2. 3.2 唤醒帧
      1. 3.2.1 ID 字段匹配
      2. 3.2.2 数据长度代码 (DLC) 匹配
      3. 3.2.3 数据匹配
      4. 3.2.4 CRC 匹配
      5. 3.2.5 Acknowledge 字段匹配
    3. 3.3 错误计数器
    4. 3.4 选择性唤醒 FD 被动
  6. 4选择性唤醒寄存器
  7. 5配置局部联网功能
    1. 5.1 有效 CAN 消息 ID 示例
    2. 5.2 有效数据示例
  8. 6总结
  9. 7参考文献
  10. 8修订历史记录

有效 CAN 消息 ID 示例

在本示例中,假设 WUF(唤醒帧)ID 将是标准 ID(11 位)0×123。以下步骤概述了针对该行为配置器件,然后将该器件置于睡眠状态所需的过程。请注意,启用选择性唤醒后,除非达到某种类型的错误阈值(例如解码错误),否则只有特定或所需的 WUF 才能唤醒器件。
表 5-1 有效 CAN 消息 ID 示例
参数 示例值
所需的 WUF ID 标准 ID(11 位)0x123
ID 掩码 0x000(ID 必须完全匹配,1 = 忽略,0 = 必须匹配)
总线仲裁速率/CAN FD 速率 500kbps/2Mbps
忽略 CAN FD
WUF 数据有效负载 忽略

对示例参数值进行分解后,WUF ID 为 0×123。这是需要与接收到的消息 ID 相匹配才能唤醒的特定 ID。ID 掩码描述了 ID 中的哪些位必须匹配。这是一个被忽略或必须匹配位。这意味着当 ID 掩码中的某个位设置为 1 时,将不会检查指定的位是否匹配。为了精确匹配特定的 ID,ID 掩码应配置为全 0。本例中 CAN FD 总线的仲裁和数据速率分别为 500kbps 和 2Mbps。该理论总线是 CAN FD 总线,因此我们希望做到在某些节点处于睡眠状态时产生常规 CAN FD 流量。SW_PASSIVE 位用于描述局部联网 IP 如何处理 CAN FD 帧的接收。可以将器件配置为将其视为错误,当错误足够多时,器件将唤醒并设置错误标志。

该示例将 ID 掩码设置为全 0,因此 ID 必须完全匹配。

还可以将器件配置为简单地忽略所有 CAN FD 帧,这不会影响器件唤醒或任何错误设置。在本示例中,我们不关心数据有效负载。这意味着任何具有标准 ID 0×123 和任何有效负载的传统 CAN 消息都能唤醒器件。

图 5-1 示例 1:ID 匹配
注: 唤醒帧必须是传统 CAN 消息(FDF 位 = 0),但这并不要求总线仅在传统 CAN 模式下运行。CAN FD 可以用于常规数据传输,但 WUF 必须是传统 CAN 消息。

务必注意,寄存器的写入顺序很重要。具体而言,应在设置选择性唤醒使能位之前配置所有选择性唤醒寄存器。这是因为对选择性唤醒配置寄存器的任何写入都会清除 SWCFG 位 (0x47)。如果未设置 SWCFG,则不会启用选择性唤醒,即使设置了主选择性唤醒启用也是如此。最佳做法是确保该寄存器是配置期间最后一个写入的寄存器。表 5-2 显示了为器件设置该示例 WUF 配置时应发生的每个 SPI 事务。给出了寄存器地址、十六进制数据和 SPI 消息的原始十六进制值。

表 5-2 有效 CAN 消息 ID 编程
步骤 说明 寄存器 寄存器(十六进制) 数据(十六进制) 原始十六进制值
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) SW_ID_MASK1 SW_ID_MASK1 0×34 0×00 0×69、0×00
6 将 ID 掩码写入 (0) SW_ID_MASK2 SW_ID_MASK2 0×35 0×00 0×6B、0×00
7 将 ID 掩码写入 (0) SW_ID_MASK3 SW_ID_MASK3 0×36 0×00 0×6D、0×00
8 将 ID 掩码写入 (0) SW_ID_MASK4 SW_ID_MASK4 0×37 0×00 0×6F、0×00
9 写入 ID 掩码 (0) 和 DATA_MASK_EN (0) SW_ID_MASK_DLC 0×38 0×00 0×71、0×00
10 配置仲裁速度、FD:CAN 比率和 SW_FD_PASSIVE (1) SW_CONFIG_1 0×44 0×D0 0×89、0×D0
11 将帧溢出设置为 255(唤醒前的最大错误数) SW_CONFIG_3 0×46 0×FE 0×8D、0×FE
12 设置 SWCFG 位(配置完成) SW_CONFIG_4 0×47 0×80 0×8F、0×80
13 启用选择性唤醒并进入睡眠状态 MODE_CNTRL 0×10 0×81 0×21、0×81