概述随着无线通信技术的不断进步,能够精确地控制射频(rf)信号的功率变得越来越重要。调整射频功率不仅可以影响设备的通信距离和覆盖范围,还可以优化电池的使用寿命和减少可能的射频干扰。aci_hal_set_tx_power_level指令提供了一种方法,使工程师和开发者能够在st的蓝牙设备上动态地调整射频发射功率。本文将详细介绍如何使用这一指令,以及调整功率级别可能带来的影响和应用场景。
最近在弄st的课程,需要样片的可以加群申请:615061293 。
硬件准备首先需要准备一个开发板,这里我准备的是wb55rg 的开发板:
视频教学[https://www.bilibili.com/video/bv1xf411d7bc/]
样品申请[https://www.wjx.top/vm/ohckxjk.aspx#]
源码下载[https://download.csdn.net/download/qq_24312945/88351255](
选择芯片型号
配置时钟源hse与lse分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择crystal/ceramic resonator选项,如下所示:
配置时钟树
rtc时钟配置
rfwkp时钟配置
查看开启stm32_wpan条件可以看到,需要开启rf、rtc、rcc、ipcc、hsem。
配置hsem硬件信号量(hsem)模块用于管理多个进程之间共享的访问权限和资源同步。
开启hsem如下。
配置ipcc通信控制器(ipcc)模块的主要用于cpu之间的信号消息交换。
开启如下所示。
配置rtc
启动rf
开启蓝牙
开启串口调试cfg_hw_usart1_enabled允许开发者选择是否使用usart1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。
cfg_hw_usart1_enabled这是一个配置标志,当设置为启用时,usart1会被用作输出跟踪的通道。当禁用时,usart1不会用于这个目的。
仅当usart1由cubemx用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用st的cubemx工具配置usart1时,才可以使用cfg_hw_usart1_enabled这一特定的配置选项。
查看原理图可以的是pa9和pa10与ch340链接在一起,且为串口打印端口。
串口配置如下。
开启cfg_hw_usart1_enabled。
关闭mx_usart1_uart_init函数的生成。
cfg_hw_usart1_dma_tx_supported允许开发者启用usart1的dma发送功能。启用此功能可以提高usart1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。
当其被设置为启用时,usart1将使用dma来进行数据发送(tx)。dma允许数据从内存直接发送到外设(在这种情况下是usart1),而不需要cpu的干预,从而提高效率和数据传输速度。
开启dma。
开启中断。
启用串口1的tx的dma。
若无法开启可以重新打开ble配置。
启动串口1调试跟踪。
启用应用程序中的跟踪 。
配置蓝牙参数配置为自定义模板。
命名设备名
配置ble gatt
配置svc
设置工程信息
工程文件设置
keil工程配置
代码配置在main.c中添加如下头文件。
/* user code begin includes */#include stm32_seq.h/* user code end includes */util_seq_run(util_seq_default)函数应该在应用程序的while循环中,启动任务调度。
/* user code begin while */ while (1) { /* user code end while */ mx_appe_process(); /* user code begin 3 */ util_seq_run(util_seq_default); } /* user code end 3 */}在app_entry.c中添加初始化 appd_init()。
void mx_appe_init( void ){ system_init( ); /**< system initialization */ systempower_config(); /**< configure the system power mode */ hw_ts_init(hw_ts_initmode_full, &hrtc); /**< initialize the timerserver *//* user code begin appe_init_1 */ appd_init();/* user code end appe_init_1 */ appe_tl_init(); /* initialize all transport layers */ /** * from now, the application is waiting for the ready event ( vs_hci_c2_ready ) * received on the system channel before starting the stack * this system event is received with appe_sysuserevtrx() *//* user code begin appe_init_2 *//* user code end appe_init_2 */ return;}射频功率dbm是一种衡量功率的单位,特别用于描述射频 (rf) 和微波信号的功率。dbm表示相对于1毫瓦的功率水平。所以,0 dbm表示1毫瓦的功率;负值表示小于1毫瓦的功率,而正值表示大于1毫瓦的功率。
为什么我们使用dbm这样一个对数单位来表示功率,而不是直接使用线性单位如瓦或毫瓦呢?原因是无线通信中的信号强度可以在非常宽的范围内变化,使用对数单位可以更清晰、更简单地描述这些变化。
以下是一个简化的解释:
如果一个设备发出1毫瓦的功率,这被表示为0 dbm。
如果功率是1毫瓦的10倍,即10毫瓦,那么它是10 dbm。
如果功率是1毫瓦的1/10,即0.1毫瓦,那么它是-10 dbm。
因此,在您提供的列表中,负的dbm值表示功率小于1毫瓦,而正的dbm值表示功率大于1毫瓦。这样的表示方法使得工程师能够轻松地对比和处理各种功率水平,尤其是在涉及射频设计和分析的情况下。
aci_hal_set_tx_power_level该指令用于设置设备的 tx 功率级别。通过控制确定 ic 引脚的输出功率水平(dbm)的 pa_level。当系统启动
或重启时,会使用默认的发送功率水平,其最大值为 6 dbm。一旦发出该指令,会立即更改输出功率,无论是否正
在进行蓝牙通信。例如,为了进行调试,可将设备设置为一直广播,并使用该指令监听信号强度变化。系统会保留
从指令接收的最新发送功率水平,即第二个指令覆盖之前的发送功率水平。在收到另一条设置发送功率的指令或系
统重启前,将维持新的发送功率水平。
在stm32cubemx中可以先修改功率。
我们查看app_ble.c文件中也有该初始化操作。
串口打印也有该指令的配置。
在app_conf.h中有cfg_tx_power功率定义。
在main.c文件中,添加头文件。
/* user code begin includes */#include stm32_seq.h#include ble_hal_aci.h/* user code end includes */定义变量。
/* user code begin 2 */ tblestatus ret = ble_status_invalid_params; uint32_t a=0; /* user code end 2 */while循环中执行如下操作,在等待5s后修改天线功率。
/* infinite loop */ /* user code begin while */ while (1) { /* user code end while */ mx_appe_process(); /* user code begin 3 */ util_seq_run(util_seq_default); if(a< 5000) { a++; if(a==5000) { /** * set tx power. */ ret = aci_hal_set_tx_power_level(1, 0x1f); if (ret != ble_status_success) { printf(fail : aci_hal_set_tx_power_level 重新设置, result: 0x%x n, ret); } else { printf(success: aci_hal_set_tx_power_level 重新设置n); } } hal_delay(1); } } /* user code end 3 */结果演示在低功率下蓝牙信号如下所示。
修改位高功率下如下所示。
两列音频混合器电路图分享
魔幻光绘-可编程LED魔法棒作品秀
全闪存技术为什么备受银行业的青睐
苹果iPhoneSE2:小屏党福利!
5V升压充电12.6V芯片
STM32WB55开发(5)----调整射频功率
8051特殊功能寄存器基础详解
华为mate9今日正式发布 相机全新加入莱卡双摄二代
智能清扫干净无死角,扫地机器人什么牌子好?
从基站到终端,5G宏基站建设带来的国内通信用PCB投资总空间为300亿左右
飞思卡尔推出四款脚位相容的64位处理器
S7-300与第三方的TCP通信配置解析
如何打造美观适用的工业物联网数据大屏管理系统
压缩式制冷机
联想推出智能物联生态四大开放计划
锂电池标识的讲解:850mAh 25C 2S1P
iphone8最新消息,iphone8什么时候上市?iphone8或以降低价格的代价放弃屏下指纹识别
Wi-Fi 6/6e的引入对IoT设备法规一致性测试有哪些影响?
比特币智能搬砖系统搭建自动交易量化对冲软件
月度开发者Manoharan Ramachandran:道路安全应用Drowsy Driver的骁龙处理器开发经验