2020/5/26

openradar. read in frame

adc.py 的 class : DCA1000 有說明大概怎麼用。
  • Power On DCA1000 and ARW1642
  • open mmWave Studio and setup normally until tab SensorConfig or use lua script
  • Make sure to connect mmWaveStudio to the board via enternet
  • Start streaming data
  • Read in frame using class
Examples:
   dca = DCA1000()
   adc_data = dca.read(timeout=.1)
   frame = dca.organize(adc_data, 128, 4 256)
source code 中,DCA1000() class initialize function,就是設定好 socket, ip , port,和class variable。

read( ) function,把一個 frame 的空間準備好 (fill with zero)
frame size (int bytes) =
ADC_PARAMS['chirps'] * ADC_PARAMS['rx'] * ADC_PARAMS['tx'] * ADC_PARAMS['IQ'] * ADC_PARAMS['samples'] * ADC_PARAMS['bytes']
上面的dict 宣告在前面:
ADC_PARAMS = {'chirps' : 128,
              'rx'     : 4,
              'tx'     : 3,
              'samples': 128,
              'IQ'     : 2
              'bytes'  : 2}
IQ 大概是 I and Q (complex) 兩個都要,所以是 2
bytes 大概是每個數值的大小。

其實source code 中還有一個 config( ) function,是送出 UDP command 給 DCA1000,對應 DCA1000EVM_CLI_Control.exe 的命令,大概是
fpga
start_record
要下這兩個 command,DCA1000EVM 才會開始把 LVDS 資料由UDP 送出。
所以可能要加一下。

上面是讀取 frame ADC data 的大略流程。

Processing 的流程,在 Presense Applied Radar 目錄下…有一些 jupyter source ..
但是data source 都是由檔案讀取,
依照data size,方別有 txt 跟 numpy 的 np兩種格式。
所以猜測,上面用 DCA1000().read 讀入資料後,依照 numpy 的格式寫成檔案。
再用這邊的 jupyter sourece 讀取


上面的 chirps, rx, tx, samples 資料,都是送給 AWR1642BOOST 的config.
整個送給 AWR1642BOOST 的 command 可以參考dca1000 command line tool

其中有關的 command 是..

profileCfg
profileID  startFreq idleTime adcStartTime rampEndTime txOutPower txPhaseShift freqSlopeConst txStartTime numAdcSamples digOutSampleRate hpfCornerFreq1 hpfCornerFreq2 rxGain
samples 其中的 numAdcSamples : number of ADC samples collected during "ADC Sample Time". Example: 256

channelcfg
rxChannelEn txChannelEn cascading numADCBits adcOutputFmt
rx 其中的rxChannelEn :Receive antenna mask. e.g for 4 antenna, it's 0x1111b = 15

frameCfg
chirpStartIndex ChirpEndIndex NumberOfLoops numberOfFrames FramePeriodicityInMS TriggerSelect FrameTriggerDelay
chirps NumberOfLoops : 一個 frame 要重複這個設定幾次
這個決定一個 frame 有幾個 chirp,實際上和 ChirpStartIndex, ChirpEndIndex 有關,每一個 'Loop' 會從 StartIndex 的 chirp config 開始打,打到 EndIndex 的 chirp config.
所以,如果 startIndex = 0,endIndex = 1,每個 loop 就會打兩個 chirp。
如果 loop = 64 的話,每個 frame 就會有 2x 64 = 128 chirps

沒有留言:

張貼留言