工具/软件:
您好:
我正在为 BareMetal hello_world 计划而努力
-通过 CSS 在主 R5F 内核0 (MCU2_0)(j721e 评估板)上运行
-在 MAIN_CAN0上发送简单的 CAN 消息 -
作为参考、我使用了 mcan_evm_loopback_app_main_k3.c 文件。
1)我需要帮助、在哪里可以找到 Main_CAN0 (以及其他)的 STB、EN、TX、RX 可能的引脚
/* GPIO initialization */
GPIO_init();
/* Enable CAN transceivers by setting the STB pins */
/* Enable the TCAN on GESI board.
* Main Domain MCAN instances 4,5,6,7,9,11.
*/
GPIO_write(0, GPIO_PIN_LOW);
/* Set MCU_MCAN1_STB to LEVEL_LOW to exit CAN1 from Standby mode */
GPIOSetDirMode_v0(CSL_WKUP_GPIO0_BASE, MCU_MCAN1_STB_PIN, GPIO_DIRECTION_OUTPUT);
GPIOPinWrite_v0(CSL_WKUP_GPIO0_BASE, MCU_MCAN1_STB_PIN, GPIO_PIN_LOW);
#if defined (SOC_J721E) || defined (SOC_J7200) || defined (SOC_J721S2)
/* Set MCU_MCAN0_EN Enable to LEVEL_HIGH to Enable MCU MCAN 0*/
GPIOSetDirMode_v0(CSL_WKUP_GPIO0_BASE, MCU_MCAN0_ENABLE_PIN, GPIO_DIRECTION_OUTPUT);
GPIOPinWrite_v0(CSL_WKUP_GPIO0_BASE, MCU_MCAN0_ENABLE_PIN, GPIO_PIN_HIGH);
/* Set MCU_MCAN0_STBz pin to LEVEL_High to exit CAN0 from Standby mode */
GPIOSetDirMode_v0(CSL_WKUP_GPIO0_BASE, MCU_MCAN0_STBZ_PIN, GPIO_DIRECTION_OUTPUT);
GPIOPinWrite_v0(CSL_WKUP_GPIO0_BASE, MCU_MCAN0_STBZ_PIN, GPIO_PIN_HIGH);
#endif
在哪个文档中/可以找到从 STB 引脚 到 CSL_WKUP_GPIOx_BASE 的映射?
2)如何在示例中完成 GPIO 映射?
第一部分通过 GPIO 接口完成、另一部分通过 I2C 完成。 为什么?
#if defined (SOC_J721E)
/*
* Configuring TCA6424 IO Exp 2 with addr 0x22
* This io expander is controlled by i2c0
* For Main MCAN2 P13 and P14 should be set to 0, This should route the MCAN2 STB line to transciver.
* For Main MCAN0 P06 and P07 should be set to 1.
*/
/* I2C initialization */
I2C_init();
I2C_Params_init(&i2cParams);
i2cParams.transferMode = I2C_MODE_BLOCKING;
i2cParams.bitRate = I2C_400kHz;
i2cParams.transferCallbackFxn = NULL;
handle = I2C_open(0U, &i2cParams);
dataToSlave[0] = TCA6424_REG_CONFIG0 | TCA6424_CMD_AUTO_INC;
dataToSlave[1] = 0x0U;
SetupI2CTransfer(handle, 0x22, &dataToSlave[0], 2, NULL, 0);
dataToSlave[0] = TCA6424_REG_INPUT0 | TCA6424_CMD_AUTO_INC;
dataToSlave[1] = 0x0U;
dataToSlave[2] = 0x0U;
dataToSlave[3] = 0x0U;
SetupI2CTransfer(handle, 0x22, &dataToSlave[0], 1, &dataToSlave[1], 3);
/* Set P06 and P07 to 1.
* Set P13 and P14 to 0.
*/
dataToSlave[0] = TCA6424_REG_OUTPUT0 | TCA6424_CMD_AUTO_INC;
dataToSlave[1] |= 0xC0;
dataToSlave[2] &= ~(0x18);
SetupI2CTransfer(handle, 0x22, &dataToSlave[0], 1, &dataToSlave[1], 3);
#endif
注释与代码不匹配? P06和 P07到底是如何激活的?