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.

RTOS/TDA2P-ACD: AWR1243 Radar Power On using TDA2Px Failing

Part Number: TDA2P-ACD
Other Parts Discussed in Thread: AWR1243

Tool/software: TI-RTOS

Hello,

I am currently trying to run the radar satellite configuration with single radar AWR1243 using Fusion Board and TDA2px Host processor. I am having some problems in the Radar Boot procedure. Currently, I have powered the AWR1243 Sensor externally. In Bsp_ar12xxRadarDeviceOn() [PATH: C:\VisionSDKnew\ti_components\drivers\pdk_01_10_01_06\packages\ti\drv\vps\src\devices\radar_ar12xx\src\bspdrv_ar12xxPriv.c], I put a GT_1trace() statement right after rlDevicePowerOn() which is giving me the retVal as 0 after the rlDevicePowerOn() is called. I think this means that the rlDevicePoweOn() is successful. However, I am getting stuck in the following while loop mentioned in the same function immediately after that:

while ((gBspAr12xxObj.radarInitCompleteFlag != count)
&& (timeout != 0U))
{
/* Sleep for 1 ms */
BspOsal_sleep(1U);
timeout--;

}

The program proceeds ahead once the timeout is complete and displays " AR12XX: Radar Device Power On failed" message. This means that the radarInitCompleteFlag is not raised. This radarInitCompleteFlag is set by the "Bsp_ar12xxAsyncEvtHandlerCb()" mentioned in bspdrv_ar12xxPriv.c file. I do not know where this Bsp_ar12xxAsyncEvtHandlerCb() is called in the rlDevicePowerOn() function. In the same program, Bsp_ar12xxAsyncEvtHandlerCb is initialized as a callback to rlAsyncEvent function. I am not able to debug or print the statements to TeraTerm for driverlevel functions.

Could you please tell me if there is any Bsp_ar12xxAsyncEvtHandlerCb called in the rlDevicePowerOn()? Where is the AyncEventHandler called apart from rlDriverCmdInvoke()? Also, could you tell me where in the SDK is the main function defined? I was able to trace back the main function to main_common_ipu1_0.c file in the SDK. Is this the place where the execution starts when I run TDA2px?

I look forward to your help!

Thank you!

