学长啊啊啊 发表于 2020-7-22 09:38:13

【提问】DWM1000模块 不能触发中断

按照例程 配置好模块和硬件以后,模块就运行起来了,读ID 自检什么的都通过了。但是DECAIRQ中断 不触发。标签端是一直在发的。
手动把IRQ引脚拉高进行读操作 可以读到数据,但是数据不是标签发送的数据。
希望路过的大佬 指导一下,或者提供一个排查的思路。

如下是对模块的配置。
static dwt_config_t config = {
    2,               /* Channel number. */
    DWT_PRF_64M,   /* Pulse repetition frequency. */
   DWT_PLEN_128,   /* Preamble length. Used in TX only. */
   DWT_PAC8,       /* Preamble acquisition chunk size. Used in RX only. */
    5,//5,               /* TX preamble code. Used in TX only. */
    5,//5,               /* RX preamble code. Used in RX only. */
    0,               /* 0 to use standard SFD, 1 to use non-standard SFD. */
    DWT_BR_6M8,   /* Data rate. */
    DWT_PHRMODE_STD, /* PHY header mode. */
    (129 + 8 - 8)/* SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */
};
void APP_UWB_SoftInit(void)
{
    port_DisableEXT_IRQ();
    reset_DW1000();

//    spi_set_rate_low();
    while(dwt_initialise(DWT_LOADUCODE)== DWT_ERROR)
    {
      rt_pin_write(LED_GREEN, PIN_LOW);
      rt_thread_mdelay(500);
    }
//    spi_set_rate_high();
    /* Configure DW1000. See NOTE 7 below. */
    dwt_configure(&config);
    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_setrxantennadelay(RX_ANT_DLY);
    dwt_settxantennadelay(TX_ANT_DLY);
    dwt_setpreambledetecttimeout(PRE_TIMEOUT);
    dwt_configuresleep(DWT_PRESRV_SLEEP |DWT_CONFIG,DWT_WAKE_CS|DWT_SLP_EN);
    dwt_setrxtimeout(0);
    dwt_rxenable(DWT_START_RX_IMMEDIATE);
    uwb_states = UWB_READY;
    port_EnableEXT_IRQ();
}



蓝点无限 发表于 2020-7-22 20:29:44

但是DECAIRQ中断 不触发。标签端是一直在发的。-->发送完成中断?
建议你中断单独一个一个enable,单独去排查问题,我看你程序enable了一大堆

学长啊啊啊 发表于 2020-7-23 16:36:48

蓝点无限 发表于 2020-7-22 20:29
但是DECAIRQ中断 不触发。标签端是一直在发的。-->发送完成中断?
建议你中断单独一个一个enable,单独去 ...

读寄存器 SYS_STATUS_ID( 0x0F)得到的是 0x800002
也就是SYS_STATUS_SLP2INIT这个标志被置1了,
有没有中文资料描述一下这些寄存器的状态值呀?

学长啊啊啊 发表于 2020-7-29 14:04:03

过了这么久 回来结个帖。

问题找到了,SPI通信速率的问题。系统时钟168MHz, SPI的时钟总线给他4分频了。导致波特率上不去。
UWB在通信的时候对时间的要求很严格。大家在调试的时候要注意呀!

woshi123 发表于 2020-8-20 11:26:39

说的好,我也注意下

linfei_wang 发表于 2020-10-24 11:49:25

学长啊啊啊 发表于 2020-7-29 14:04
过了这么久 回来结个帖。

问题找到了,SPI通信速率的问题。系统时钟168MHz, SPI的时钟总线给他4分频了。 ...

你好,可以具体介绍下SPI通信速率和系统时钟匹配上的具体代码配置吗,我最近在做DW1000收发实验的时候也遇到了中断的问题,在主函数里面循环接收可以收到数据,但是设置了回调函数以后就始终进不去

zzz0012 发表于 2022-7-14 14:39:43

我也遇到了,,求解。。。

tansf 发表于 2022-8-8 03:06:11

这个DW1000的 SPI 通信要求真是不一般
页: [1]
查看完整版本: 【提问】DWM1000模块 不能触发中断