WXK
2023-07-20 752d7fbda86c4c7876bfea47d823f12cf2cf4494
Src/application/dw_app.c
@@ -97,9 +97,9 @@
#ifdef _UWB_4G
   2,               /* Channel number. */
#else
    5,
    9,
#endif
    DWT_PLEN_128,    /* Preamble length. Used in TX only. */
    DWT_PLEN_1024,    /* Preamble length. Used in TX only. */
    DWT_PAC8,        /* Preamble acquisition chunk size. Used in RX only. */
    9,               /* TX preamble code. Used in TX only. */
    9,               /* RX preamble code. Used in RX only. */
@@ -233,7 +233,7 @@
    }
 dw3000_id=dwt_read32bitreg(SYS_STATUS_ID);;
   /* Configure the TX spectrum parameters (power, PG delay and PG count) */
    dwt_configuretxrf(&txconfig_options);
    dwt_configuretxrf(&txconfig_options_ch9);
    /* Apply default antenna delay value. See NOTE 1 below. */
    dwt_setrxantennadelay(RX_ANT_DLY);      //设置接收天线延迟
    dwt_settxantennadelay(TX_ANT_DLY);      //设置发射天线延迟
@@ -244,7 +244,7 @@
//    dwt_setpreambledetecttimeout(PRE_TIMEOUT);
    /* Next can enable TX/RX states output on GPIOs 5 and 6 to help debug, and also TX/RX LEDs
     * Note, in real low power applications the LEDs should not be used. */
        dwt_setlnapamode(DWT_LNA_ENABLE|DWT_PA_ENABLE);
//        dwt_setlnapamode(DWT_LNA_ENABLE|DWT_PA_ENABLE);
//        dwt_entersleep();
//        dwt_setleds(DWT_LEDS_ENABLE | DWT_LEDS_INIT_BLINK);
//    dw3000_id=dwt_read32bitreg(SYS_STATUS_ID);;
@@ -750,37 +750,34 @@
u8 regpoll_count;
u32 id;
 u8 iderror_count = 0;
