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.

AWR1243BOOST: Problem in sending ADC data over SPI

Part Number: AWR1243BOOST
Other Parts Discussed in Thread: AWR1243, , MMWAVE-STUDIO

Hi there,

I already have ported the mmwave library to an external processor and run the application examples with success.

Now, I want to use the SPI to gather ADC data.

To this purpose, I have set the intfSel field in rlDevDataPathCfg_t struct to 2 and I expect to receive ADC data through multiple async events with iD RL_DEV_AE_MSS_ADC_DATA_SB.

After having configured the AWR1243 and started the sensor (everything seems to were went well, since all the ACKs have been collected), I receive the first async event with iD RL_DEV_AE_MSS_ADC_DATA_SB. It correctly contains 220bytes od ADC data. But after that, no more async events are received and I'm not able to gather the whole data packet.

I was wondering whether the sensor expects some communication protocol after having send the first data packet. According to the ICD, my expectation is that I should receive all the async events in sequence without the need of replying the sensor.

Thank you in advance for any suggestion.

  • Hi Paolo,

    This is not a frequently used configuration - I need some time to check this behavior and if this feature is supported.

    I will get back to you on this by Friday.

    Best Regards,
    Anand
  • Hi Anand,
    Thank you for your reply.
    I'll be waiting for some suggestion by you.

    Regards,
    Paolo.
  • Dear Anand,

    While you're checking whether this feature is supported and how it works, I've noticed a couple of things that might be of interest.

    1. SOP mode configuration.
      In controlling AWR1243BOOST from an external processor, my expetation was that SOP mode must be connfigured to functional mode (i.e., 001 - SOP0 jumper closed and the others open).
      However, we noticed that there no way to control the AWR1243BOOST from an external processor through SPI unless we set the SOP mode exactly to the dual of the functional mode (i.e., 110 - SOP1 and SOP2 jumpers closed and SOP0 open).
    2. To send ADC data via SPI we set a very short frame (up to three pulses) with a frame repetition time of 1 second. This was intented to support the required ADC rate through the low throughput of the SPI lines. However in this case we don't see any SPI packet with ADC data. In contrary, if I set a long frame (which in principle would not be supported by the SPI throughput) I can see the first async event with ADC bytes as described in my first post.
    3. After sendind the rlSensorStart command, the AWR1243 protocol foresees an ack to be sent from the device to the external processor. This ack, sent via an async event (over SPI) is correctly received. But I have a doubt: might it be that in the meanwhile the ADC buffer is ready to send data over SPI, it try access the SPI bus which instead is already busy for the ack to the rlSensorStart? This could explain why I do not receive any ADC packet with short frames (it senses the bus which is busy and stops) while I receive the first data packet with long frames (the first is received beacuse while the frame is forming, the ack to the rlSensorStart has been sent and the bus is let unloaded). Plus, in the latter case I receive just the first data packet beacuse the SPI rate is not suffient to support the ADC required throughput.

    To try to overcome the problem at point 3. we tried to use an external trigger: So we wait the ack to the rlSensorStart (which is immediate for human beings clocking...) and then we start the transmission. However, also in this case we didin't succed. So somethings is still missing.

    Hope you're finding a solution.

    Regards,

    Paolo.

  • Hi Paolo,

    I'm afraid we are still having trouble with configuring the SPI data output mode. We will try and get back to you on this as soon as possible.

    For 2), could you please let us know the "long frame" settings you used that allowed you to get the first async event?

    For 1, regarding the SOP mode, closing the SOP mode jumpers sets the voltage on the pin to 3.3V. So the 110 mode requires SOP2 and SOP1 jumpers to be closed and SOP0 jumper to be open. This is expected behavior.



    Best Regards,
    Anand
  • Hi Anand,

    Thanks for your reply.

    For 1, my question was about the fact that the SOP mode 110 does not exist in any TI document I've seen up to now. Neverthless, its the only way to let the AWR1243BOOST working from external processor control.

    For 2, the chirp/profile/frame configuration provided with the mmwavelink_example in mmwave_dfp_01_00_00_01 its enough for us to receive the first async event with ADC data.

    Regards,
    Paolo
  • Hi Anand,
    Any update on this side?
  • Hi Paolo,
    With the external Host you need to set AWR1243 EVM in functional mode (where only SOP-0 is connected with jumper) only.

    Which AWR1243 Si version you are using, ES2.0 or ES3.0?

    Regards,
    Jitendra
  • Hi Jitendra,

    Thanks for your reply.

    I didn't understand what "Si version" actually means and where to retrieve this information.

    However, I got this answer from the chip after poweron the device.

    RF Version [ 2. 0. 0.15]
    MSS version [ 1.10. 0.23]
    mmWaveLink version [ 1. 0. 0. 0]

    Thanks,

    Paolo.

  • Hi Paolo,
    I was meant for Silicon version (ROM version).
    When you do the SPI connect from mmWave-Studio it prints die-ID on the GUI which is for ROM/HW version.

    We need to clear with the HW version you are using to chase ADC-over-SPI issue in right direction.

    Regards,
    Jitendra
  • Hi Jitendra,

    For the boards I've tested up to now, the content of "Die id" field is: Lot:6000001/Wafer:1/DevX:30/DevY:18.

    We have also a second set of boards, whose "Die id" is: Lot:7120004/Wafer:5/DevX:4/DevY:59.

    Can you please explain me the difference among them (if any) and clarify whether I need to take some further actions in using the AWR1243 device from an external host? (e.g., dfp version, mss and bss version, etc.)

    Thank you in advance,

    Paolo.

  • About Silicon version, it is ES2.0 in both cases.

  • Hi, Jitendra
    I answered your question last week as follows:
    Si version: ES2.0
    Die id: Lot:7120004/Wafer:5/DevX:4/DevY:59

    Please let me know if there are some updates or if it's hopeless.

    Thank you.
  • Hi Paolo,

    I have tried mmWave_example of DFP 1.0.0.1  on AWR1243 ES2.0 where I ran pre-built .exe but the change in mmwaveconfig.txt

    intfSel=2; /* For ADC over SPI */

    chirpEndIdxFCF=2; /* reduce no. of chirp to total 3 in a frame */

    frameCount=1; /* single frame */

    And I see multiple Async event for ADC data over SPI (in trace.txt, subID 0x500A, search for '[RD]0x500A' text in this file)

    Could you please try above setting change (mmwaveconfig.txt: single frame setting) with existing exe application at your end.

    Note- Based on single frame you can find out how much time device takes (time difference in trace.txt from first Async event to last one) to send all async event and give that much frame duration for muli-frame setting.

    Regards,

    Jitendra

  • Hi Jitendra,
    I tried with the settings you provided and the pre-built mmwave application example.
    I checked the trace.txt file and I correctly received multiple async events with ADC data.

    However, if I try with the same dfp library version ported on my external processor, I receive only the first ADC data packet via SPI.

    This souds a little bit strange, because I assume that the SPI lines and reception of async messages effectively works on my system (the whole system configuration together with start/stop commands works fine).

    Might it be a matter of fine tuning of communication interface parameters? For example, I've noticed that the SPI clock on the pre-built mmwave application example is much slower than mine (which runs at 1MHz).

    Any suggestion would be much appreciated.

    Regards,
    Paolo.
  • So, the issue looks like AWR SPI communication interface with an external processor.
    AWR1243 supports max 40MHz SPI clock and mmWaveLink_example uses ~10MHz SPI clock. Try to use the higher SPI clock at ext. processor end.

    AWR1243 accumulates all the chirp data and start sending over SPI when all the chirps of that frame are stored at the temporary buffer in the form of 256Bytes of SPI message chunks. As soon as Host reads first chunk message over SPI, it'll raise HostIRQ again for the next chunk. Make sure Host reads full data of async event message what no. of bytes device is sending.
    Check back the HostIRQ status when Host doesn't see more Async event (ADC-Data), i.e. during erroneous condition.
    Make sure you follow the same sequence of configuration the device (starting from bootup) as provided in mmwavelink_example, i.e. Host should wait for all the expecting async event during the device configuration (e.g. RF_Init Async event) only then send next command.


    Regards,
    Jitendra