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.

TDA4VM: When the single cam app is run first and then the multi cam app is run, the i2c cannot be accessed

Part Number: TDA4VM

1、There are no associated errors when the single cam app and the multi cam app run alone.

2、run in SDK7.2

3、log

[2023/2/13 11:04:47] [MCU2_0]     79.005300 s: Error writing 0x75 to MAX96722 register 0x13 

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[BEGIN] 2023/2/13 11:03:24
[2023/2/13 11:03:28] SBL Revision: 01.00.10.00 (Apr 2 2022 - 17:59:44)
[2023/2/13 11:03:29] SBL Run finish successfully !!!
[2023/2/13 11:03:33] Starting MMC/SD memory card driver... eMMC
[2023/2/13 11:03:33] open(/dev/tisci): No such file or directory
[2023/2/13 11:03:33] j7ospi_get_refclk, failed to read OSPI reference clock, use default clock rate(166.7MHz)
[2023/2/13 11:03:33] Setting environment variables...
[2023/2/13 11:03:33] done..
[2023/2/13 11:03:33] Path=0 - am65x
[2023/2/13 11:03:33] target=0 lun=0 Direct-Access(0) - SDMMC: BGUF4R Rev: 3.9
[2023/2/13 11:03:33] base add: 3fa0000,size: 2
[2023/2/13 11:03:33] get flag
[2023/2/13 11:03:33] flag value:aaaa
[2023/2/13 11:03:33] QNX FS A SIDE
[2023/2/13 11:03:33] QNX FS A TEST FOR RW. MNTSTAT=0
[2023/2/13 11:03:34] Looking for user script to run: /ti_fs/scripts/user.sh
[2023/2/13 11:03:34] Running user script...
[2023/2/13 11:03:34] user.sh called...
[2023/2/13 11:03:34] Setting additional environment variables...
[2023/2/13 11:03:34] Starting tisci-mgr..
[2023/2/13 11:03:34] Starting shmemallocator..
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

log in function:

int32_t MAX96722_WriteReg(uint8_t i2cInstId,
uint8_t slaveI2cAddr,
uint16_t regAddr,
uint8_t regVal)
{
int32_t status = -1;
int num = 0;
for (num = 0;num< RETRY_NUM;num++){
printf("write addr:%x, regAddr:%x, regVal:%x\n",slaveI2cAddr, regAddr, regVal);
status = Board_i2c16BitRegWr(gISS_Sensor_I2cHandle, slaveI2cAddr, regAddr, &regVal, 1U,BOARD_I2C_REG_ADDR_MSB_FIRST, SENSOR_I2C_TIMEOUT);
if(0 != status)
{
printf("Error writing 0x%x to MAX96722 register 0x%x \n Reset I2C Channel!\n", regVal, regAddr);

I2C_close(gISS_Sensor_I2cHandle);
gISS_Sensor_I2cHandle = NULL;
appLogWaitMsecs(100);
status = setupI2CInst(i2cInstId);
if(status!=0)
{
printf(" I2C ERROR status:%d \n",status);
}

}else{
break;
}
}
return status;

}