【提问】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();
}
但是DECAIRQ中断 不触发。标签端是一直在发的。-->发送完成中断?
建议你中断单独一个一个enable,单独去排查问题,我看你程序enable了一大堆 蓝点无限 发表于 2020-7-22 20:29
但是DECAIRQ中断 不触发。标签端是一直在发的。-->发送完成中断?
建议你中断单独一个一个enable,单独去 ...
读寄存器 SYS_STATUS_ID( 0x0F)得到的是 0x800002
也就是SYS_STATUS_SLP2INIT这个标志被置1了,
有没有中文资料描述一下这些寄存器的状态值呀? 过了这么久 回来结个帖。
问题找到了,SPI通信速率的问题。系统时钟168MHz, SPI的时钟总线给他4分频了。导致波特率上不去。
UWB在通信的时候对时间的要求很严格。大家在调试的时候要注意呀! 说的好,我也注意下 学长啊啊啊 发表于 2020-7-29 14:04
过了这么久 回来结个帖。
问题找到了,SPI通信速率的问题。系统时钟168MHz, SPI的时钟总线给他4分频了。 ...
你好,可以具体介绍下SPI通信速率和系统时钟匹配上的具体代码配置吗,我最近在做DW1000收发实验的时候也遇到了中断的问题,在主函数里面循环接收可以收到数据,但是设置了回调函数以后就始终进不去 我也遇到了,,求解。。。 这个DW1000的 SPI 通信要求真是不一般
页:
[1]