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.

[参考译文] TDA4VM:TDA4 CAN 问题

Guru**** 1949000 points
Other Parts Discussed in Thread: DRA821U, TDA4VM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1105443/tda4vm-tda4-can-issue

器件型号:TDA4VM
主题中讨论的其他器件:DRA821UDRA821

你(们)好

我的客户正在其 PCB 上测试 TDA4 CAN。

他们已经验证了 PCB 的 DRA821U 上的 CAN 总线。 它运行良好。

但是、它们将代码从 DRA821U 迁移到 TDA4。它们发现 CAN TX 没有信号、而 CAN 环路没有信号。

有什么意见? (他们正在测试 SDK8.2)

谢谢。

BR RIO

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

    在 PCB 中移植 TDA4并使用 IPC 示例代码在 MCU1_0中测试 MCU_MCAN0。

    1.删除 Linux 设备树(DTS)中与 MCAN 相关的项目。

    2.在 RTOS 引脚多路复用设置中添加了 EN 和 STB 引脚设置。

    请参考示例代码:pdk/packages/ti/CSL/example/mcanEvmLoopback/mcan_evm_loopback_app_main_k3.c 来测试 CAN 消息。

    静态 Int32_t App_mcanRegisterIsr (uint32_t mcanInstAddr)

       int32_t configStatus = STW_SOK;

       /*从 MCU R5运行代码*/
       /* MCU MCAN Inst 0 */
       configStatus = App_mcanRegisterInterrupt (MCU_MCAN0_TX_INT_NUM、&App_mcanIntr0ISR);
       configStatus += App_mcanRegisterInterrupt (MCU_MCAN0_RX_INT_NUM、&App_mcanIntr1ISR);
       CONFIGStatus += App_mcanRegisterInterrupt (MCU_MCAN0_TS_INT_NUM、&App_mcanTSInterrISR);

       if (STW_SOK!= CONFIGStatus)
       {
           UART_printf ("crossbar/Interrupt Configuration failed.\n");
       }
       其他
       {
           UART_printf ("crossbar/中断配置完成。\n"\});
       }

       返回 CONFIGStatus;

    我们遇到了以下问题:

    调用 app_mcanLpbkTest()可以环回测试失败,因为 TX/RX ISR 不会触发。 (对于其他正常测试、CAN TX/RX ISR 也不会触发。)

    它将在 while 环路上停止。

               while (gMcanIsrIntr1Flag)
               {}
               gMcanIsrIntr1Flag = 1U;

    为什么 TX/RX ISR 不触发、您能提供一些建议吗?

    谢谢。

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

    您好、Jay、

    您在注册中断时是否遇到错误? 或者、这是否已成功注册、但不知如何未被触发?

    此问题仅适用于 MCU MCAN0还是 MCU MCAN1?

    此致

    Karan

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

    您好、Karan、

    1.注册成功,但不会被触发。

    MCU MCAN0和 MCU MCAN1都存在此问题。

    谢谢。

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

    您好、Karan:

    有任何反馈吗?

    Jay 需要尽快解决这个问题。

    BR RIO

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

    您好、Rio、Jay、

    1.当您从 DRA821迁移到 TDA4VM 时、是否处理了中断编号?

    2.能否检查 MCAN IP 原始中断状态? 检查寄存器 MCAN_IR?

    可能存在 MCAN IP 的中断未正确连接到 R5F 中断的问题、但即使在这种情况下、MCAN_IR 也应提供正确的状态。

    3.您是否能够在 TDA4VM EVM 上运行此示例? 回送测试、至少从 CAN 的角度来看、不应依赖于电路板、因为在内部回送测试期间收发器不会出现在图片中。

    此致

    Karan

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

    您好、Karan、

    DRA821和 TDA4VM 相同、使用以下中断编号:

    #define MCU_MCAN0_TX_INT_NUM (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_MCAN0_MCANSS_MCAN_LVL_INT_0)
    #define MCU_MCAN0_RX_INT_NUM (CSL_MCU_R5FSS0_CORE0_INTR_MCU_MCAN0_MCANSS_MCAN_LVL_INT_1)
    #define MCU_MCAN0_TS_INT_NUM (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_MCAN0_MCANSS_EXT_TS_ROL_INT_0)

    #define MCU_MCAN1_TX_INT_NUM (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_MCAN1_MCANSS_MCAN_LVL_INT_0)
    #define MCU_MCAN1_RX_INT_NUM (CSL_MCU_R5FSS0_CORE0_INTR_MCU_MCAN1_MCANSS_MCAN_LVL_INT_1)
    #define MCU_MCAN1_TS_INT_NUM (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_MCAN1_MCANSS_EXT_TS_ROL_INT_0)

    2. 什么是"MCAN IP 原始中断状态"、您能更详细地解释一下还是举个例子?

    3.我之前测试过 TDA4VM EVM 上的/pdk_08_01_00_36/packages/ti/board/diag/mCAN/可以通过测试、但以前测试过 TDA4VM EVM 上的 PDK_08_02。

    谢谢。

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

    您好!

    [引用 userid="487798" URL"~/support/processors-group/processors/f/processors-forum/1105443/tda4vm-tda4-ca-issue/4108977#4108977"]

    2. 什么是"MCAN IP 原始中断状态"、您能更详细地解释一下还是举个例子?

    [/报价]

    这是 MCAN_IR 寄存器。

    内核获得中断的方式如下:

    IP 产生了一个中断-原始中断

    2.然后用使能位屏蔽 IP 的原始中断、如果中断被启用、那么它会将中断线驱动到内核。

    3.内核从 IP (或通过中断路由器)在专用线路上获得中断。 如果在 Core 上的 ISR 中注册了此中断、则会触发 ISR。

    我想问题是3、这就是为什么 MCAN_IR 寄存器仍然显示有效状态。

    此致

    Karan

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

    您好、Karan、

    我读取 MCU_MCAN0_CFG IR&IE&ILS&Ile 地址值、如上所示。 请与 Doc 联系,它似乎是可以的。  

    但为什么未触发 ISR?  (我们的源代码位于邮件附件文件中、请帮助您检查代码并提供正确的解决方案)

    非常感谢。

    此致

    Jay   

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

    注:

    1. MCAN 寄存器汇总:
      1. IR (0x50)-> 0x0 ->无 IP 中断->"问题"
      2. IE (0x54)-> 0x1FFFFFFF -> ARA 中断被禁用、REST 全部启用->正确的配置配置
      3. ILS (0x58)-> 0x0 ->选择 INT0 ->正确的配置配置
      4. Ile (0x5C)-> 0x3 -> INT0已启用->正确的配置配置
    2. 问题是 MCAN IP 本身不会产生中断。
    3. 后续步骤:
      1. Kolin 将在 TDA4VM EVM 上复制此内容、并在6月30日之前与 Karan 共享代码(补丁)。
      2. Karan 将在 TDA4VM EVM 共享代码后1-2天内恢复。

    此致

    Karan

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

    您好、Karan、

     我们可以在具有 SDK 8.0.1和8.0.2的 TDA4VM EVM 上重现此问题。

     

    轮询 TX

    轮询 Rx

    中断 TX

    中断 RX

    回送

    测试级联1:

    Board_diag_mcan @pdk_jacinto_08_01_00_36

    好的

    失败

    失败*(1)

    失败*(2)

    不适用

    测试案例2:

    CSL_mCAN_EVM_LOOP_APP @ PDK_Jacinto_08_02_00_21

    失败*(3)

    失败*(3)

    失败*(3)

    失败*(3)

    失败*(3)

    测试案例3:

    Board_diag_mcan + pdk_jacinto_08_02_00_21

    不适用

    不适用

    不适用

    不适用

    失败*(4)

    请在1-2天内检查邮件并帮助解决此问题。

    非常感谢。

    此致、

    Jay

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

    您好、Jay、

    我简单看了一下这个问题、似乎 MCAN ISR 的中断注册有问题。 我可以看到 MCAN_IR 被正确设置、这不会转换为内核的中断、因为中断没有正确注册。

    我将尝试提供有关 EVM 的工作示例、供您参考。

    此致

    Karan

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

    您好、Jay、

    根据我之前的响应、MCU R5F 的 ISR 注册是问题所在。

    您可以使用随附的 mCAN_TEST_MODIFL.c 并将其与您的进行比较。 更改了中断配置并更改了代码以执行内部回送后、我能够获得 Tx 中断。

    请注意、我将模式更改为内部回送、因为您的代码中可能没有考虑某些收发器配置、即使是在 ISR 触发时、消息也无法在总线上输出。

    请参阅随附的文件。

    e2e.ti.com/.../mcan_5F00_test_5F00_modify.c

    日志:

    e2e.ti.com/.../loopback_5F00_mcan_5F00_csl_5F00_app.log

    此致

    Karan

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

    您好、Karan、

    在您的代码中、我们无法运行并保持 while (CCS_LOOP);

    此代码"while (CCS_LOOP);"有问题。

    此外、 根据您修改的 ISR 注册、我检查 TDA4代码、ISR 注册 是相同的、但我们的 TDA4仍然无法触发 ISR 函数。

    请再次检查此问题。

    谢谢。

    BR、

    Jay

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

    您好、 Jay

    while (CCS_LOOP)仅用于调试目的、您可以更改 CCS_LOOP = 0x0。

    2.你提到 ISR 注册是相同的,你是说你已经在使用它,还是你现在根据我的建议修改了它,但仍然面临这个问题? 为了确保 MCU R5F 已启用 MCAN IP 的中断,请检查地址0x40F80408处的 VIM_INTR_EN_SET_J 寄存器值。  该寄存器第0位的值应该被置位。 该第0位对应于连接到 MCU MCAN0中断 MCU_MCAN0_MCANSS_MCAN_LVL_INT_0的 MCU R5F 第0个中断。

    VIM 寄存器:

    此致

    Karan

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

    您好、Karan、

    1.删除 while (CCS_LOOP)、TX ISR 可以正常工作、但 RX ISR 仍然无法触发。(在日志中、我们看不到 RX 工作正常?)

    2.您是指您已经在使用该工具、还是根据我的建议修改了该工具、但仍面临问题? =>可以

    我打印 VIM_INTR_EN_SET_j 寄存器的值为3F。  该寄存器第0位的值已置位。 但我们的 TDA4代码 ISR 仍然无法触发。

    3.在8.0.2示例代码 mCAN_EVM_loopback_app_main_K3.c 中,我们无法正常运行。 您是否会提供能够在 EVM 上正常运行的 mCAN_EVM_LOOP_APP_MAIN_K3.c 代码?

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

    您好、Jay

    [引用 userid="487798" URL"~/support/processors-group/processors/f/processors-forum/1105443/tda4vm-tda4-ca-issue/4127138#4127138"]1. 删除 while (ccs_loop)、TX ISR 可以正常工作、但 RX ISR 仍然无法触发。(在日志中、我们看不到 RX 工作正常?)

    初始问题是 TX ISR、这就是我测试的问题。 在我的补丁中进行更改后、您现在也可以看到 TX ISR、因此我会认为 Tx ISR 问题已解决。

    [引用 userid="487798" URL"~/support/processors-group/processors/f/processors-forum/1105443/tda4vm-tda4-ca-issue/4127138#4127138"]3. 在8.0.2示例代码 mCAN_EVM_LOOP_APP_MAIN_K3.c 中、我们无法正常运行。 您是否会提供能够在 EVM 上正常运行的 mCAN_EVM_loopback_app_main_K3.c 代码?[/quot]

    我使用了您修改过的应用程序、但没有运行默认 的 mca_evm_loopback_app_main_k3.c、让我来尝试一下。

    [引用 userid="487798" URL"~/support/processors-group/processors/f/processors-forum/1105443/tda4vm-tda4-ca-issue/4127138#4127138"]但 RX ISR 仍无法触发。(

    您能告诉我 MCU MCAN0侧的滤波器配置是什么吗? 只有当 CAN 总线上的传入消息用于 MCU MCAN0控制器时、Rx 的 ISR 才会命中、即与消息关联的消息 ID 与 MCU MCAN0的滤波器配置相匹配。 您从外部 CAN 仿真器发送的消息 ID 是什么(以及什么类型的消息-标准 ID 或扩展 ID)? 滤波器配置是什么?

    此致

    Karan

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

    关闭该环路上的环路。

    该线程上为 Rx 中断打开的最后一个问题是内部回送配置造成的。 禁用内部回送后、Rx 中断也会被触发。

    此致

    Karan

x 出现错误。请重试或与管理员联系。