主题中讨论的其他器件:TDA4VM、 TCAN1043、 TCA6424A
我 正在研究需要修改 CAN 性能评测演示的概念验证。 主域和 MCU 域需要配置为 直接使用 CAN 端口进行通信。 第一步是让演示在 外部回送模式下在 mcu1_0和 MCU2_1上工作。 但是 、我在 J721e EVM 上工作、仅使用通用处理器板和 SOM、不使用 GESI 扩展板。
由于 MCU 域中只有两个 CAN 端口、因此可以在 mcu1_0上运行演示。 MCU MCAN0和 MCU MCAN1均通过 J31和 J30上的接头进行暴露。 但是、主域 MCU2_1上的演示配置为使用 MCAN4和 MCAN9。 这些接头仅可通过 GESI 扩展板进行访问。
我想修改 MCU2_1的演示以使用 MCAN0和 MCAN2、因为它们暴露在 J28和 J27接头处的通用处理器板上。 我对 CAN_Cfg 进行了必要的添加、但在 CANApp_Startup 中遇到了困难。 基于 TRM、以下应该是正确的 MCAN0和 MCAN2焊盘配置/多路复用:
/* MAIN MCAN 0 Tx PAD configuration */ regVal = 0x60000U; CSL_REG32_WR(CSL_CTRL_MMR0_CFG0_BASE + 0x1C20CU, regVal); /* MAIN MCAN 0 Rx PAD configuration */ regVal = 0x60000U; CSL_REG32_WR(CSL_CTRL_MMR0_CFG0_BASE + 0x1C208U, regVal); /* MAIN MCAN 2 Tx PAD configuration */ regVal = 0x60003U; CSL_REG32_WR(CSL_CTRL_MMR0_CFG0_BASE + 0x1C1F4U, regVal); /* MAIN MCAN 2 Rx PAD configuration */ regVal = 0x60003U; CSL_REG32_WR(CSL_CTRL_MMR0_CFG0_BASE + 0x1C1F0U, regVal);
但是、当我启用这些收发器时、我对正在发生的情况感到困惑。 我知道以下代码启用某些 GPIO 引脚的输出、但我无法理解原因:
/* Pin mux for CAN STB used in GESI board */
regVal = 0x20007U;
CSL_REG32_WR(CSL_CTRL_MMR0_CFG0_BASE + 0x1C0F4U, regVal);
/* Take MCAN transceiver out of STB mode for MCAN0 */
/* Set Pin direction to output */
regVal = CSL_REG32_RD(CSL_GPIO0_BASE + 0x38U);
regVal &= (~(1U << 0x1BU));
CSL_REG32_WR(CSL_GPIO0_BASE + 0x38U, regVal);
/* Drive Pin to Low */
Dio_WriteChannel(CAN_TRCV_MAIN_DOMAIN_4_9_11, STD_LOW);
/* Read Pin level */
dioPinLevel[0] = Dio_ReadChannel(CAN_TRCV_MAIN_DOMAIN_4_9_11);
/*Read back the pin levels to ensure transceiver is enabled*/
if (STD_LOW != dioPinLevel[0U])
{
AppUtils_Printf(MSG_NORMAL, MSG_APP_NAME
" Error in Enabling CAN Transceiver Main Domain Inst 4,9,11!!!\n");
}
else
{
AppUtils_Printf(MSG_NORMAL, MSG_APP_NAME
" Successfully Enabled CAN Transceiver Main Domain Inst 4,9,11!!!\n");
}
有人能否向正确的方向指出这些 GPIO 引脚如何与 MCAN 引脚交互? 文件的其余部分似乎是为了通过 I2C 与 GESI 板通信、这些引脚的用途是什么?



