• TI Thinks Resolved

IWR1443: Custom PCB help!

Part Number: IWR1443

Hello,

I have created a custom PCB that utilizes the IWR1443 sensor for level sensing application.  So far, I am able to flash the highAccuracy lab demo to the external flash memory (part# MX25R1635FZNIH0) via UniFlash.  Using the CLI commands I am able to execute all of the commands and receive acknowledgement as shown below.  However, when I send the command to start the sensor, it fails.   Can someone help be start the debug process?  I have had two different errors pop up in the Uart output and you can see the CLI commands I am sending below.  I'm hoping that someone has run into this same error while developing and point me in the right direction.  Thanks!


******************************************

xWR14xx MMW Demo 01.01.00.02

******************************************

mmwDemo:/>sensorStop
Done

mmwDemo:/>
mmwDemo:/>flushCfg
Done

mmwDemo:/>
mmwDemo:/>dfeDataOutputMode 1
Done

mmwDemo:/>
mmwDemo:/>channelCfg 1 1 0
Done

mmwDemo:/>
mmwDemo:/>adcCfg 2 1
Done

mmwDemo:/>
mmwDemo:/>adcbufCfg 0 1 0 1
Done

mmwDemo:/>
mmwDemo:/>profileCfg 0 77 7 7 130.05 0 0  27.96 1 512 4195 0 0 36
Done

mmwDemo:/>
mmwDemo:/>chirpCfg 0 0 0 0 0 0 0 1
Done

mmwDemo:/>
mmwDemo:/>frameCfg 0 0 1 0 500 1 0
Done

mmwDemo:/>
mmwDemo:/>calibDcRangeSig 0 -5 5 32
Done

mmwDemo:/>
mmwDemo:/>guiMonitor 1   1 0  0 0  1
Done

mmwDemo:/>
mmwDemo:/>sensorStart
Debug: Init Calibration Status = 0x5fe

Exception: ../main.c, line 1045.

******************************************

xWR14xx MMW Demo 01.01.00.02

******************************************

mmwDemo:/>
mmwDemo:/>
mmwDemo:/>sensorStop
Done

mmwDemo:/>
mmwDemo:/>flushCfg
Done

mmwDemo:/>
mmwDemo:/>dfeDataOutputMode 1
Done

mmwDemo:/>
mmwDemo:/>channelCfg 1 1 0
Done

mmwDemo:/>
mmwDemo:/>adcCfg 2 1
Done

mmwDemo:/>
mmwDemo:/>adcbufCfg 0 1 0 1
Done

mmwDemo:/>
mmwDemo:/>profileCfg 0 77 7 7 130.05 0 0  27.96 1 512 4195 0 0 36
Done

mmwDemo:/>
mmwDemo:/>chirpCfg 0 0 0 0 0 0 0 1
Done

mmwDemo:/>
mmwDemo:/>frameCfg 0 0 1 0 500 1 0
Done

mmwDemo:/>
mmwDemo:/>calibDcRangeSig 0 -5 5 32
Done

mmwDemo:/>
mmwDemo:/>guiMonitor 1   1 0  0 0  1
Done

mmwDemo:/>
mmwDemo:/>sensorStart
Exception: ../main.c, line 1200.

  • In reply to Radio-Joe:

    Joe,

    Again thanks for your most detailed response!  I will proceed with your checklist today but I thought I would run this by you.   On the one device of my own design that I had uploading the bin files to flash, I should have mentioned that I had actually had swapped the flash memory from the EVM that I received from TI (PN: S25FL116K0XNFV01) with the new one I ordered from digikey (PN: MX25R1635FZNIH0) . 

    The digikey part worked perfectly on the TI 1443 BOOST EVM  so I figured I had found a compatible flash chip.  However, on my circuit boards I can only get a binary to load to flash if Iuse the orignal Spansion flash chip that came with the EVM. 

    Can you think of why the EVM would be more acceptable to different flash memory chips?  Bootloader?  SPI Traces? 

    Thanks! 

  • In reply to Jason Parmenter:

    Hello
    There are specific pullups and series resistors on the IWR1443 EVM. Please make sure you copied those.
    A difference for layout with ES2 vs ES3 IWR1443 is that QSPI speed increases from 18 to 40Mhz. Make sure you matching is OK.
    QSPI design rules are to match all 6 traces (although the CS could be slightly off).

    The ES2 part only supports specific QSPI flash, see the IWR1443 Errata document. Next month you can order the IWR1443ES3 part,
    it supports more flash devices, and the boot time is faster, BSS code is in ROM, 40Mhz QSPI.

    Also tomorrow, the TI web WR1443 RevB Altium package will be included with the Cadence package if that helps. Look under the IWR1443BOOST EVM Technical documents

    Regards,
    Joe Quintal
  • In reply to Radio-Joe:

    Joe,

    We have got JTAG working properly and we are uploading bin files through CCS.  However, we are still seeing similar error codes such as 0x1fe after calling the "sensorStart" command.  

    We  ran the OOB demo with mmWave sdk V1.2 and watched the console output in the online visualizer and this was the output:

    mmwDemo:/>% ***************************************************************
    Skipped
    
    mmwDemo:/>% Created for SDK ver:01.02
    Skipped
    
    mmwDemo:/>% Created using Visualizer ver:2.0.0.2
    Skipped
    
    mmwDemo:/>% Frequency:77
    Skipped
    
    mmwDemo:/>% Platform:xWR14xx
    Skipped
    
    mmwDemo:/>% Scene Classifier:best_range_res
    Skipped
    
    mmwDemo:/>% Azimuth Resolution(deg):15
    Skipped
    
    mmwDemo:/>% Range Resolution(m):0.044
    Skipped
    
    mmwDemo:/>% Maximum unambiguous Range(m):9.01
    Skipped
    
    mmwDemo:/>% Maximum Radial Velocity(m/s):1
    Skipped
    
    mmwDemo:/>% Radial velocity resolution(m/s):0.13
    Skipped
    
    mmwDemo:/>% Frame Duration(msec):100
    Skipped
    
    mmwDemo:/>% Range Detection Threshold (dB):15
    Skipped
    
    mmwDemo:/>% Range Peak Grouping:enabled
    Skipped
    
    mmwDemo:/>% Doppler Peak Grouping:enabled
    Skipped
    
    mmwDemo:/>% Static clutter removal:disabled
    Skipped
    
    mmwDemo:/>% ***************************************************************
    Skipped
    
    mmwDemo:/>sensorStop
    Done
    
    mmwDemo:/>flushCfg
    Done
    
    mmwDemo:/>dfeDataOutputMode 1
    Done
    
    mmwDemo:/>channelCfg 15 5 0
    Done
    
    mmwDemo:/>adcCfg 2 1
    Done
    
    mmwDemo:/>adcbufCfg 0 1 0 1
    Done
    
    mmwDemo:/>profileCfg 0 77 429 7 57.14 0 0 70 1 240 4884 0 0 30
    Done
    
    mmwDemo:/>chirpCfg 0 0 0 0 0 0 0 1
    Done
    
    mmwDemo:/>chirpCfg 1 1 0 0 0 0 0 4
    Done
    
    mmwDemo:/>frameCfg 0 1 16 0 100 1 0
    Done
    
    mmwDemo:/>lowPower 0 0
    Done
    
    mmwDemo:/>guiMonitor 1 1 0 0 0 1
    Done
    
    mmwDemo:/>cfarCfg 0 2 8 4 3 0 1280
    Done
    
    mmwDemo:/>peakGrouping 1 1 1 1 229
    Done
    
    mmwDemo:/>multiObjBeamForming 1 0.5
    Done
    
    mmwDemo:/>clutterRemoval 0
    Done
    
    mmwDemo:/>calibDcRangeSig 0 -5 8 256
    Done
    
    mmwDemo:/>compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
    Done
    
    mmwDemo:/>measureRangeBiasAndRxChanPhase 0 1.5 0.2
    Done
    
    mmwDemo:/>CQRxSatMonitor 0 3 5 123 0
    Done
    
    mmwDemo:/>CQSigImgMonitor 0 119 4
    Done
    
    mmwDemo:/>analogMonitor 1 1
    Done
    
    mmwDemo:/>sensorStart
    Debug: Init Calibration Status = 0x1fe
    
    Exception: ../main.c, line 1671.

    "if the device is a IWR1642 ES2 or IWR1443 ES3 device, you need to have the proper BSS patch." 

    I have uploaded the radarss.bin file found in the mmWaveSDK  1.2.0.5.  As far as the silicon version, I am still unsure of how to determine.  I assume it's rev 2?   

    I ordered them on 8/19/2018 from the TI store and the part number is XI1443QGABL-Single-Chip 76-to-81GHz mmWave Sensor Integrating MCU and Hardware Accelerator.

    At this point I am leaning towards something seriously wrong with my board design and I'm willing to try editing the calibration mask bits to try to force the sensor to start chirping.  Perhaps it might lead to another clue?   Can you tell me where I would edit the calibration mask in the OOB demo?

    Thanks again Joe!  

      

  • In reply to Jason Parmenter:

    Hello,

    You want to use mmwace SDK ver mmwave_sdk_01_02_00_05.  You want to use the IWR1443 software, that has both a BSS download, and and MSS download.

    BSS - C:\ti\mmwave_sdk_01_02_00_05\firmware\radarss\ xwr12xx_xwr14xx_radarss.bin

    MSS - C:\ti\mmwave_sdk_01_02_00_05\packages\ti\demo\xwr14xx\mmw\xwr14xx_mmw_demo_mss.bin

    For the Out of Box demo.  There is also a data capture example using the UART, this is in the software development section.

    If there is a code error, or calibration error, you need to follow through the software function called in the source code, or main, and look at the line number.

    The current IWR1443 part should be ES2.  this requires 2 separate uniflash files, BSS, and MSS.

    The current IWR1642 part should be ES2, however you provide a special combined software image of BSS patch, and MSS and DSS code.

    In the  IWr1443 datasheet Identification section it shows the JTAG ID for electronic signature.

    If you have calibration errors, double check XRAY mounting, coplanartiy, check LDO supplies per the table in the datasheet for noise.

    If you just get calibration errors, if you recompile and force some of the test bit flags to zero, you might be able to pass less tests.

    This is described more completely, by downloading the Radar Studio dfp tool, in the docs folder is an Interface Control Document.

    Regards,

    Joe Quintal

  • In reply to Radio-Joe:

    Joe,

    We have traced it down to few lines of code.  It is not the same error code or exception in the code every time.  I have traced one error down to "CPU Failure" along with general ones that don't really indicate what the problem is.  Now that we are this far along and I have a semi-consistent hardware stack, I will try a few more radar assemblies and see if I can get one to pass startup tests.  I think I have about 5 assemblies that I can get consistent results out of.  

    I'm hoping that now that we at least have JTAG and some better debugging tools I can figure out what exactly is causing the failure. 

    Do you think it could me timing issues with QSPI signals?  I know they are not matched exactly. I figure the fact that we are flashing bin files to flash, we are ok with the QSPI signals?  Could that cause a calibration error?   

    Some major differences that would effect impedance of antenna traces and maybe other timing issues:

    • Our board is 4 layer vs 6
    • I inadvertently put solder mask over the antenna traces BUT not actual antenna  array.
    • No blind vias were used.  All vias are from top layer to bottom.

    Possible soldering issues.

    • I have a few in-pad vias that are not plated.  In other words, they are pads that have holes in them.  On some of the PCB's I have pre-filled the vias with solder and some I have not.  Some PCBs I have applied solder paste with a stencil, some I have applied tacky flux only.  I believe that pre-filling the via holes and and following up with flux only soldering should result in the correct solder job.

    I will follow up with some screen shots or even some eagle cad files and see if we can get to the bottom of this.  We do not have the resources for Xray inspection locally but perhaps I need to find someone that can help us with that.   

    Again, I'm hoping that now that we can read registers and debug with JTAG we can find the root cause. 

    We are using the most current mmWave SDK 1.2.0.5 code. 

    I will defienlty look at the JTAG electronic signature section in the data sheet  to double check that we are on ES2.

    We owe you one!.   

    -Jason

     

  • In reply to Jason Parmenter:

    I just wanted to share my design files in case anyone is willing to provide input on the design.  I truly appreciate any help.

    Regards,

    -Jason

    IWRR1443_TankGauge.brdIWRR1443_TankGauge.sch

  • In reply to Jason Parmenter:

    Joe,

    Where would I edit the calibration bit mask in the code?  I haven't been able to find any details on the calibration process.  Can you share any details on what tasks are performed in the calibration process when starting the sensor?  I'd like to setup a breakpoint and step into the calibration portion of the code and maybe see if there are any clues but I'm not sure where to set my breakpoint.  

    Thanks

  • In reply to Radio-Joe:

    Hello
    Currently you would need to customize the out of box demo. Look for MMWave_openLink() in mmwave_link.c.
    in future mmwave_sdk version 3.0 it can be adjusted. Currently you would have to modify the code to try other than 0x7fe as a mask.
    REgards,
    Joe Quintal
  • In reply to Radio-Joe:

    Joe,

    I can't find "MMWave_openLink" or the mmwaveLink.c file anywhere in the OOB demo? Can you be more specific on where this is located?

    Thanks!
  • In reply to Jason Parmenter:

    I found it. C:\ti\mmwave_sdk_01_02_00_05\packages\ti\control\mmwave\src\mmwave_link.c