51uwb.cn

标题: 【提问】DWM1000模块 不能触发中断 [打印本页]

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

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

  5. //    spi_set_rate_low();
  6.     while(dwt_initialise(DWT_LOADUCODE)== DWT_ERROR)
  7.     {
  8.         rt_pin_write(LED_GREEN, PIN_LOW);
  9.         rt_thread_mdelay(500);
  10.     }
  11. //    spi_set_rate_high();
  12.     /* Configure DW1000. See NOTE 7 below. */
  13.     dwt_configure(&config);
  14.     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);
  15.     dwt_setrxantennadelay(RX_ANT_DLY);
  16.     dwt_settxantennadelay(TX_ANT_DLY);
  17.     dwt_setpreambledetecttimeout(PRE_TIMEOUT);
  18.     dwt_configuresleep(DWT_PRESRV_SLEEP |DWT_CONFIG,DWT_WAKE_CS|DWT_SLP_EN);
  19.     dwt_setrxtimeout(0);
  20.     dwt_rxenable(DWT_START_RX_IMMEDIATE);
  21.     uwb_states = UWB_READY;
  22.     port_EnableEXT_IRQ();
  23. }
复制代码





作者: 蓝点无限    时间: 2020-7-22 20:29
但是DECAIRQ中断 不触发。标签端是一直在发的。-->发送完成中断?
建议你中断单独一个一个enable,单独去排查问题,我看你程序enable了一大堆
作者: 学长啊啊啊    时间: 2020-7-23 16:36
蓝点无限 发表于 2020-7-22 20:29
但是DECAIRQ中断 不触发。标签端是一直在发的。-->发送完成中断?
建议你中断单独一个一个enable,单独去 ...

读寄存器 SYS_STATUS_ID( 0x0F)得到的是 0x800002
也就是SYS_STATUS_SLP2INIT这个标志被置1了,
有没有中文资料描述一下这些寄存器的状态值呀?
作者: 学长啊啊啊    时间: 2020-7-29 14:04
过了这么久 回来结个帖。

问题找到了,SPI通信速率的问题。系统时钟168MHz, SPI的时钟总线给他4分频了。导致波特率上不去。
UWB在通信的时候对时间的要求很严格。大家在调试的时候要注意呀!
作者: woshi123    时间: 2020-8-20 11:26
说的好,我也注意下
作者: linfei_wang    时间: 2020-10-24 11:49
学长啊啊啊 发表于 2020-7-29 14:04
过了这么久 回来结个帖。

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

你好,可以具体介绍下SPI通信速率和系统时钟匹配上的具体代码配置吗,我最近在做DW1000收发实验的时候也遇到了中断的问题,在主函数里面循环接收可以收到数据,但是设置了回调函数以后就始终进不去
作者: zzz0012    时间: 2022-7-14 14:39
我也遇到了,,求解。。。
作者: tansf    时间: 2022-8-8 03:06
这个DW1000的 SPI 通信要求真是不一般




欢迎光临 51uwb.cn (http://51uwb.cn/) Powered by Discuz! X3.3