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.
你(们)好
我的客户正在其 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
注:
此致
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