蓝点无限 发表于 2022-2-20 19:54:29

UWB DWM1000 开源项目框架 之 硬件模块混用测距实现

蓝点UWB代码框架推出两年多,目前可以支持STM32F1 STM32F4两种主控,分别对应我们的BP30、BP50 和BP400

近期我们将代码进行融合,将UWB使用的库单独剥离。重新整合后,代码实现更高层次的复用。


实现用“一套代码”适配我们目前所有型号硬件,实现了“硬件自由”,可以理解为测距的时候,两个模块可以自由组合,例如一个是BP30一个是BP400.
同样,定位的时候,模块之间也可以自由组合。

同时,我们的工程使用了STM32 Cube 对硬件做初始化,简化编程,方便后期移植。

本帖分享STM32F1 和 STM32F4工程,后期逐步分享STM32G0和STM32L0工程。

整体目录结构:

其中文件夹“BP-UWB_LIB”为UWB公共库文件,而其他每个文件夹则对应一种硬件。在每个硬件MDK工程中都会去引用BP-UWB_LIB内所有文件。

代码说明:
公共代码

BP-UWB_LIB 公共为项目公共代码,主要代码


包括了
Decawave 芯片初始化代码
卡拉曼滤波
OLED液晶显示(如果某个板子没有液晶,需要配置的时候讲宏注释掉)
platform 硬件(spi api包装)
Src(发送(tx) 和接收(rx)的主函数以及uwb顶层初始化和配置文件)

特别注意:不同硬件板子工程使用的配置文件是共享的。

私有代码
每个板子对应的工程文件夹为私有代码,这部分代码主要是使用STM32Cube对硬件做初始化,同时对硬件做抽象(port.h文件)
每个板子必须定义的外设
1. SPI
2 Timer
3 USART
4 LED

代码使用
如果不做“硬件自由”模块混用,使用代码和之前工程并无差别,只需打开工程文件夹内的MDK工程,修改配置文件bphero_uwb.h 定义设备角色和短地址编译即可。
如果要模块混用,需要打开多个工程(因为每个工程对应一种硬件设计),例如打开STM32F1_UWB_BP50 使用BP50硬件编译基站,然后使用STM32F4_UWB工程将BP400 编译为标签。

//!!!!重要说明!!!!
//RX_NODE 和 TX_NODE 编译的时候只能有且只有一个打开
//RX_NODE接收节点,通常称作为基站
//TX_NODE发送节点,通常称作为标签
#define RX_NODE
//#define TX_NODE
//通过MAX_ANTHOR 定义系统中基站个数,2D定位3个基站,3D定位4个基站
//MAX_ANTHOR 3 --> 2D
//MAX_ANTHOR 4 --> 3D
#define MAX_ANTHOR 3
//!!!!重要说明!!!!
//天线延时校正,如果测得距离和实际距离有稳定偏差,可以适当调整这个参数修正
//参考视频:https://www.bilibili.com/video/BV1154y1q7Qp/
#ifndef RX_ANT_DLY
#define RX_ANT_DLY 32900
#endif
//TX 天线延时,设置为0即可,只用RX 天线延时即可
#ifndef TX_ANT_DLY
#define TX_ANT_DLY 0
#endif

//如果是RX节点,定义短地址为0x0002
#ifdef RX_NODE
#define SHORT_ADDR 0x0002
#endif

//如果是TX节点,定义短地址为0x0001并且使能LCD
#ifdef TX_NODE
#define SHORT_ADDR 0x0005
//#define LCD_ENABLE
#endif

//网络ID,如果同一个区域有多套设备存在,可以修改这个参数,每一套一个虚拟网络ID
#define NET_PANID 0xF0F2




代码链接:
下面这个代码支持BP50 和 BP400 混用测距
链接:https://pan.baidu.com/s/1iUUXBfyoWPKKyavbSIzFiw
提取码:6666










HolyDeal 发表于 2022-2-22 16:47:51

感谢分享!链接失效了,麻烦重新分享一下

lukkulluk 发表于 2022-3-4 15:51:34

谢谢楼主分享

Xcc333 发表于 2022-7-27 17:40:20


感谢分享!链接失效了,麻烦重新分享一下

ryanyooo 发表于 2022-8-15 10:06:26

感谢分享 可以重新补个链接么

天神笨笨 发表于 2022-8-16 16:26:12

感谢分享 学习到了

kylinwu 发表于 2022-8-17 22:01:07

感谢分享 学习到了

愤怒的小河马 发表于 2023-4-4 10:15:43

连接过期了
页: [1]
查看完整版本: UWB DWM1000 开源项目框架 之 硬件模块混用测距实现