#ifndef __DW_APP_H__ #define __DW_APP_H__ #include #include "main.h" #include "deca_device_api.h" //#include "deca_device_api_3000.h" #include "deca_regs.h" #include "dw_driver.h" #include "ADC.h" #include "TrackingDiff.h" #define BASELOST_STOPMOTOR_TIME 5 //BITSTATE #define GOINGSLEEPBIT 1 //#define NEWBOARD //#define TAG_OUTPUT #define HEX_OUTPUT #define MAX_NEARBASE_NUM 12 #define REPOET_ANC_NUM 1 #define REPOET_ANC_NUM_MIN 1 #define TAG_ID_START 0// 0x00980000 #define GROUP_TAG_NUM 2 #define TAG_NUM_IN_SYS 256 #define DFT_RAND_DLY_TIM_MS 1 #define QUIT_SLOT_TIME 5 #define KEEP_TIMES 30 #define SLOT_SCALE 0.7 #define RNG_DELAY_MS 100 /* Default antenna delay values for 64 MHz PRF. See NOTE 1 below. */ #define TX_ANT_DLY 0 #define RX_ANT_DLY 32899 /* UWB microsecond (uus) to device time unit (dtu, around 15.65 ps) conversion factor. * 1 uus = 512 / 499.2 µs and 1 µs = 499.2 * 128 dtu. */ #define UUS_TO_DWT_TIME 65536 /* Delay between frames, in UWB microseconds. See NOTE 4 below. */ /* This is the delay from the end of the frame transmission to the enable of the receiver, as programmed for the DW1000's wait for response feature. */ #define POLL_TX_TO_RESP_RX_DLY_UUS 150 /* This is the delay from Frame RX timestamp to TX reply timestamp used for calculating/setting the DW1000's delayed TX function. This includes the * frame length of approximately 2.66 ms with above configuration. */ #define RESP_RX_TO_FINAL_TX_DLY_UUS 410 /* Receive response timeout. See NOTE 5 below. */ #define RESP_RX_TIMEOUT_UUS 2000 #define DELAY_BETWEEN_TWO_FRAME_UUS 550 #define POLL_RX_TO_RESP_TX_DLY_UUS 470 /* This is the delay from the end of the frame transmission to the enable of the receiver, as programmed for the DW1000's wait for response feature. */ #define RESP_TX_TO_FINAL_RX_DLY_UUS 10 /* Receive final timeout. See NOTE 5 below. */ #define FINAL_RX_TIMEOUT_UUS 4300 #define SPEED_OF_LIGHT 299702547 //MESSAGE_TYPE #define POLL 0x01 #define RESPONSE 0x02 #define FINAL 0x03 #define SYNC 0x04 #define NEAR_MSG 0x05 #define NEAR_POLL 0x06 #define NEAR_RESPONSE 0x07 #define NEAR_FINAL 0x08 //General #define GROUP_ID_IDX 0 #define ANCHOR_ID_IDX 1 #define TAG_ID_IDX 5 #define MESSAGE_TYPE_IDX 9 //Poll #define ANC_TYPE_IDX 14 //respose #define DIST_IDX 10 #define ANCTIMEMS 14 #define ANCTIMEUS 16 #define MAINBASE_INDEX 18 #define MOTORSTATE_INDEX 19 #define REMOTEPARA_INDEX 20 #define RESP_MSG_POLL_RX_TS_IDX 26 #define RESP_MSG_RESP_TX_TS_IDX 30 #define RESP_MSG_ANC_DISTOFFSET 34 #define TAGSLOTPOS 7 //Final #define FINAL_MSG_POLL_TX_TS_IDX 10 #define FINAL_MSG_RESP_RX_TS_IDX 14 #define FINAL_MSG_FINAL_TX_TS_IDX 18 #define FINAL_MSG_RESP_RX_NEARBASE_IDX 22 #define FINAL_MSG_TS_LEN 4 //SYNC #define ANCHOR_ID_IDX 1 #define SYNC_SEQ_IDX 5 //NEAR MSG #define NEARMSG_EMPTYSLOTPOS_INDEX 1 //RESPONSE #define NEARBASENUM_INDEX 10 #define NEARBASEID_INDEX 11 //NEAR POLL #define SEQUENCE_IDX 3 #define BATTARY_IDX 4 #define BUTTON_IDX 7 #define SLOTTIME_MS 48 #define REMOTEPARA_LEN 18 #define THRESHOLD_CHANGE_MAINBASE_DIST 5 #define DW_CTRL_GPIO GPIOA #define DW_ENABLE HAL_GPIO_WritePin(DW_CTRL_GPIO, DW_CTRL_Pin, GPIO_PIN_RESET) #define DW_DISABLE HAL_GPIO_WritePin(DW_CTRL_GPIO, DW_CTRL_Pin, GPIO_PIN_SET) extern TrackingDiffClass *pUWBDistanceTrackingDiff; extern uint16_t poll_timer,tag_timer; extern int8_t tag_delaytime; extern uint32_t dev_id; extern uint8_t anchor_type; extern uint32_t time32_incr; extern uint16_t tag_recv_timer; extern double dist_cm; extern uint32_t g_UWB_com_interval; extern float dis_after_filter; extern uint8_t usart_send[25]; void IdleTask(void); uint16_t Checksum_u16(uint8_t* pdata, uint32_t len); void Dw1000_Init(void); void Tag_App(void); void Anchor_App(void); void tag_sleep_configuraion(void); extern int32_t g_Tagdist[TAG_NUM_IN_SYS]; extern dwt_config_t config; extern void TagDistClear(void); void Dw1000_App_Init(void); #endif