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.

IWR6843AOPEVM: IWR6843AOPEVM

Part Number: IWR6843AOPEVM
Other Parts Discussed in Thread: IWR6843AOP, MMWAVEICBOOST, , IWR6843, UNIFLASH

Hi,

We are interfacing the above mentioned module with electric imp004 through I2C
We have got the following address on performing I2C Scan
0x48, 0x50, 0x51, 0x52, 0x53, 0x60, out of which we have identified that 0x48 is TMP112A, 0x50 is CAT24C08 and 0x60 is LP87524

We need help in:

1. Identifying 0x51, 0x52, 0x53 

2. I2C Address of IWR6843AOP 

Thanks

  • Hello Rutuja, 

    Welcome to TI E2E Forums and Thankyou for reaching us out. 

    Please give us some time to investigate your concern and we will respond back to you by next week. 

    Regards,

    Ishita

  • Hi Ishita,
    Please let us know if there has been any progress related to above query

    Thanks

  • Hello Rutuja,

        Do you have picture of your setup? What is the SOP configuration you have used? Are there other boards or peripherals connected to system or I2C bus? 

    Are you using MMWAVEICBOOST board for hosting the IWR6843AOPEVM? On this board there are other additional I2C peripherals are present. 

    Thanks and regards,

    CHETHAN KUMAR Y.B.


  • This is the picture of our setup. The board on right hand side is electric imp004. we have connected both the boards via i2c. 
    on performing i2c scan on imp004 we are able to see the addresses 0x48, 0x50, 0x51, 0x52, 0x53, 0x60, out of which we have identified that 0x48 is TMP112A, 0x50 is CAT24C08 and 0x60 is LP87524. But we are not able to find IWR6843 itself on I2C. 

    we are not using MMWAVEICBOOST board.
    And there are no additional I2C peripherals from our end

     

  • Hello Rutuja,

       Thanks for sharing the setup details, What application you are running on the AOP EVM? 

    For getting the I2C response from the mmWave sensor, you need to run I2C application as a master mode or Slave mode, there are SDK drivers allows this configuration. Typical out of the box demos demos doesn't use the I2C interface, Hence you may not see response from mmWave sensor.  Here’s an example of a somewhat similar exercise by a different customer: link

    If the imp is used as the master and 6843 as the slave, what addresses are you reading to indicate the I2C peripherals? Please note external interface need to be removed during the boot operation otherwise it may interfere with the boot mode of operation. 

    Thanks and regards,

    CHETHAN KUMAR Y.B.

  • Hi Chethan,

    Yes, IMP is to be used as Master and 6843 as the slave.
    We are running the Overhead people counting demo lab and added some functions shown below in the main code to open the i2c peripheral as the slave.

    //***************************************************************************

    const I2CSlave_Params params;

    const I2CSlave_Config I2CSlave_config[];

    /* Used to check status and initialization */
    int32_t I2CSlave_count = MINUS_ONE;

    /* Default I2CSlave parameters structure */
    const I2CSlave_Params I2CSlave_defaultParams = {
    I2CSLAVE_MODE_BLOCKING, /* transferMode */
    0x10, /* slaveAddress */
    (uintptr_t) NULL /* custom */
    };

    /**************************************************************************
    ************************* I2C Slave Functions **********************
    **************************************************************************/
    /*
    * ======== I2CSlave_close ========
    */
    void I2CSlave_close(I2CSlave_Handle handle)
    {
    handle->fxnTablePtr->closeFxn(handle);
    }

    /*
    * ======== I2CSlave_control ========
    */
    int32_t I2CSlave_control(I2CSlave_Handle handle, uint32_t cmd, void *arg)
    {
    return (handle->fxnTablePtr->controlFxn(handle, cmd, arg));
    }

    /*
    * ======== I2CSlave_init ========
    */
    void I2CSlave_init(void)
    {
    if (I2CSlave_count == MINUS_ONE) {
    /* Call each driver's init function */
    for (I2CSlave_count = 0;
    I2CSlave_config[I2CSlave_count].fxnTablePtr != NULL;
    I2CSlave_count++) {
    I2CSlave_config[I2CSlave_count].fxnTablePtr-> \
    initFxn((I2CSlave_Handle)&(I2CSlave_config[I2CSlave_count]));
    }
    }
    }

    /*
    * ======== I2CSlave_open ========
    */
    I2CSlave_Handle I2CSlave_open(uint32_t index, I2CSlave_Params *params)
    {
    I2CSlave_Handle handle;

    if ((int32_t)index >= I2CSlave_count)
    {
    handle = NULL;
    }
    else
    {
    /* Use defaults if params are NULL. */
    if (params == NULL)
    {
    params = (I2CSlave_Params *) &I2CSlave_defaultParams;
    }

    /* Get handle for this driver instance */
    handle = (I2CSlave_Handle)&(I2CSlave_config[index]);

    /* Open the I2C slave driver */
    handle = handle->fxnTablePtr->openFxn(handle, params);
    }
    return (handle);
    }

    /*
    * ======== I2CSlave_Params_init =======
    */
    void I2CSlave_Params_init(I2CSlave_Params *params)
    {
    *params = I2CSlave_defaultParams;
    }

    //************************************************************************************

    //Called the functions below

    //**************************************************************************************

    I2CSlave_init();
    I2CSlave_Params_init(&params);
    I2CSlave_open(0, NULL);

    //**************************************************************************************

    Then too we are not getting the 6843 when we perform the I2C scan on IMP.


    Thanks,
    Samidha

  • Hello Samidha,

        Is the demo application code is running correctly on the PC? And only I2C slave configuration is not working?  We need to ensure there is no conflict with the existing I2C devices and it's address. 

    For example, In the board there is another I2C device, I2C to GPIO expander with the similar slave address. 

    Thanks and regards,

    CHETHAN KUMAR Y.B.

  • Hi Chetan,

    We have tried changing the address to 0x48 too, still not working.
    Also, the demo is not running on the PC after flashing the chip with the modified code.
    Unable to understand where it is conflicting.

    Thanks
    Samidha

  • Changed the address to 0x68, hoping it will not conflict with any other I2C peripheral present on board, but still, it is not working

  • Hi Samidha,

       Problem may not be just the I2C alone. There could be some other problems as well.

    Could you please elaborate what are the changes done on the application? Will check if some of our software application team could check on this.

    Thanks and regards,

    CHETHAN KUMAR Y.B. 

        

  • Hi Chetan,

    I have just added the below function in the mss firmware of overhead people counting

    //***********************************************************************************************

    void int32_t I2c_Init()
    {
    I2CSlave_Handle i2cHandle;
    I2CSlave_Params i2cParams;


    Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PINF13_PADAH, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);
    Pinmux_Set_FuncSel(SOC_XWR68XX_PINF13_PADAH, SOC_XWR68XX_PINF13_PADAH_I2C_SDA);

    Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PING14_PADAI, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);
    Pinmux_Set_FuncSel(SOC_XWR68XX_PING14_PADAI, SOC_XWR68XX_PING14_PADAI_I2C_SCL);


    i2cParams.transferMode = I2CSLAVE_MODE_BLOCKING;
    i2cParams.slaveAddress = 0x68;


    /* Reset the transmit and receive buffer */
    // memset(&rxData, 0, sizeof (rxData));

    /* Initialize the I2C Slave driver */
    I2CSlave_init();

    /* Initialize the I2C driver default parameters */
    I2CSlave_Params_init(&i2cParams);

    /* Open the I2C Slave driver */
    i2cHandle = I2CSlave_open(0, &i2cParams);
    }

    //**********************************************************************************************

    And called the above function in the main

    I have included I2CSlave.h file too. (#include <ti/drivers/i2c/I2CSlave.h>)

    Then I build the code and upload the .bin file through Uniflash

  • Hello,

    Before modifying the overhead people counting demo, have you tried running the I2C test code to verify the HW connections are correct? Have you gone through the i2c driver test program to make sure the connections are working? 

    "C:\ti\mmwave_sdk_03_05_00_04\packages\ti\drivers\i2c\test"

    If that doesn't help, can you please take a scope capture of the I2C test to show the device not responding?

    Regards,

    Jackson