This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [参考译文] 【常见问题解答】F29H850TU:CAN 模块配置

Guru**** 2867080 points

Other Parts Discussed in Thread: SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1624107/faq-f29h850tu-can-module-configuration

器件型号: F29H850TU
主题: SysConfig 中讨论的其他器件

是否有任何文档介绍 CAN 模块配置参数以及如何在 SysConfig 工具中配置这些参数?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mahmoud:

    我已经邀请了 MCAN 专家、他们应该会在 1-2 天内回复您。

    此致、

    Delaney

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    德拉尼·伍德沃德 

    好的、谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mahmoud:

    我会写一个总结,然后在稍后发布。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你会在这里发帖吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    基本分步配置
    1. 打开 SysConfig 文件:  在项目中、双击该 .syscfg 文件以启动图形用户界面。
    2. 导航至 MCAN 模块:  在 SysConfig 窗口的左侧面板中、您将看到可用外设列表。 选择  MCAN  在“来文“之下
    3. 配置基本设置:  主面板将显示所有配置选项。 您可以设置如下参数:
      • 启用/禁用  方法。
      • 使能 MCAN 时钟。
      • Pin Mux  用于 MCAN-A(或其他实例)TX 和 RX 引脚(例如 GPIO 64 和 65)。
      • 标称比特率和数据比特率  (例如,分别为 1Mbps 和 2Mbps)。
    4. 设置高级参数:  根据应用的需要配置其他设置:
      • 消息 RAM 段和存储器分配。
      • 扩展 ID 和掩码。
      • 中断配置。
    5. 选择 CPU 内核:  F29H85x 器件支持多个内核。 时钟和 PinMux 配置必须在 CPU1 上完成。  
    6. 生成代码:  进行选择时、SysConfig 工具会在如所示的文件中自动生成相应的 C 代码 ti_drivers_config.c。 该工具还会执行有效性检查、以防止配置错误。

    很抱歉、我无法上传 SysConfig 示例的屏幕截图。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    MCAN 时钟在 MCANA 时钟的 Clock Tree:

    1.选择时钟源:AUXCLKIN、SYSCLK 和 PLLCLK

    2.选择 CLK 分频器:MCANxCLKDIV

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于 Init Parameters 设置:

    •启用 CAN FD 模式: 在 CAN 应用中、需要启用灵活数据模式。

    •启用比特率切换: 通过启用该功能、MCAN 以更高的速率(而不是仲裁速率)发送数据。 该功能仅在启用 CAN FD 模式时有效。

    •启用环回模式: 发送的消息变为收到的消息。 这使用户能够在不使用 CAN 收发器的情况下监控 CAN_TX 引脚上的 CAN 消息。

    •启用传输暂停: 在下一次传输之前、暂停两个 CAN 位时间。 传输暂停功能适用于 CAN 消息 ID 是特定的且无法轻松更改的 CAN 网络。  

    •启用边缘过滤: 为了检测硬同步的边沿、需要两个连续的显性时间量。 启用该功能是为了确保节点可以准确检测信号边沿、并在数据位时间较长的情况下执行硬同步、从而提高 CAN 总线通信的稳定性和可靠性。

    •启用协议异常处理: 检测保留用于未来协议扩展的位。

    •消息只会发送一次: 如果禁用了自动重新传输、则当出现传输错误、NACK 或 MCAN 模块丢失仲裁时、MCAN 模块不再重新传输。

    •启用唤醒请求: 启用 MCAN 模块在发生 CAN RXD 活动时唤醒。

    •启用自动唤醒: 启用 MCAN 模块自动清除 MCAN CCCR.INIT 位、从而在启用的唤醒请求时完全唤醒 MCAN。

    •启用发送器延迟补偿: 启用对 CAN TX 和 CAN RX 之间的延迟进行补偿。

    消息 RAM 看门狗预加载值: RAM 看门狗监测消息 RAM 的 READY 输出。 消息 RAM 访问会以配置的值启动消息 RAM 看门狗计数器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于 发送器延迟补偿 (TDC):

    TDC 是一种用于补偿由 CAN FD 系统中收发器环路延迟引起的延迟的机制。 该延迟可能会阻止节点在高比特率数据传输期间在采样点执行有意义的位错误检查。 具体来说、TDC 会在数据阶段引入二次采样点(二次采样点,即 SSP)、其中传输的位会在考虑延迟后与接收的位进行比较。 这样可确保正确检测和处理位错误。

    当比特率较高时、需要 TDC、导致数据位短和明显的循环延迟。 这些延迟可能导致节点错过正确的采样点以进行位错误检测。 TDC 仅在数据阶段有效、不影响仲裁阶段。

    通过使用 TDC、数据段的位时间可以短于标称位时间、从而实现更高的数据速率、而不会影响错误检测。

    •TDC 滤波器窗口长度(周期数): 该过滤器功能定义了 SSP 位置的最小值、以避免接收到的 FDF 位内的显性干扰在接收到的 res 位的下降沿之前结束延迟补偿测量(从而导致过早采用 SSP 位置)的情况。

    •TDC 偏移(周期数): 该偏移用于调整接收位内 SSP 的位置(例如,数据阶段中位时间的一半)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于 位时序参数:

    CAN 总线中的位时序是指 CAN 通信中用于同步和控制数据传输的关键参数。 这会将每个位的时间划分为多个时间周期(称为 Time Quanta 或 TQ)、以确保网络上的所有节点都可以准确地接收和发送数据。 位时序的设置包括几个关键组成部分:

    • 波特率预分频器:NBRP 或 DBRP
    • 相位缓冲器段 1 +传播延迟(采样点之前的时间段):PBSeg1 + PropSeg):NTSEG1 或 DTSEG1
    • 相位缓冲器段 2(采样点之后的时间段 PBSeg2) :NTSEG2 或 DTSEG2
    • 跳转宽度范围: NSJW 或 DSJW

    同步段始终为 1TQ。 位时序在数据传输中的作用反映在同步和一致性、数据完整性、容错、数据速率和网络性能以及抗干扰能力等方面。

     采样点 (SP) 为 (1 +SEG1)/(1+SEG1+SEG2)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    针对消息 RAM 配置

    MCAN 模块有一个消息 RAM。 消息 RAM 的主要用途是存储:

    1.消息 ID 过滤器元素

    2.发送消息

    3. TX 事件元素

    4.收到的消息

    本应用手册介绍了消息 RAM 大小配置为 4KB 大小、宽度为 32 位。

    1.消息 ID 过滤器元素

    标准和扩展 ID 过滤器配置

    •标准 ID 过滤器列表起始地址:每个标准 ID 过滤器接收 4 个消息 RAM 地址。

    •标准 ID 过滤器的数量:最多可以为 11 位标准 ID 配置 128 个过滤器元素。  

    标准 ID 过滤器配置 (在 RX MSG RAM 段之后)→过滤器元素配置:所有已启用的过滤器元素都用于标准帧的接受过滤。 接受过滤在第一个匹配的已启用过滤器元素处或到达过滤器列表末尾时停止。  此参数的选项如下所示。

    –0x0:禁用过滤器元素

    –0x1:如果过滤器匹配、则存储在 Rx FIFO 0 中

    –0x2:如果过滤器匹配、则存储在 Rx FIFO 1 中

    –0x3:如果过滤器匹配、则拒绝 ID

    –0x4:如果过滤器匹配、则设置优先级

    –0x5:如果过滤器匹配、则设置优先级并存储在 FIFO 0 中

    –0x6:如果过滤器匹配、则设置优先级并存储在 FIFO 1 中

    –0x7:存储到 Rx 缓冲器中、忽略标准滤波器类型的配置

    •标准 ID 过滤器配置→过滤器类型:标准过滤器类型配置。 此参数的选项如下所示。

    –0x0:从 SFID1 到 SFID2 的范围过滤器 (SFID2≥SFID1)

    –0x1:用于 SFID1 或 SFID2 的双 ID 过滤器

    –0x2:传统过滤器:SFID1 =过滤器;SFID2 =掩码

    –0x3:过滤器元素已禁用

    •标准 ID 过滤器配置→过滤器 ID 1 (SFID1):标准过滤器 ID 1。 当过滤 Rx 缓冲区时、该字段定义要存储的标准消息的 ID。 接收到的标识符必须完全匹配、并且不使用掩码机制。

    •标准 ID 过滤器配置→过滤器 ID 2 (SFID2):标准过滤器 ID 2。 根据过滤器元素配置、此 ID 具有不同的定义。 如果过滤器元素配置为 0x1 至 0x6、则 SFID2 是标准 ID 过滤器元素的第二个 ID。 如果过滤器元素配置为 0x7、则 SFID2 是 Rx 缓冲区的过滤器

    扩展 ID 过滤器的配置如下所示:

    •扩展 ID 过滤器列表起始地址:每个扩展 ID 过滤器接收 8 个消息 RAM 地址。

    •扩展 ID 过滤器数量:最多可以为 29 位扩展 ID 配置 64 个过滤器元素。  

    扩展 ID 过滤器配置 (在 RX MSG RAM 段之后)→过滤器元素配置:所有已启用的过滤器元素都用于扩展帧的接受过滤。 接受过滤在第一个匹配的已启用过滤器元素处或到达过滤器列表末尾时停止。

    –0x0:禁用过滤器元素–0x1:如果过滤器匹配、则存储在 Rx FIFO 0 中

    –0x2:如果过滤器匹配、则存储在 Rx FIFO 1 中

    –0x3:如果过滤器匹配、则拒绝 ID

    –0x4:如果过滤器匹配、则设置优先级

    –0x5:如果过滤器匹配、则设置优先级并存储在 FIFO 0 中

    –0x6:如果过滤器匹配、则设置优先级并存储在 FIFO 1 中

    –0x7:存储到 Rx 缓冲区中或作为调试消息、忽略扩展过滤器类型的配置

    •扩展 ID 过滤器配置→过滤器类型:扩展过滤器类型配置。 此参数的选项如下所示。

    –0x0:从 EFID1 到 EFID2 的范围过滤器 (EFID2≥EFID1)

    –0x1:用于 EFID1 或 EFID2 的双 ID 过滤器

    –0x2:传统过滤器:EFID1 =过滤器、EFID2 =掩码

    –0x3:从 EFID1 到 EFID2 的范围过滤器 (EFID2≥EFID1)、未应用扩展 ID 和掩码

    •扩展 ID 过滤器配置→过滤器 ID 1 (EFID1):扩展过滤器 ID 1。 扩展 ID 过滤器元素的第一个 ID。 当过滤 Rx 缓冲区时、该字段定义要存储的扩展消息的 ID。

    •扩展 ID 过滤器配置→过滤器 ID 2 (EFID2):扩展过滤器 ID 2。 该 ID 具有不同的定义、具体取决于扩展过滤器元素配置。 如果扩展过滤器元素配置为 0x1 至 0x6、则 EFID2 是扩展 ID 过滤器元素的第二个 ID。 如果扩展过滤器元素配置为 0x7、则 EFID2 是 Rx 缓冲区的过滤器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于 TX MSG RAM:

    Tx 缓冲区部分可配置为保存专用 Tx 缓冲区以及 Tx FIFO 和 Tx 队列。 当 Tx 缓冲区部分由专用 Tx 缓冲区以及 Tx FIFO 和 Tx 队列共享时、专用 Tx 缓冲区从 Tx 缓冲区部分的开头开始、后跟分配给 Tx FIFO 或 Tx 队列的缓冲区。

    Tx 缓冲模式、Tx FIFO 模式和 Tx 队列模式之间的差异:

    Tx 缓冲模式: 专用 Tx 缓冲区用于在主机 CPU 完全控制下的消息传输。

    Tx FIFO 模式: Tx FIFO 允许从不同的 Tx 缓冲区发送具有相同消息 ID 的消息、其发送顺序为这些消息写入 Tx FIFO 的顺序。

    TX 队列模式: 存储在 Tx 队列中的消息从优先级最高的消息(最低消息 ID)开始发送。

    •Tx 缓冲区起始地址: 消息 RAM 中 Tx 缓冲区的起始地址。

    •专用发送缓冲区的数量: 定义将多少个元素配置为专用 Tx 缓冲区。

    TX FIFO 元素数量 :定义将多少元素配置为 Tx FIFO 或 Tx 队列。

    •Tx FIFO 运行模式: 定义 Tx FIFO 模式或 Tx 队列模式。

    •Tx 缓冲区元素大小: 定义 Tx 缓冲区数据字段大小。 如果 Tx 缓冲区元素的数据长度代码 (DLC) 配置为一个高于 Tx 缓冲区数据字段大小的值、则未由 Tx 缓冲区定义的字节将作为 0xCC(填充字节)传输。

    •Tx 事件 FIFO 起始地址: Tx 事件 FIFO 存储有关发送的消息的信息。 为了支持 Tx 事件处理、消息 RAM 实现了 Tx 事件 FIFO 段。 通过读取 Tx 事件 FIFO、主机 CPU 按照消息发送的顺序获取该信息。 在 CAN 总线上传输消息后、消息 ID 和时间戳存储在 Tx 事件 FIFO 元素中。 为了将 Tx 事件链接到 Tx 事件 FIFO 元素、发送的 Tx 缓冲区中的消息标记被复制到 Tx 事件 FIFO 元素中。

    •Tx 事件 FIFO 大小 :最多可配置 32 个 Tx 事件 FIFO 元素。

    •TX 事件 FIFO 水线的级别 INT 级别: 定义 Tx 事件 FIFO 填充级别阈值。 可以配置 Tx 事件 FIFO 水线、以避免 Tx 事件 FIFO 溢出。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于 RX MSG RAM:

    消息 RAM 中最多可配置 64 个 Rx 缓冲区和两个 Rx FIFO。 每个 Rx FIFO 段可配置为存储最多 64 条接收到的消息。 可以配置元素大小来存储具有最多 64 字节数据字段的 CAN FD 消息。

    •RX FIFO0 和 RX FIFO1 起始地址:定义消息 RAM 中 Rx FIFO 的起始地址。

    •RX FIFO0 和 RX FIFO1 元素的数量:每个 Rx FIFO 可以配置为存储最多 64 条接收到的消息。

    •RX FIFO0 和 RX FIFO1 水线:Rx FIFO 水线可用于防止 Rx FIFO 溢出。 如果 Rx FIFO 填充级别达到 Rx FIFO 水线、则设置中断标志 MCAN_IR.RF0W/MCAN_IR.RF1W。

    •RX FIFO0 和 RX FIFO1 运行模式:

    –Rx FIFO 阻塞模式:Rx FIFO 阻塞模式是 Rx FIFO 的默认运行模式。 如果达到 Rx FIFO 已满状态、则在至少读出一条消息并且 Rx FIFO Get 索引递增之前、不会再将任何消息写入相应的 Rx FIFO。

    –Rx FIFO 覆盖模式:达到 Rx FIFO 已满条件时、FIFO 的下一条已接受消息将覆盖最早的 FIFO 消息。

    •RX FIFO0 和 RX FIFO1 元素大小:定义 Rx FIFO 元素大小。

    •Rx 缓冲区起始地址:定义消息 RAM 中 Rx 缓冲区的起始地址。

    •Rx 缓冲区元素大小:定义 Rx 缓冲区元素大小。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于 其他内核配置:

    •启用其他内核配置: 启用或禁用时间戳和处理不匹配帧等其他功能。

    •启用总线监控模式: 在总线监控模式下、MCAN 模块能够接收有效数据和远程帧、但无法开始传输。 MCAN 模块仅在 CAN 总线上发送隐性位。 如果 MCAN 模块需要发送显性位(ACK 位,过载标志,活动错误标志)、则该位会在内部重新路由、以便 MCAN 模块监控该显性位。 CAN 总线可以保持隐性状态。 总线监控模式可用于分析 CAN 总线上的流量、而不会因显性位的传输而影响总线。

    •启用受限 CAN 操作: 将正常 CAN 运行模式定义为受限运行模式。 在受限运行模式下、CAN 节点能够接收数据和远程帧并对有效帧进行确认、但节点不会发送数据帧、远程帧、活动错误帧或过载帧。 如果出现错误情况或过载情况、节点不会发送显性位;相反、节点等待出现总线空闲条件、以重新与 CAN 通信同步。 当 Tx 处理程序无法及时从消息 RAM 读取数据时、会自动进入受限运行模式。 要退出受限运行模式、主机 CPU 必须重置 MCAN_CCCR.ASM 位。 该模式可用于需要适应不同 CAN 比特率的应用。 在这种情况下、应用会测试不同的比特率、并在节点接收到有效帧后退出受限运行模式。

    •时间戳预分频器值 :MCAN 模块集成了一个 16 位绕回计数器、用于生成时间戳。 时间戳计数器预分频器 MCAN_TSCC.TCP 字段可配置为以 CAN 位时间 (1-16) 的倍数对计数器进行计时。 在帧接收或发送开始时、会捕获计数器值并将其存储到 Rx 缓冲器、Rx FIFO 或 Tx 事件 FIFO 元素的时间戳部分中。

    •时间戳计数器值: 将时间戳计数器值配置为 0x0、来自内部 16 位计数器或来自外部时间戳。

    •超时计数器源选择: MCAN 模块集成了一个 16 位超时计数器。 超时计数器用于为 Rx FIFO 0、Rx FIFO 1 和 Tx 事件 FIFO 消息 RAM 元素指示超时状态。 在连续模式下、计数器立即以 MCAN_TOCC.TOP 字段配置的值重新启动。 如果超时计数器由 FIFO 之一控制、则空 FIFO 会将计数器预设为 MCAN_TOCC.TOP 字段配置的值。 存储第一个 FIFO 元素时、开始向下计数。

    •超时计数器的起始值: 定义超时持续时间。 •启用超时计数器:启用超时功能。

    •拒绝远程扩展帧: 过滤或拒绝所有具有 29 位扩展 ID 的远程帧。

    •拒绝远程帧标准: 过滤或拒绝所有具有 11 位标准 ID 的远程帧。

    •接受不匹配的扩展帧: 定义如何处理接收到的具有 29 位 ID 且与过滤器列表中任何元素均不匹配的消息。

    •接受不匹配的帧标准: 定义如何处理接收到的具有 11 位 ID 且与过滤器列表中任何元素均不匹配的消息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于 中断配置:

    MCAN 中断

    –启用 MCAN 中断: MCAN 内核有 2 条中断线路和 30 个内部中断源。 每个源都可以配置为驱动两条中断线路之一。 MCAN 内核提供两个中断请求中断线路 0 和中断线路 1。

    –启用 MCAN 线路中断 :定义应用程序中使用的中断线路。

    –用于触发输入 Line0 的中断: 定义将哪些中断源分配给中断线 0。

    –用于触发输入行 1 的中断: 定义将哪些中断源分配给中断线 1。

    PinMux 资格认证:

    TX 引脚和 RX 引脚:在专用引脚上配置数字 IOMUX 特性。 例如内部上拉或下拉电阻器、反相输出、开漏输出等 我建议针对 CAN 应用保留 IOMUC 配置的默认配置。

    PinMux 配置:

    –MCAN 外设:F29x 支持多达 6 个 MCAN 模块。 用户可以在此处选择配置哪个 MCAN 模块。

    –TX/RX 引脚:为 MCAN TX 和 RX 功能配置 GPIO 引脚。

    很抱歉、我无法发布我的屏幕截图。 获得许可后、我会添加用于 MCAN 的 SysConfig GUI 的屏幕截图。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    配置方法  位时序参数?
    如何为标称值 和数据配置以下参数?

    波特率预分频器 (NBRP)

    采样点之前的时间段 (NTSEG1 Tq)

    采样点之后的时间段 (NTSEG2 Tq)  

    (Re) 同步跳转宽度范围 (NSJW Tq)  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1.确定 MCAN 时钟:通常我使用 40MHz (SYSCLK/5) 或 50MHz (SYSCLK/5)

    2.总计量程 (SYNC + NTSEG1+1 + NTSEG2+1 )= MCAN_CLK /((BRP+1)*比特率)、其中同步段始终为 1

       NTSEG1 + NTSEG2 = MCAN_CLK/((BRP+1)*比特率)- 3.      -->  MCAN_CLK/(BRP+1)*bitrate) 必须为整数

    3、 对于稳健的 CAN FD 网络、建议的采样点 对于标称(仲裁)阶段通常为 80%、对于数据阶段通常为 70%。 而对于高速数据、范围可达 62%–85%、对于标称相位、范围可达 80%–85%。 我使用 80%/70%或 80%/80%来平衡网络传播延迟和振荡器容差。 在应用中、CAN 网络中所有节点之间的一致设置至关重要。

    如果使用 80%/70%、则对于标称相位 (NTSEG2+1)/(NTSEG1+NTSEG2+3)= 20%

                     对于标称相位 (NTSEG2+1)/(NTSEG1+NTSEG2+3)= 30%  

    您可以从上面的公式中找到 BRP、NTSEG1、NTSEG2 的正确数字(整数)。

    4.您可以设置  NSJW 与 NTSEG2 相同

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     QJ Wang 

    什么是 标准 ID 过滤器列表起始地址?
     标准 ID 过滤器的数量和标准过滤器元素的数量有什么区别?
    如何配置 RAM 中每个段的起始地址、例如标准 ID 滤波器配置、Rx 缓冲区、Tx 缓冲区等?
    还有一种奇怪的行为:当我将  CAN 0 的扩展过滤器元素增加超过 1 个时,其他的 init 函数定义可以从 board.c fie !!中删除。 所以它会导致链接错误、这种行为的原因是什么? 如何解决?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    什么是 标准 ID 过滤器列表起始地址?

    SID 滤波器允许系统设计人员根据 ID 拒绝或接受 CAN 消息。 接受数据包时、可以选择在 3 个可用接收 FIFO /缓冲器中哪一个将其发送到(RX FIFO 0/1 或 RX 缓冲器)。

    起始地址是 MCAN 消息 RAM 中的位置(偏移量)。 通常、我使用 0 作为标准 ID 过滤器列表的起始地址。 您可以定义一个或多个过滤器。 例如、一个过滤器用于特定 ID (0x123)、另一个过滤器用于消息 ID 范围 (0x000 ~ 0x012)。  对于范围和双 ID 过滤器、传入 CAN 消息的 ID 必须与值 SFID1 和 SFID2 匹配(或在范围内)。 传统过滤器使用过滤器和掩码设置、这允许设计人员匹配在 ID 中设置了所需位的所有 ID。

    标准过滤器元素配置描述了传入 CAN 消息与 SFT(以及 SFID1 和 SFID2 中的值)所述的过滤规则匹配时要执行的操作。 有 8 个
    可供匹配的选项。

    如何配置 RAM 中每个段的起始地址、例如标准 ID 滤波器配置、Rx 缓冲区、Tx 缓冲区等?

    消息 RAM 是 MCAN 用于发送和接收 CAN 消息的存储器块。 该存储器的布局由系统设计人员决定。  有 7 个段可在消息 RAM 存储器空间中使用。 所有这些都是可选的、段的顺序无关紧要。

    当前 SysConfig 不包含自动计算起始地址的功能。 您可以手动操作。  

    务必要认识到、这些部分中的每个部分都是可选的。 系统设计人员可以选择他们需要哪些段、以及每个段需要多少个元件。 MCAN 不会检查配置寄存器以确保 RAM 布局中没有重叠、因此设计人员需要确保情况确实如此。 这些部分的顺序没有要求、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您需要 确定每个元素中有多少个字节(来自数据表)、 并确定每个段使用多少个字节。

    对于标准 ID 过滤器:元素大小为 4 个字节

    对于扩展 ID 过滤器:元素大小为 8 个字节

    Rx FIFO (0/1):元素大小为 8 +数据大小

    TX/RX 缓冲区:元素大小为 8 +数据大小

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我将  CAN 0 的扩展过滤器元素增加超过 1 个时、可以从 board.c fie 中删除其他函数的 init 函数定义!! 所以它会导致链接错误、这种行为的原因是什么? 如何解决?

    我认为“扩展 ID 过滤器数量“不够大。  “扩展 ID 过滤器数量“应与“扩展过滤器元素“中的值一致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ Wang 

    我看到了 TI 示例“mcan_ex1_loopback_interrupts"。“。 我看到标准 ID 过滤器数不等于标准过滤器元素为什么?!



    另外、我注意到该示例给出了标准滤波器 ID 1 = 4、但在代码 (4 << 18) 中为什么这样做?




  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     我认为默认值为 1:在 board.c 中定义了一个标准滤波器元件 如果您将其更改为 0、则标准过滤器元素(如下)将消失。

    正如我所说的、滤芯的数量应该与标准滤芯的数量一致。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ Wang 

    为什么标准过滤器 ID 1 配置为 4 并将代码配置为 (4<< 18)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     QJ Wang 

    德拉尼·伍德沃德 

    请尽快提供此信息。
    为什么环回示例的 ID 为 0x4 << 18、SysConfig 为 SIDF1 4?

    为什么标准过滤器 ID 2 = 0 而不是 4?


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ Wang 

    德拉尼·伍德沃德 

    即使标准 ID 过滤器的编号与标准过滤器元素一致、也 可以从 board.c 中删除其他的 init 函数定义
    那么、如何解决该问题呢?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ Wang 

    德拉尼·伍德沃德 

    对于 RAM 配置:

    如果 RX FIFO 的元素大小= 8 +数据大小、则具有 64 个元素的 FIFO0、每个元素为 64 个字节、因此 size =(8 + 64)* 64 = 4608 是否正确?!
    RX/TX 缓冲器也是如此!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mahmoud:

    在 CAN FD 实现中、扩展 ID(29 位)放置在第[28:0]位中、标准 ID 放置在第[28:18]位中。 请参阅器件 TRM。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    SFID1(过滤器 ID 1) :设置要接受的 11 位 ID(例如) 0x4

    SFID2(过滤器 ID 2)

    • 如果使用 MASK: 设置掩码值(1 =必须匹配、0 =忽略)。
    • 如果使用 range: 设置 ID 范围的上限

    为了将下一条消息存储到 RX 缓冲区、SPID1 是 ID、SPID2[5:0]定义 RX 缓冲区起始地址的偏移量。 “0"表示“表示缓冲器 0。

    ID=4 的消息将存储在 RX 缓冲区 0 中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它支持多达 64 个 RX 缓冲器。 RX 缓冲区的数量受数据大小、其他部分(FIFO,过滤器)的限制。 消息 RAM 的总大小为 4KB。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ Wang 

    该问题呢?
    即使  “No of Standard ID Filters“与“Standard Filter Elements“中的值一致、其他的 init 函数也可以在 board.c 文件中删除?
    当标准过滤器元素或扩展过滤器元素增加到 1 以上时会出现此问题

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 board.c 文件中删除了其他可用于初始化的函数?

    这话什么意思? “其他 CAN“是否表示另一个 CAN 模块:CANB 或 CANC 等? 不同 CAN 模块的配置位于不同函数中、例如 myCAN0_init () 和 myCAN1_init ()。 CANA 的配置不应影响 CANB 的配置。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ Wang 
    可以、当 CAN0 的标准过滤器元素或扩展过滤器元素超过 1 时、 myCAN1_init () 和 myCAN2_init () 函数定义从 board.c 文件中删除

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     没有问题。 未删除其他 CAN 模块的 CAN 初始化函数。

    e2e.ti.com/.../1185.untitled.syscfg