Other Parts Discussed in Thread: SYSCONFIG
器件型号: F29H850TU
主题: SysConfig 中讨论的其他器件
是否有任何文档介绍 CAN 模块配置参数以及如何在 SysConfig 工具中配置这些参数?
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.
Other Parts Discussed in Thread: SYSCONFIG
器件型号: F29H850TU
主题: SysConfig 中讨论的其他器件
是否有任何文档介绍 CAN 模块配置参数以及如何在 SysConfig 工具中配置这些参数?
.syscfg 文件以启动图形用户界面。 ti_drivers_config.c。 该工具还会执行有效性检查、以防止配置错误。 
很抱歉、我无法上传 SysConfig 示例的屏幕截图。
对于 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)、以确保网络上的所有节点都可以准确地接收和发送数据。 位时序的设置包括几个关键组成部分:
同步段始终为 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 的屏幕截图。
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 相同
什么是 标准 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 布局中没有重叠、因此设计人员需要确保情况确实如此。 这些部分的顺序没有要求、
SFID1(过滤器 ID 1) :设置要接受的 11 位 ID(例如) 0x4。
SFID2(过滤器 ID 2) :
为了将下一条消息存储到 RX 缓冲区、SPID1 是 ID、SPID2[5:0]定义 RX 缓冲区起始地址的偏移量。 “0"表示“表示缓冲器 0。
ID=4 的消息将存储在 RX 缓冲区 0 中。
没有问题。 未删除其他 CAN 模块的 CAN 初始化函数。