DW1000的SPI速率

2023-10-16 19:11:56 浏览数 (2)

经过好几个平台迁移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使用体验

0 人点赞