WXK
2024-11-07 a61102099d74e7a5293696af70a18104e8e78975
Src/application/dw_app.c
@@ -104,15 +104,15 @@
    /* Configure DW1000. See NOTE 6 below. */
    dwt_configure(&config);//配置DW1000
    dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1);
//    dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1);
    /* Apply default antenna delay value. See NOTE 1 below. */
    dwt_setrxantennadelay(RX_ANT_DLY);      //设置接收天线延迟
    dwt_settxantennadelay(TX_ANT_DLY);      //设置发射天线延迟
    dwt_setrxtimeout(1000);//设定接收超时时间,0位没有超时时间
   dwt_rxenable(0);//打开接收
//    dwt_setrxtimeout(1000);//设定接收超时时间,0位没有超时时间
//   dwt_rxenable(0);//打开接收
//    uwbid=dwt_readdevid();
    /* Set expected response's delay and timeout. See NOTE 4 and 5 below.
     * As this example only handles one incoming frame with always the same delay and timeout, those values can be set here once for all. */
@@ -140,19 +140,48 @@
u32 id;
void UWB_Wkup(void)
{
u8 iderror_count = 0;
    SPIx_CS_GPIO->BRR = SPIx_CS;
    delay_us(600);
    SPIx_CS_GPIO->BSRR = SPIx_CS;
    id =  dwt_readdevid() ;
    while (0xDECA0130!=id)
    {
        u8 iderror_count = 0;
        id =  dwt_readdevid() ;
        if(iderror_count++>100)
        {
            iderror_count=0;
            printf("UWB芯片ID错误\r\n");
            break;
        }
    }
}
uint8_t uwb_errorflag;
void UWB_RXON()
{
     if(!uwb_errorflag)
     {
//    Dw1000_Init();
    UWB_Wkup();
//    dwt_forcetrxoff();
//    dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 0);
//    delay_ms(1);
    dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1);
    dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
   dwt_rxenable(0);
//         HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
     }
}
void UWB_RXOFF()
{
     if(!uwb_errorflag)
     {
    dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 0);
    dwt_forcetrxoff();
    delay_ms(1);
    dwt_entersleep();
//         HAL_NVIC_DisableIRQ(EXTI4_15_IRQn);
     }
}