Obtaining the CIR using the SPI

Hello everyone,

I am currently working on a localization system using the UWB technology. Up to now, the system can localize a tag inside a two-dimensional environment using 3 anchors. On the tag-side, the DecaWave used to perform the UWB communicates with a PSoC through a SPI. At this point, the data sent from an anchor to the tag can be completely transferred to the PSoC using the SPI, which shows that the master-slave communication is working.

However, in order to implement a single-anchor localization, the CIR from the tag is needed. I tried to get it from the register 0x25 as stated in the User Manual from DW, but none of my attempt was a success.

Different verifications have been done.

  • The order sent from the PSoC to the DW were analyzed using an oscilloscope and where coherent.
  • The flags needed to allow the reading of the accumulator are all set:
    • AMCE = 1 (0x36, reg0, bit15)
    • FACE = 1 (0x36, reg0, bit6)
    • RXCLKS = 10 (0x36, reg0, bit23)
  • The 0x15 (Receive Time Stamp) has been used to find the leading edge.

Despite to different tries, the only received response is a byte with the values being: “0x00”. Those values are pushed by the DW into its buffer since when storing those values in a pre-initialized vector, those are erased and replaced with “0x00”

I am completely stuck at this point. If anyone has a clue or knows what I’m doing wrong, please let me know.

PS : I already checked the forum multiple times and found this topic : [Accessing Accumulator data (CIR)], but it did not helped me to get my stuff do the job.

Does your code automatically re-arm the receiver after a packet has been received? If so this may be your problem. Enabling receive wipes the CIR memory, if you have done this and then try reading the values you’ll get all 0’s since nothing has been received yet.