Why is my poll_rx_ts value zero?

Dear Everybody,

I am a beginner for using DW1000. I am trying to port the simplest SS_TWR_INIT and SS_TWR_RESP example into Raspberry Pi 3.
The SPI commnucation was well ported, I verifed it by several different way.
The slow speed of SPI is 1.5MHz and the high speed of SPI is 7.5MHz in my system.

Once initiator sent range packet to the responder, responder received the packet and should write the receiving timestamp into 0x15 register with 40bits value. However, I checked the register(0x15), then the value was all zero. Why does it happen? The below is the portion I am able to read RX timestamp in full source code.

    /* Retrieve poll reception timestamp. */
    poll_rx_ts = get_rx_timestamp_u64();

Anybody who knows why please let me know the reason. Any kind of suggestion would be welcome.

Thanks in advance

James

Hi

Is your (0x36:04), LDERUNE “0” or “ 1” . If “0” could you set it to “1”

See section 2.5.4 Default Receiver Configuration in the user manual.
" The LDERUNE bit is enabled by default, which means that the microcode (the LDE algorithm) that has been loaded in RAM will execute on every frame reception, which in turn will calculate accurate frame time-of arrival. However the DW1000 needs to load this microcode on power-on from a special ROM area in the DW1000. This is done by enabling the LDELOAD bit as part of DW1000 initialisation (because after powering up the DW1000 (or after exiting SLEEP or DEEPSLEEP states) the LDE RAM is empty). This should be done before the receiver is enabled if it is important to timestamp this received frame. If the LDE code is not being loaded before the receiver is enabled then the LDERUNE (LDE run enable) control in Sub-Register 0x36:04 – PMSC_CTRL1 must be turned off (set to zero).

/Leo

1 Like