工具与软件:
尊敬的 TI 专家:
我使用 TDA4VE EVM (J721S2 SOM + CPB)、它在 Linux + RTOS 模式下使用 SDK 版本 R85运行。
我的目的是在显示端口0 (DP0_PWR_SW_EN)开启时打开 USER_LED1、该 LED 连接到 GPIO Expeder2端口2:PIN6 (P26)。
我在 vision_apps/utils/dss/app_dss_soc.c 中添加了以下代码 src
void appDssConfigureDP(void)
{
Board_STATUS b_status;
Board_IoExpCfg_t ioExpCfg;
appLogPrintf("DSS: Turning on DP_PWR pin for eDP adapters ... !!!\n");
#if defined (SOC_J721E)
ioExpCfg.i2cInst = 1U;
#elif defined (SOC_J721S2) || defined (SOC_J784S4)
ioExpCfg.i2cInst = 4U;
#endif
ioExpCfg.socDomain = BOARD_SOC_DOMAIN_MAIN;
ioExpCfg.slaveAddr = 0x20;
ioExpCfg.enableIntr = false;
ioExpCfg.ioExpType = ONE_PORT_IOEXP;
ioExpCfg.portNum = PORTNUM_0;
ioExpCfg.pinNum = PIN_NUM_0;
ioExpCfg.signalLevel = GPIO_SIGNAL_LEVEL_HIGH;
b_status = Board_control(BOARD_CTRL_CMD_SET_IO_EXP_PIN_OUT, (void *)(&ioExpCfg));
#if defined (SOC_J721S2) || defined (SOC_J784S4)
appLogWaitMsecs(500u);
#endif
+ #if defined (SOC_J721S2)
+ appLogPrintf("DSS: Turning on USER_LED1 ... !!!\n");
+ ioExpCfg.i2cInst = 0U; // BOARD_I2C_IOEXP_DEVICE2_INSTANCE
+ ioExpCfg.socDomain = BOARD_SOC_DOMAIN_MAIN;
+ ioExpCfg.slaveAddr = 0x22U; // BOARD_I2C_IOEXP_DEVICE2_ADDR
+ ioExpCfg.enableIntr = false;
+ ioExpCfg.ioExpType = THREE_PORT_IOEXP;
+ ioExpCfg.portNum = PORTNUM_2;
+ ioExpCfg.pinNum = PIN_NUM_6;
+ ioExpCfg.signalLevel = GPIO_SIGNAL_LEVEL_HIGH;
+ b_status = Board_control(BOARD_CTRL_CMD_SET_IO_EXP_PIN_OUT, (void *)(&ioExpCfg));
+ appLogWaitMsecs(500u);
+ #endif
if (b_status == BOARD_SOK)
{
appLogPrintf("DSS: Turning on DP_PWR pin for eDP adapters ... Done!!!\n");
}
...
但我发现、在控制 GPIO 扩展器2时、MCU2固件卡在 Board_CONTROL ()中。
我注意到、GPIO 扩展器2的某些引脚(例如 GPIO_uSD_PWR_EN)通过 A72 Linux 进行控制。
我想知道是否也可以在 MCU2 RTOS 固件中控制 GPIO 扩展器2引脚? 以及如何实现?
请建议、谢谢。
此致、
Christopher