Hi to all
I’m running a DW1000 application and now i have a problem to ping multiple anchor after a wake up from sleep mode.
I make this sequence.
-
turn on the board
-
Send a single message to the all the anchor just to identify me and receive configuration data and this parts work fine
-
go to sleep both DW1000 and microcontroller, to do this i use this api call for the DW1000
dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_SLP_EN); dwt_entersleep();
-
After 2 second i wake up microcontroller and DW1000 with this api for DW1000, during the sleep i never remove power to the DW1000
dwt_spicswakeup(dummy_buffer, DUMMY_BUFFER_LEN); After the wakeup reconfigure the dw1000 dwt_configure(&config); dwt_setrxantennadelay(RX_ANT_DLY); dwt_settxantennadelay(TX_ANT_DLY); dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS); dwt_setlnapamode(1,1);
-
Start a three way range exchange with four anchor but just the first one work the other stop when DW1000 will receive the anchor answer.
my sequence is:
Send start ranging message to the anchor (this message works in all the four case)Receive the anchor answer to calculate timesamp (this message is received only first time), seem that my DW1000 receive somethings because the EXTRXE pin go LOW before the expiration of RXTIMEOUT but the RXDFR bit of status reg is not set while is set RXPRD,
RXSFDD, LDEDONE and RXPHD bit. I see also that the EXTTXE pin of the anchor go high before the RXTIMEOUT.Send back the final message to calculate distance (also this works just the first time due to the fail of previous message)
If i don’t go to sleep all works fine and also if i put to sleep just the DW1000 (not the micro) all works fine but if place both to sleep i have this problem.
Have any suggest?