经过好几个平台迁移DW1000的折磨,总结一下。
一、速率对DW1000的影响主要有两个:
1、MCU的运行速率;
从STM32、nrf、gm技术、sifli等MCU,总结经验是,MCU的运行主频只要高于48MHZ,少打印串口log,以及少用memcpy等耗时操作,对dw1000的操作是不会存在性能瓶颈的。
2、SPI通信速率;
SPI速率主要是SPI主频,官方代码中port_set_dw1000_slowrate 速率大概在2MHz;port_set_dw1000_fastrate高速速率可以配到18MHz,理论上SPI的速率是越快越好!
从最近调测的情况来看,MCU虽然配置了18Mhz,甚至更高,但实际的运行时长却和速率不匹配,这个是最讨厌的,需要通过协议分析仪等分析工具分析不匹配的原因了,耗时往往也是最长的!
二、上面两个的速率对dw1000操作的影响:
1、单次测距时长,也就是从发送P帧,接收A帧,到发送F帧,整个测距时长可能会很长,对吞吐量有要求的产品来说,就成了性能瓶颈了,绝对影响基站的吞吐量;
比方CSDN有博文说是rx的接收延时要配置到12ms,一次测距可能到20ms,那基站最多也就只能支持50个标签/s,吞吐量就大受影响了!
2、影响延时发送F帧的时间配置,比方蓝点博客中说,这个延时发送的延时,可能需要配置为下面时间,而这个时间基本上是ms级的,如果要支持us级的延时配置,就完成不了了;
代码语言:javascript复制final_tx_time = dwt_readsystimestamphi32() (0x17cdc00/90);// 1ms多
3、自动进入RX,这个保证收包的成功率;
代码语言:javascript复制//add for rx auto-reenable
void dwt_setrxautoreenable(int enable)
{
// Config system register
pdw1000local->sysCFGreg = dwt_read32bitreg(SYS_CFG_ID) ; // Read sysconfig register
// Disable smart power configuration
if(enable)
{
pdw1000local->sysCFGreg |= SYS_CFG_RXAUTR ;
}
else
{
pdw1000local->sysCFGreg &= ~(SYS_CFG_RXAUTR) ;
}
dwt_write32bitreg(SYS_CFG_ID,pdw1000local->sysCFGreg) ;
}
本文为呱牛笔记原创文章,转载无需和我联系,但请注明来自呱牛笔记 ,it3q.com
- 上一篇: 提升基础代码质量,文心一言使用体验
- 下一篇: GoView使用体验