DW1000跟MCU之间是通过SPI读写完成数据交互,如果SPI数据读写有延迟,对基站吞吐量的影响是很大的,最近一次,分析标签完成一次测距时间比较长,耗时5ms左右,分析完,就找到了SPI读写过程中的问题,当然也有选用MCU自身主频低的因素在里面;
1、协议分析仪抓包分析;
通过优化,某蓝牙芯片在发送F帧和收到A帧的时间间隔可以缩短近100us,整个TWR测距时长能缩短到3ms;
2、DW1000的时间差值分析;
代码语言:javascript复制 Ra = (double)(resp_rx_ts - poll_tx_ts);
Rb = (double)(final_rx_ts_32 - resp_tx_ts_32);
Da = (double)(final_tx_ts - resp_rx_ts);
Db = (double)(resp_tx_ts_32 - poll_rx_ts_32);
tof_dtu = (int64)(((Ra * Rb) - (Da * Db)) / (Ra Rb Da Db));
//计算差值
uint32 tag_diff_1 = (uint32)((Ra*(double)DWT_TIME_UNITS)*10000);
3、SPI速率选择;
代码语言:javascript复制低速:2M
高速: 16M
继续爬坑中。