-Nishant 

  • Hello Nishant,
    TDA2x should have control to power on AWR12xx (taking it out of reset line after setting SOP control), so make sure that all the required hardware lines are connected properly from AWR12xx to TDA2x.
    As a boot up flow of AWR12xx (at rlDevicePowerOn function call), it raises HostIRQ line to Host to notify about pending SPI Asychronous message (bootup async event from AWR12xx to TDA2x [Host]). At this event, radar-SDK application should get interrupted and call Bsp_ar12xxAsyncEvtHandlerCb. In TDA2x this callback function is stiched to one of GPIO (connected with HostIRQ of AWR12xx), which will get invoked as HostIRQ is up.

    Now you need to probe in HostIRQ line AWR12xx device (follow datasheet/schematic to find out this pin) and check if on power on this line is high.

    Regards,
    Jitendra
  • Hello Jitendra,

    Thank you for your reply! I checked the SPI_HOST_INTR pin at my Serializer end ( given through AR_HOSTINTR1 pin in J1 Connector of AWR1243 Boost schematic) using oscilloscope. It is high under normal condition and during acknowledgement it goes low for a small interval and then goes back to high again after rlDevicePowerOn function call. I am assuming that a low pulse means acknowledgement on the interrupt GPIO pin. If this is correct, the only other possibility seems to be the setting on the fusion board for UB960. In the SDK, in bsputils_ub960,c, the GPIO Setting is done BspUtils_Ub960I2cParams gUb960Cfg_D3AR1243[] .

    The original register setting for GPIO in the SDK is given below:

    {0x0F, 0xF0, UB960_REG_DELAY_TIME}, /*Disable GPIO 0 ~ 3 input*/ 

    {0x14, 0x41, UB960_REG_DELAY_TIME}, /*GPIO 4 - Output received GPIO 2 (HST_INT) from Port 0*/

    Could you explain what does Output received GPIO2 mean? I referred the UB960 Datasheet and found it little confusing as well. In my custom board, the SPI Host Interrupt is taken from GPIO1 at the Serializer UB953. So I modified it to the following:

    {0x0F, 0xE0, UB960_REG_DELAY_TIME}, /*Disable GPIO 0 ~ 4 input*/  // Based on the datasheet of fusion board, the SPI_HOST_INTR pin is the SYNC_CAMERA signal given to GPIO4 in U1 Deserializer UB960. So I think GPIO4 Should be configured as an output   

    {0x14, 0x21, UB960_REG_DELAY_TIME} //Assuming that GPIO 2 in the above means that the GPIO pin taken from the Serializer. So in my case it has to be GPIO1

    However, the AsyncEventHandler is still not being invoked at the Host end and the radarInitCompleteFlag is still 0. Is there any other way to debug?

    I look forward to your suggestions.

    Thank you!

    Best Regards,

    Nishant

  • Hello Jitendra,

    Few other observations:

    1. I tested the SPI_HOST_INTR pin at the fusion board using oscilloscope and I found that this GPIO pin does not go high after the rlDevicePowerOn due to which the radarInitCompleteFlag is still 0 and timeout occurs. However, at the Serializer end this pin does go high after rlDevicePowerOn().

    2. I tested my radar sensor AWR1243 with new firmware and ran the mmwavelink_exmaple.sln present in C:\VisionSDKnew\ti_components\radar\mmwave_dfp_01_02_00_00\ti\example\mmwavelink_example, using Visual Studio and observed the SPI_HOST_INTR pin. It goes high after rlDevicePowerOn() function call. The same radar sensor when I connect in FPD-LINK through Fusion Board and TDA2Px EVM doesn't return any ACK signal through SPI_HOST_INTR pin after rlDevicePowerOn(). This means that the error should be in my GPIO Settings or in the SDK implementation using TI-RTOS because it is working fine when I connect to my PC and run with Windows Visual Studio. Could you check the above GPIO Setting and let me know if I need to modify anything?

    3. Could you also check my GPIO settings when I do warm reset and reset of my AWR1243?
    My hardware connection is as follows: AWR1243 Boost-> SPI-i2c bridge bridge and UB953 Serializer Daughter Board-> FPD Link coax cable-> Fusion Board-> TDA2PX EVM.
    The GPIOs in the SPI-I2C Bridge is used for SOP Setting. The four GPIOs from UB953 is used to perform the Warm Reset, NERROR_IN, SPI_HOST_INTR and AR_NRST_MCU.
    They are connected as follows:
    GPIO0-> WARM Reset
    GPIO1-> SPI_HOST_INTR
    GPIO2-> NERROR_IN
    GPIO3-> AR_NRST_MCU.

    I verified the hardware connections and they seem fine.
    In the BspUtils_resetAR12xxToSOP4() in bsputils_ub960.c file, where the AWR1243 Warm Reset, NERROR_IN and AR_NRST_MCU is asserted first and then deasserted, I have implemented it the following way:

    /*Assert Reset, Nerror in and Warm Reset*/
    tempAddr = 0x0D;
    tempData = 0x00;
    status = Bsp_deviceWrite8(
    UB960_ACCESSIBLE_FROM_I2C_INST, //UB960_ACCESSIBLE_FROM_I2C_INST is ((UInt32) 4U)
    D3_AR1243_PORT_0_SER_ADDR, //D3_AR1243_PORT_0_SER_ADDR is defined as 0x74U (same as the written in the original code
    &tempAddr,
    &tempData,
    (UInt32) 1U);
    BspOsal_sleep(100);

    //Performs SOP Settings using the SPI-I2C bridge GPIOS
    /*Set SOP Mode 4 by keeping TDO=High, SYNCOUT and PMICOUT=Low*/
    tempAddr = 0xF4;
    tempData = 0x02;
    status = Bsp_deviceWrite8(
    UB960_ACCESSIBLE_FROM_I2C_INST,
    D3_AR1243_PORT_0_SENSOR_ADDR, //D3_AR1243_PORT_0_SENSOR_ADDR is defined as 0x40U (same as written in the original)
    &tempAddr,
    &tempData,
    (UInt32) 1U);
    BspOsal_sleep(100);

    /*De-Assert AR_ERROR_IN, Warm_Rst and bringing module out of reset NRST */
    tempAddr = 0x0D;
    tempData = 0x0F;
    status = Bsp_deviceWrite8(
    UB960_ACCESSIBLE_FROM_I2C_INST,
    D3_AR1243_PORT_0_SER_ADDR,
    &tempAddr,
    &tempData,
    (UInt32) 1U);

    Please let me know if you think there is any mistake in the above settings. I look forward to your reply.
    Thank you!

    Best Regards,
    Nishant

  • Hello Jitendra,

    My issue got resolved yesterday! The fault was in UB953 Register 0x33 setting. My original value was 0x05, because I had only 1 GPIO as output pin and as per datasheet of UB953 Serializer, it is datapath control register which is used to assign One-Four GPIOs in Forward path. The datasheet doesn't say much about this register setting. I changed the register value to 0x07, i.e, enabled 4 GPIOs in FWD path and it started working. It would be really helpful if you could explain the functionality of register 0x33 in UB953 in detail here.

    Thank you!

    Best Regards,

    Nishant