Hi all,
After waking up dw1000, first tx-timestamp reading returns incorrect value. Least significant byte returns always 0.
Here is the wake up funct:
int uwb_wakeup_on_cs(void){ if(dwt_readdevid() != DWT_DEVICE_ID) { spi_reset_cs(); k_msleep(1); spi_set_cs(); k_msleep(5); } if(dwt_readdevid() != DWT_DEVICE_ID) { return DWT_ERROR; } return DWT_SUCCESS;
}
Here is sleep conf:
dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_LOADOPSET | DWT_CONFIG, 0x05);
Here is wake-up process:
g_return = uwb_wakeup_on_cs(); meeblue_turn_on_led(LED2_GREEN_PIN); init_frame[FRAME_SN_INDEX] = index; msg_set_ts(&init_frame[TWR_INIT_FRAME_GUID_INDEX], (uint64_t)tag_guid); msg_set_uint16(&init_frame[TWR_INIT_FRAME_RESERVED_SLOT_INDEX], TIME_TO_SLOT(g_poll_time)); uwb_transmit_msg(sizeof(init_frame), init_frame, (DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED)); k_usleep(RESPONSE_INITIAL_DELAY + (CLUSTER_SIZE * RESPONSE_DELAY_US)); init_tx_ts = get_tx_timestamp_u64();