STM32WB55开发(5)----调整射频功率

这篇具有很好参考价值的文章主要介绍了STM32WB55开发(5)----调整射频功率。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

随着无线通信技术的不断进步,能够精确地控制射频(RF)信号的功率变得越来越重要。调整射频功率不仅可以影响设备的通信距离和覆盖范围,还可以优化电池的使用寿命和减少可能的射频干扰。ACI_HAL_SET_TX_POWER_LEVEL指令提供了一种方法,使工程师和开发者能够在ST的蓝牙设备上动态地调整射频发射功率。本文将详细介绍如何使用这一指令,以及调整功率级别可能带来的影响和应用场景。
最近在弄ST的课程,需要样片的可以加群申请:615061293 。

硬件准备

首先需要准备一个开发板,这里我准备的是WB55RG 的开发板:
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

视频教学

https://www.bilibili.com/video/BV1XF411D7bC/

STM32WB55开发(5)----调整射频功率

样品申请

https://www.wjx.top/vm/OhcKxJk.aspx#

源码下载

https://download.csdn.net/download/qq_24312945/88351255

选择芯片型号

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

配置时钟源

HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

配置时钟树

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

RTC时钟配置

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划
RFWKP时钟配置

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

查看开启STM32_WPAN条件

可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

配置HSEM

硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。
开启HSEM如下。
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

配置IPCC

通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
开启如下所示。

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

配置RTC

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

启动RF

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

开启蓝牙

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

开启串口调试

CFG_HW_USART1_ENABLED允许开发者选择是否使用USART1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

CFG_HW_USART1_ENABLED这是一个配置标志,当设置为启用时,USART1会被用作输出跟踪的通道。当禁用时,USART1不会用于这个目的。
仅当USART1由CubeMX用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用ST的CubeMX工具配置USART1时,才可以使用CFG_HW_USART1_ENABLED这一特定的配置选项。

查看原理图可以的是PA9和PA10与CH340链接在一起,且为串口打印端口。

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划
串口配置如下。
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

开启CFG_HW_USART1_ENABLED。
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

关闭MX_USART1_UART_Init函数的生成。
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

CFG_HW_USART1_DMA_TX_SUPPORTED允许开发者启用USART1的DMA发送功能。启用此功能可以提高USART1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。
当其被设置为启用时,USART1将使用DMA来进行数据发送(TX)。DMA允许数据从内存直接发送到外设(在这种情况下是USART1),而不需要CPU的干预,从而提高效率和数据传输速度。
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

开启DMA。
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

开启中断。

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

启用串口1的tx的DMA。

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

若无法开启可以重新打开BLE配置。

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

启动串口1调试跟踪。

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

启用应用程序中的跟踪 。

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

配置蓝牙参数

配置为自定义模板。
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

命名设备名

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

配置BLE GATT

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

配置SVC
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

设置工程信息

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

工程文件设置

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

Keil工程配置

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

代码配置

在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。一旦发出该指令,会立即更改输出功率,无论是否正
在进行蓝牙通信。例如,为了进行调试,可将设备设置为一直广播,并使用该指令监听信号强度变化。系统会保留
从指令接收的最新发送功率水平,即第二个指令覆盖之前的发送功率水平。在收到另一条设置发送功率的指令或系
统重启前,将维持新的发送功率水平。
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

在STM32CUBEMX中可以先修改功率。

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

我们查看app_ble.c文件中也有该初始化操作。
串口打印也有该指令的配置。

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

在app_conf.h中有CFG_TX_POWER功率定义。

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

在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 */

结果演示

在低功率下蓝牙信号如下所示。
STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划

修改位高功率下如下所示。

STM32WB55开发(5)----调整射频功率,单片机,#stm32wb,stm32cube,STM32CUBEMX,STM32WB,STM32WBA,BLE,APP,蓝牙,射频功率,原力计划文章来源地址https://www.toymoban.com/news/detail-738374.html

