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都存在此问题。
谢谢。
您好、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
您好、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、
根据我之前的响应、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