经过好几个平台迁移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级的延时配置,就完成不了了;
final_tx_time = dwt_readsystimestamphi32() + (0x17cdc00/90);// 1ms多
3、自动进入RX,这个保证收包的成功率;
//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) ; }
-------------------广告线---------------
项目、合作,欢迎勾搭,邮箱:promall@qq.com
本文为呱牛笔记原创文章,转载无需和我联系,但请注明来自呱牛笔记 ,it3q.com