到了这里,关于STM32WB55开发(5)----调整射频功率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • STM32WB55开发(3)----断开蓝牙连接

    STM32WB55开发(3)----断开蓝牙连接

    在嵌入式领域中,STM32WB 系列微控制器以其双核架构和强大的无线连接能力而著称。特别是其蓝牙5.0的功能使得这款微控制器非常适合那些需要低功耗和高性能无线连接的应用。然而,在实际的应用中,合理和有效地管理蓝牙连接是非常关键的,尤其是当设备需要断开或重新

    2024年02月08日
    浏览(7)
  • STM32WB55_NUCLEO开发(12)----FUS 更新

    STM32WB55_NUCLEO开发(12)----FUS 更新

    在 STM32WB 微控制器中,FUS(Firmware Upgrade Services)是用于固件升级的一种服务。这项服务可以让你更新设备上的无线栈固件(如蓝牙、Zigbee或 Thread 栈),以及无线 MCU (microcontroller unit) 的系统服务。 FUS 实质上是设备的一部分固件,它可以独立于主应用程序运行,主要负责安全

    2024年02月10日
    浏览(9)
  • STM32WB55_NUCLEO开发(11)----发送数据到手机

    STM32WB55_NUCLEO开发(11)----发送数据到手机

    本篇文章将详细介绍如何在上节配置的基础上,实现通过点击STM32WB开发板上的按键发送数据到手机上。 最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:6_15061293 。 首先需要准备一个开发板,这里我准备的是NUCLEO-WB55RG 的开发板: 听不到声音的请点击跳转进行观看。

    2024年02月01日
    浏览(7)
  • STM32WB55_NUCLEO开发(9)----接收手机数据点亮LED

    STM32WB55_NUCLEO开发(9)----接收手机数据点亮LED

    本篇文章主要介绍如何使用STM32CubeMX对生成STM32WB工程,并通过与STM32WB配对,向该特征写入一个任意字节,绿色LED会切换。 最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:6_15061293 。 首先需要准备一个开发板,这里我准备的是NUCLEO-WB55RG 的开发板: 听不到声音的请点击

    2024年02月01日
    浏览(9)
  • stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(11)
  • 单片机项目分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    单片机项目分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(37)
  • K_A08_013 基于 STM32等单片机驱动大功率MOS管模块按键控制直流电机加减速启停

    K_A08_013 基于 STM32等单片机驱动大功率MOS管模块按键控制直流电机加减速启停

    目录 一、资源说明 二、基本参数         参数         引脚说明 三、驱动说明         大功率MOS模块驱动         对应程序: 四、部分代码说明         接线说明                 STC89C52RC+大功率MOS模块                 STM32F103C8T6+大功率MO

    2023年04月26日
    浏览(7)
  • STM32单片机开发-01 STM32介绍

    STM32单片机开发-01 STM32介绍

    通过野火开发板学习单片机 从内核上分有Cortex-M0、M3、M4 和M7 F1 代表了基础型,基于Cortex-M3 内核,主频为72MHZ F4 代表了高性能,基于Cortex-M4 内核,主频180M。 数据手册:用于芯片选型和设计原理图 参考手册:用于编程时查阅 Icode总线 – 该总线讲M3内核的指令总线与闪存指令

    2024年01月21日
    浏览(16)
  • mac 可以进行单片机(stm32)的开发吗?

    mac 可以进行单片机(stm32)的开发吗?

    当涉及到在Mac上进行单片机开发时,是完全可行的。以下是为什么Mac适合单片机开发的解释: 开发工具:针对STM32单片机,你可以使用多种开发工具。一个常用的选择是Segger Embedded Studio,它是一个功能强大的集成开发环境(IDE),适用于Mac平台。你可以在这个环境中编写、编

    2024年02月12日
    浏览(11)
  • 使用vscode + gcc进行 STM32 单片机开发(一)编译及调试

    使用vscode + gcc进行 STM32 单片机开发(一)编译及调试

    众所周知,单片机MCU的开发通常是使用keil来进行的,但是keil作为一款有几十年历史的IDE,bug层出不穷,界面也越来越丑,加上使用盗版jlink,导致keil各种崩溃卡死。 故越来越多的单片机IDE也如雨后春笋般冒出,例如 st官方出版的st studio、rt-thread出版的rt-studio,至于好不好用

    2023年04月08日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包