DW3000测距实验笔记

测距实验

简介

本测距实验以Qorvo公司的DWM3000 EVB产品为基础,相关软硬件资料可从官网下载,地址:https://www.qorvo.com/products/p/DWM3000EVB#documents

测距DEMO硬件

1,nRF52840-DK:上方长方形的板子是Nordic官方nRF52840开发板,为Qovor官方DEMO软件中用于作为控制DWM3000模块的示例主控板。

官方示例DEMO还有STM32开发板做主控的版本和使用树莓派做主控的版本,刚好本人手上有Nordic的开发板就用这个做实验了。

2,DWM3000转接版:白色部分为Qovor官方DW3000的模组,底下是本人为了方便测试做的转接版,单纯为了方便将邮票孔转成2.54排针。

出于成本和调试效率考虑,本人并没有和官方示例DEMO一样的DW3000EVB,但使用效果上两者没有本质区别。

配套软件代码

测距的示例代码可以在Qorvo官网进行下载,本人使用的是DWS3000_Release_v1.1版本

目前最新版本应该是V1.2,但该版本的定位库做了闭源处理,只支持ARM M33和M4内核的MCU,而且编译环境要支持GCC EABI 环境(本人曾想移植到keil MDK不过失败了,不过听说有人在IAR环境上实现了,而官方示例里用的是SEGGER和STCubeMX环境)。不过V1.2新增了PDOA功能和演示软件。由于本人只是先做简单的测距就用1,1版本了,V1.1是开源的库所以移植起来很方便。

Qovor用的是SEGGER Embedded Studio for ARM 作为开发调试的IDE,具体环境搭建方法在官方下载的软件资料包里有专门的文档说明,这里就不再赘述了。
具体说明参考资料包中API\Build_Platforms\nRF52840-DK\README.txt这个文件,里面讲述了应该从哪下载ses安装包、Nordic sdk、以及如何编译

打开示例工程后界面如下:

在左侧是工程文件目录:

其中只关注两个地方:

1.platform_nRF52840-DK目录下的port.h文件,该文件定义了用于驱动DW3000芯片要用到的引脚

一共用到七个引脚,四个SPI,三个普通IO。根据定义用杜邦线连接好DMW3000转接版和nRF52840开发板

2.examples目录下放满了各种测试例程:

这些例程的说明在下载下来的软件包里有文档介绍。为了方便测试,官方用了一个头文件example_selection.h来进行选择编译想测试的例程

如果我们想选择某一个例程测试,只需去掉相关例程名字的宏定义注释后进行编译即可(但一次只能测试一个例程,不能同时去掉两个)

测试结果

IDE上点击DEBUG,然后全速运行就能看到有相关测距LOG出来,从结果上来看测距是成功的,但精度还差点,需要进一步分析。

常见问题

对于其他MCU的移植,大部分会出问题在于SPI通信上,这里分享下本人做实验时遇到的一些情况

  1. SPI模式异常

芯片的GPIO5/6脚的电平是用来确定SPI通信模式的,但是本人测试时发现实际情况和手册上的有出入。需用根据读取芯片ID寄存器,然后用逻辑分析仪观察实际波形来确认。

  1. SPI IO驱动能力异常

测试芯片SPI时发现IO电平会异常拉低,对比官方开发板后要额外串接电阻才能正常。

  1. SPI速率异常

官方的代码里有频繁切换SPI速率进行读写的操作,本人测试发现如果不按DEMO代码要求实现SPI速率切换,会导致默写例程运行异常。

比如从头到尾都用2M速率SPI时,simple tx/rx运行正常,但ranging例程就会异常,读取status寄存器标志位会一直出错。而驱动改成能成功切换为2M/16M速率的话就能成功。从官方论坛上的说法来看是说测距对时序有严格要求。

对于SPI部分驱动,建议一定要先确认好没问题再运行官方例程。可以通过简单的读取ID寄存器和写操作寄存器再回读,然后使用逻辑分析仪或者示波器来抓取通信波形来确认SPI的读写是否正常。

posted on 2023-01-16 14:06  不回本不改名  阅读(2266)  评论(0编辑  收藏  举报

导航