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.

[参考译文] TMS320F280037-Q1:我们是否有基于 sysconifg 的 MCAN 演示代码

Guru**** 2815985 points

Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1589028/tms320f280037-q1-do-we-have-the-mcan-demo-code-based-on-sysconifg

器件型号: TMS320F280037-Q1
Thread 中讨论的其他器件: SysConfigC2000WARE

您好的团队、

我向我的客户询问这个问题。

我们有基于 SysConfig 的 MCAN 演示吗、可实现范围滤波器、禁用 CAN-FD、比特率切换、比特率为 500kbps。 使用 FIFO 接收消息(范围过滤器)、阻塞模式

在我们的 SysConfig 中、似乎没有扩展筛选器

如果客户使用 RX 缓冲区、他们无法实现范围滤波器?
image.png 

4.客户尝试使用 SysConfig 实现 CAN 范围滤波器

它们设置如下:

image.png

image.png

image.png

image.png

image.png

它们使用滤波器元素 14 来实现测距仪并将数据存储到 FIFO 中、但会发现它们是否将操作模式设置为覆盖模式、它可以接收数据;但如果它们将其更改为阻塞模式、它们只能接收一个消息帧。 您可以帮助检查一下吗? 如果使用阻塞模式、是否需要进行任何其他操作? 我比较了他们的代码和 mcan_ex8_range_filter_receive 演示 ISR 代码之间的 ISR 操作、没有发现任何区别

 

BRS

Shuqing

 

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

    尊敬的 Shuqing:

    不、除了 SDK 中没有其他 MCAN 示例。

    2.在我们的 SysConfig 中、它似乎没有扩展过滤器

    我还注意到没有扩展 ID 过滤器配置。

    3.如果客户使用 RX 缓冲区、他们无法实现范围过滤器?

    范围过滤器仅适用于 FIFO。

    要将消息存储到专用 RX 缓冲区、应配置 SPEC = 0x7 和 SFID2 [10:9]=0x0。 SFID[5:0]是 RX 缓冲区起始地址的偏移

    您能帮您检查一下吗? 如果使用阻塞模式、是否需要执行任何其他操作?

    如果 RX FIFO 已满(Put 索引= Get 索引)、则不会再向 FIFO 写入任何消息。 您需要从 FIFO 中读出至少一条消息、然后对 F0AI 寄存器进行编程以更新 RXF0S 寄存器的 Get 索引。

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

    嗨、Qingjun

    我想开发一个基于 SysConfig 的演示、它使用数据位切换、标准过滤器: e2e.ti.com/.../mcan_5F00_ex8_5F00_range_5F00_filter_5F00_receive_5F00_syscfg.zip

    但我只能接收前两个帧、并且无法接收正确的帧 ID、您能帮助检查一下吗?

    BRS

    Shuqing

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

    尊敬的  Shuqing:

    我会看一下,然后明天给你我的评论。  

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

    尊敬的 Shuqing:

    我注意到 SDK API MCAN_readMsgRam () 不能直接用于读取 FIFO。 您需要编写另一个函数来检查索引和填充级别、然后使用此 API 从 FIFO 中读取所有缓冲区。

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

    您好、

    我重新编写了用于 MCAN FIFO 读取的函数。 我没有机会测试它。 请尝试一下。  

    e2e.ti.com/.../4745.mcan_5F00_fifo_5F00_receive.c

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

    尊敬的 Qingjun:

    我认为这不是 ISR 代码问题

    在我们的演示 mcan_EX8_RANGE_FILTER_RECEIVE 中、它不使用 syscfg、可以正常运行

    由于客户不使用 CAN-FD 和扩展 ID 过滤器、因此我更改了演示以配置 CAN 是经典 CAN、请使用标准 ID 过滤器: e2e.ti.com/.../mcan_5F00_ex8_5F00_range_5F00_filter_5F00_receive.zip

    此演示可以正常工作、当 ID 连续在 0x12~0x17 范围内时、可以接收帧

    但当我使用 SysConfig 进行 mcan 配置时、我无法收到数据帧: e2e.ti.com/.../1616.mcan_5F00_ex8_5F00_range_5F00_filter_5F00_receive_5F00_syscfg.zip

    我在代码运行时比较寄存器、刚好低于寄存器值存在差异:

    1. MCAN_HPMS、如果使用 syscofig、则值为 0x000000C0;如果我不使用、则值为 0x00000000

    MCAN_RXBC、但我不使用 RX 缓冲器、因此我认为没关系

    3. MCAN_TDCR、但我不启用 TDC、所以我认为没关系

    4. MCAN_RXESC

    当我将帧发送到 C2000 时、某些寄存器值会发生变化

    当我将代码加载到芯片并运行、而不将数据发送到 C2000 时、请使用 SysConfig、而不使用 SysConfig 项目代码 PSR_LEC 为 111

    然后将第一个数据帧发送到 C2000、 PSR_LEC 将在 SysConfig 工程中更改为 000、而不使用 SysConfig 工程

    但如果我不使用 SysConfig、IR 将更改为 0x00000070

    我再次将数据帧发送到 C2000、IR 将更改为 0x000000F0。 在此过程中、如果我不使用 SysConfig 配置 MCAN、IR 将始终为 0

    BRS

    Shuqing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在我们的演示中: mcan_ex8_range_filter_receive、它不使用 syscfg、可以正常运行

    如果 FIFO 中的缓冲区数量为 1、则原始演示将工作。 否则、它将无法正确读取来自 FIFO 的所有消息。 C2000ware 中没有这样的示例。

    2.MCAN_RXBC、但我不使用 RX 缓冲区、因此我认为没关系

    因为未使用专用的 RX 缓冲区、所以无关紧要

    我再次将数据帧发送到 C2000、IR 将更改为 0x000000F0

    设置了 RX FIFO1 新消息、水印和已满(配置中只有一个缓冲区)标志。 这意味着您已收到新消息。 它符合预期、对吧?

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

    尊敬的 Qingjun:

    1. SysConfig 中的以下值不正确、对吧? 这是由 SysConfig 错误引起的吗?

    [引用 userid=“45190" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1589028/tms320f280037-q1-do-we-have-the-mcan-demo-code-based-on-sysconifg/6148788

    SysConfig:0xC --> MSI=b11、这意味着消息存储在 FIFO 1 中。 这是预料之中的。

    无 SysConfig:0x00、未使用 FIFO

    [/报价]

    2.这是因为新的信息被接收但丢失了,但为什么会发生这种情况?

    设置了 RX FIFO1 新消息、水印和已满(配置中只有一个缓冲区)标志。 这意味着您已收到新消息。 这是预期的、对吧?

    BRS

    Shuqing

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

    在配置中、FIFO 大小为 1。 您是否尝试过 2 或 3 个 FIFO 大小?  

    不确定它是否为错误、但  无论如何都不使用 MSI=b11。