float time1=0;
float time2=0;
float time3=0;
uint32_t temp23;
void Tag_App(void)//发送模式(TAG标签)
{    
    
   time1=freqlost_count;
   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
//   time1=freqlost_count;
//   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
//    delay_us(1000);
//    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
//    delay_ms(2);
//   while(!dwt_checkidlerc()) //check in IDLE_RC before proceeding
//    {
//    }
   id =  dwt_readdevid() ;
   while (DWT_DEVICE_ID != id)
    {
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
    delay_us(1000);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
    delay_ms(2);
   while(!dwt_checkidlerc()) //check in IDLE_RC before proceeding
    {
    }
    dwt_restoreconfig();
//   id =  dwt_readdevid() ;
//   while (DWT_DEVICE_ID != id)
//    {
//
//        id =  dwt_readdevid() ;
////        if(iderror_count++>100)
////        {
////            printf("UWB芯片ID错误");
////            break;
////        }
//        iderror_count++;
//    }
temp23 =  dwt_read32bitreg(CHAN_CTRL_ID) ;
        id =  dwt_readdevid() ;
//    iderror_count=0;
        iderror_count++;
    }
    dwt_restoreconfig();
    iderror_count=0;
//    delay_us(100);
//   g_Resttimer=0;
//    if(freqlost_count>FREQ_LOST_TIME)
@@ -797,66 +794,65 @@
//            Registor_Poll();
//        }
//    }
    time2=freqlost_count;
   NearPoll();
    time3=freqlost_count;
//    dwt_configuresleep(DWT_CONFIG, DWT_PRES_SLEEP | DWT_WAKE_CSN | DWT_WAKE_WUP | DWT_SLP_EN);
     dwt_restoreconfig();
    dwt_configuresleep(DWT_CONFIG, DWT_PRES_SLEEP | DWT_WAKE_CSN | DWT_WAKE_WUP | DWT_SLP_EN);
   dwt_entersleep();
//    bat_percent=Get_VDDVlotage();
    bat_percent=Get_VDDVlotage();
}
static uint8_t tx_msg[] = {0xC5, 0, 'D', 'E', 'C', 'A', 'W', 'A', 'V', 'E'};
/* Index to access to sequence number of the blink frame in the tx_msg array. */
#define BLINK_FRAME_SN_IDX 1
//static uint8_t tx_msg[] = {0xC5, 0, 'D', 'E', 'C', 'A', 'W', 'A', 'V', 'E'};
///* Index to access to sequence number of the blink frame in the tx_msg array. */
//#define BLINK_FRAME_SN_IDX 1
#define FRAME_LENGTH    sizeof(tx_msg)+FCS_LEN//The real length that is going to be transmitted
//#define FRAME_LENGTH    sizeof(tx_msg)+FCS_LEN//The real length that is going to be transmitted
/* Inter-frame delay period, in milliseconds. */
#define TX_DELAY_MS 1000
///* Inter-frame delay period, in milliseconds. */
//#define TX_DELAY_MS 1000
void Tag_App666(void)//发送模式(TAG标签)
{
    while (1)
    {
        /* Write frame data to DW IC and prepare transmission. See NOTE 3 below. */
        dwt_writetxdata(FRAME_LENGTH-FCS_LEN, tx_msg, 0); /* Zero offset in TX buffer. Data does not include the CRC */
        /* In this example since the length of the transmitted frame does not change,
         * nor the other parameters of the dwt_writetxfctrl function, the
         * dwt_writetxfctrl call could be outside the main while(1) loop.
         */
        dwt_writetxfctrl(FRAME_LENGTH, 0); /* Zero offset in TX buffer, no ranging. */
//void Tag_App666(void)//发送模式(TAG标签)
//{
//    while (1)
//    {
//        /* Write frame data to DW IC and prepare transmission. See NOTE 3 below. */
//        dwt_writetxdata(FRAME_LENGTH-FCS_LEN, tx_msg, 0); /* Zero offset in TX buffer. Data does not include the CRC */
//        /* In this example since the length of the transmitted frame does not change,
//         * nor the other parameters of the dwt_writetxfctrl function, the
//         * dwt_writetxfctrl call could be outside the main while(1) loop.
//         */
//        dwt_writetxfctrl(FRAME_LENGTH, 0); /* Zero offset in TX buffer, no ranging. */
        /* Start transmission. */
        dwt_starttx(DWT_START_TX_IMMEDIATE);
//        /* Start transmission. */
//        dwt_starttx(DWT_START_TX_IMMEDIATE);
        /* Poll DW IC until TX frame sent event set. See NOTE 4 below.
         * STATUS register is 5 bytes long but, as the event we are looking at is in the first byte of the register, we can use this simplest API
         * function to access it.*/
        while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS_BIT_MASK))
        { };
//        /* Poll DW IC until TX frame sent event set. See NOTE 4 below.
//         * STATUS register is 5 bytes long but, as the event we are looking at is in the first byte of the register, we can use this simplest API
//         * function to access it.*/
//        while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS_BIT_MASK))
//        { };
        //Sleep(200); /* If using LEDs we need to add small delay to see the TX LED blink */
//        //Sleep(200); /* If using LEDs we need to add small delay to see the TX LED blink */
        /* Put DW IC to sleep. Go to IDLE state after wakeup*/
        dwt_entersleep(DWT_DW_IDLE);
//        /* Put DW IC to sleep. Go to IDLE state after wakeup*/
//        dwt_entersleep(DWT_DW_IDLE);
        /* Execute a delay between transmissions. */
//        /* Execute a delay between transmissions. */
        delay_ms(1000);
        /* Wake DW IC up. See NOTE 5 below. */
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
    delay_us(1000);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
//        delay_ms(1000);
//        /* Wake DW IC up. See NOTE 5 below. */
//    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
//    delay_us(1000);
//    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
         delay_ms(2);
        while(!dwt_checkidlerc()) //check in IDLE_RC before proceeding
        {
        }
//         delay_ms(2);
//        while(!dwt_checkidlerc()) //check in IDLE_RC before proceeding
//        {
//        }
        /* Restore the required configurations on wake */
        dwt_restoreconfig();
//        /* Restore the required configurations on wake */
//        dwt_restoreconfig();
        /* Increment the blink frame sequence number (modulo 256). */
        tx_msg[BLINK_FRAME_SN_IDX]++;
    }
}
//        /* Increment the blink frame sequence number (modulo 256). */
//        tx_msg[BLINK_FRAME_SN_IDX]++;
//    }
//}