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?