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.

AWR2243: Porting mmWave DFP to Zynq FPGA, Getting "Checksum mismatched in the received msg" Error Constantly

Part Number: AWR2243

Tool/software:

I followed the porting guide from mmWaveLink docs and managed to run mmWaveDFP on my FPGA. I am running mmWaveLink_SingleChip_NonOS_Example and using SPI communication.

MMWL_powerOnMaster and MMWL_firmwareDownload go well. Howerver, after MMWL_setDeviceCrcType, the application starts to print "Checksum mismatched in the received msg" constantly.

But the application runs maybe successfully anyway despite having those "Checksum mismatched in the received msg" and sometimes "CRC mismatched in the received Async-Event msg "

Eventually, the application stops at the infinite loop where it waits for the device to set mmwl_bSensorStarted to 0x0. The code is as follows in block if (rlDevGlobalCfgArgs.LinkDynChirpTest == TRUE):

/* Wait for the frame end async event from the device */
while (mmwl_bSensorStarted != 0x0)
{
retVal = MMWL_DynAdvConfig(deviceMap);
if (retVal != 0)
{
printf("Dynamic Advance chirp LUT offset update failed with error code %d", retVal);
break;
}
rlNonOsMainLoopTask();
rlAppSleep(5);
}

Some information about my environment is that I simply implemented some of the callback functions: SPI transfer, IrqRegister, waitIrqStatus, open/close Device. And I implemented them in a simple way without considering thread safety or someting like that. Same reason I didn't implement IrqMask and IrqUnmask.

I couldn't enable mmwavelink debug log for now because my FPGA OS throws exceptions when I try to (if it is relevent to my problem I will append more information to it), so the best I can get is the printed message from the application.

The printed message from application is as follows:

================= mmWaveLink Example Application ====================

====================== SPI Mode of Operation ======================

rlDeviceEnable Callback is called by mmWaveLink for Device Index [0]

mmWave Device Power on success for deviceMap 1 

========================== Firmware Download ==========================

Meta Image download started for deviceMap 1

Download in Progress: 0%..2%..5%..8%..11%..14%..17%..20%..23%..26%..29%..32%..35%..38%..41%..44%..47%..50%..52%..55%..58%..61%..64%..67%..70%..73%..76%..79%..82%..85%..88%..91%..94%..97%..Done!

Meta Image download complete ret = 0

Firmware update successful for deviceMap 1 

=====================================================================

CRC Type set for MasterSS success for deviceMap 1 

Checksum mismatched in the received msg 

Checksum mismatched in the received msg 

Checksum mismatched in the received msg 

CRC mismatched in the received Async-Event msg 

RF Version [ 2. 2. 0.13] 
MSS version [ 2. 2. 1. 7] 
mmWaveLink version [ 2. 2. 3. 2]

RF Patch Version [ 2. 2. 4. 0] 
MSS Patch version [ 2. 2. 2. 0]

Radar/RF subsystem Power up successful for deviceMap 1 

======================Basic/Static Configuration======================

Calling rlSetChannelConfig With [15]Rx and [7]Tx Channel Enabled 

Channel Configuration success for deviceMap 1

Calling rlSetAdcOutConfig With [1]ADC Bits and [2]ADC Format 

AdcOut Configuration success for deviceMap 1

Calling rlRfSetLdoBypassConfig With Bypass [0] 

LDO Bypass Configuration success for deviceMap 1

Data format Configuration success for deviceMap 1

Low Power Configuration success for deviceMap 1 

APLL Synth BW Configuration success for deviceMap 1 

AsyncEvent Configuration success for deviceMap 1 

Basic/Static configuration success for deviceMap 1 

Checksum mismatched in the received msg 

Checksum mismatched in the received msg 

Checksum mismatched in the received msg 

Checksum mismatched in the received msg 

Checksum mismatched in the received msg 

Async event: RF-init calibration status 

CRC mismatched in the received Async-Event msg 

RF Initialization/Calibration successful for deviceMap 1 

==================Programmable Filter Configuration==================

Calling rlRfSetProgFiltConfig with 
coeffStartIdx[0]
progFiltLen[14] GHz
progFiltFreqShift[100] MHz/uS 

Programmable Filter Configuration success for deviceMap 1 

Calling rlRfSetProgFiltCoeffRam with 
coeffArray0[-876]
coeffArray1[-272] GHz
coeffArray2[1826] MHz/uS 

Programmable Filter coefficient RAM Configuration success for deviceMap 1 

======================FMCW Configuration======================

Calling rlSetProfileConfig with 
ProfileId[0]
Start Frequency[77.200256] GHz
Ramp Slope[29.981732] MHz/uS 

Profile Configuration success for deviceMap 1 

Calling rlSetChirpConfig with 
ProfileId[0]
Start Idx[0]
End Idx[63] 

Calling rlSetChirpConfig with 
ProfileId[0]
Start Idx[64]
End Idx[127] 

Get chirp configurations are matching with parameters configured during rlSetChirpConfig 

Chirp Configuration success for deviceMap 1 

==================Data Path(LVDS/CSI2) Configuration==================

Calling rlDeviceSetDataPathConfig with HSI Interface[1] Selected 

Data Path Configuration successful for deviceMap 1 

Calling rlDeviceSetDataPathClkConfig with HSI Data Rate[6] Selected 

MMWL_hsiDataRateConfig success for deviceMap 1

Calling rlDeviceSetHsiClk with HSI Clock[11] 

MMWL_setHsiClock success for deviceMap 1

CSI2/LVDS Clock Configuration success for deviceMap 1 

LaneConfig success for deviceMap 1

LvdsLaneConfig success for deviceMap 1

CSI2/LVDS Lane Configuration success for deviceMap 1 

======================================================================

Calling rlSetFrameConfig with 
Start Idx[0]
End Idx[127]
Loops[1]
Periodicity[100]ms 

Frame Configuration success for deviceMap 1 

======================================================================

Async event: Frame trigger 

CRC mismatched in the received Async-Event msg 

Checksum mismatched in the received msg 

Checksum mismatched in the received msg 

Checksum mismatched in the received msg 

Sensor Start successful for deviceMap 1 

======================================================================

Calling DynChirpCfg with chirpSegSel[0]
chirpNR1[0]

Dynamic Chirp config successful for deviceMap 1 

Dynamic Chirp Enable successful for deviceMap 1 

======================================================================

Checksum mismatched in the received msg 

Checksum mismatched in the received msg 

Checksum mismatched in the received msg 

Get chirp configurations are matching with parameters configured via dynChirpConfig 

GetChirp Configuration success for deviceMap 1 

Checksum mismatched in the received msg 

My question is:

1. Why is there fixed amount of such error message every time I run the appilcation? Is the amount the maximum one before mmwavelink throws exception and proceed anyway? If not what could cause this strange phenomenon.

2. Why am I getting wrong checksum or CRC, is it my SPI transfer not robust enough? But if so, I don't think I can run the other steps of the application successfully, and I have checked the SPI waveform to make sure it follows the SPI timing requirements in the datasheet, so why?

3. How to fix the application from only being able to perform MMWL_sensorStart() but no further? Can I just ignore the current bug and assume I ported mmwavelink successfully?