雷达编程实战之功耗优化技术(低功耗)

news2024/11/30 14:24:20

本篇文章以xWRL6432为例,首先介绍了芯片内部的电源管理框架,在产品业务处理流程的不同阶段,我们可以对不同电源域进行相应的开/关来降低功耗。然后介绍了不同的硬件电源参考设计对芯片功耗的影响,又着重介绍了线性调频脉冲相关参数在雷达性能功耗之间的取舍关系,帮助嵌入式工程师根据不同项目的指标要求来选择合适的线性调频脉冲参数。最后介绍了在帧间空闲以及深度睡眠模式下,降低功耗的一些方向,指导嵌入式工程师根据实际的应用情况来有效的降低产品功耗。

目录

电源管理框架

低功耗的硬件设计选项 

针对低功耗的线性调频脉冲设计优化 

降低帧间空闲和深度睡眠状态下的功耗 

降低空闲状态下的功耗

降低深度睡眠模式下的功耗 


电源管理框架

具有低功耗管理的芯片架构会运行雷达器件完全或部分关闭特定电源域,下图以xWRL6432的电源域架构的方框图。

以此芯片为例, 每个电源域的主要元器件如下:

  • RF_ANA_PD(射频模拟电源域):功率放大器(PA);低噪声放大器(LNA);混音器;中频滤波器(IF);模数转换器(ADC);合成器;40MHz晶体振荡器(OSC)。
  • FEC_PD(前端控制电源域):Cortex-M3 处理器(包括存储器);数字前端 (DFE)。
  • APPSS_PD(应用子系统电源域):Cortex-M4F 处理器;应用存储器组;通用外设(看门狗、UART、I2C、SPI、RS232...)。
  • HWASS_PD(硬件加速器电源域):硬件加速器 (HWA);HWA 的存储器。
  • AON_PD(常开电源域):实时时钟 (RTC);电源、复位和时钟管理 (PRCM) 寄存器。

下图展示了典型的雷达应用流程。

应用流程的状态定义如下。

  • 突发(Burst): 线性调频脉冲序列。xWRL6432 器件具有两根发射天线,因此典型的 突发可能在一根或两根天线上发射。
  • 帧(Frame):由一系列突发后跟数据处理组成的时间段。帧在定义的间隔上是周期性的。
  • 线性调频脉冲间空闲(Interchirp Idle):线性调频脉冲之间的时间段。
  • 突发间空闲(Interburst Idle):突发之间的时间段。
  • 帧间空闲(Interframe Idle):从帧结束与下个帧开始之间的时间段。
  • 数据处理(Data Processing):器件处理前一帧中收集的雷达数据的时间段。

电源管理可以根据应用流程的不同状态,配置不同电源域处于打开或者关闭的状态,从而达到有效功率最优解。电源管理根据应用流程的不同状态,大体可以分为三个模式,第一个是运行模式(或用),是指器件发出线性调频脉冲或处理线性调频脉冲数据时。第二种是空闲模式,当器件未主动发出线性调频脉冲或处理数据时,便会进入空闲状态。第三种是深度睡眠,深度睡眠状态是 xWRL6432 在已经处于帧间空闲状态时的一个应用程序驱动选项。在这三种状态中,在活动状态下的数据采集子状态中,器件具有最高功率级别,深度睡眠则是器件中可能的最低功耗状态设计状态下,图为不同状态下各个电源域的开光状态。

不同电源模式下的电源域状态
电源域活动(发出线性调 频脉冲)活动(数据处理)线性调频脉冲间空闲突发间空闲帧间空闲深度睡眠
RF_ANA_PD打开关闭(晶体振荡器 开启)开启(PA、LNA 关闭)关闭(晶体振荡器 开启)关闭(晶体振荡器 开启)关闭
FEC_PD打开关闭开启(数字前端时 钟选通)开启(数字前端时 钟选通 )开启(整个子系统 时钟选通)关闭
APPSS_PD开启(PLL 关闭)开启(在数字 PLL 上运行)开启(PLL 关闭)开启(PLL 关闭)开启(在晶体时钟 上运行)关闭
HWASS_PD开启(HWA 时钟 选通)打开打开开启(HWA 时钟 选通)关闭关闭
AON_PD打开打开打开打开打开打开

下面的代码是一个进入数据处理之前,关闭某些电池域的函数lowpower以及重新启动线性调频脉冲序列的函数recoverpower。

uint8_t lowpower(void)
{
	uint8_t result = 0;
	result += waveGenStop();
	result += waveTxDisable();
	result += RC7711B_WriteRegSPI(ANA_CFG8_ADDR,0x0F00);  // base band disable
	result += RC7711B_WriteRegSPI(ANA_CFG18_ADDR,0x0000); // PLL Disable
	result += RC7711B_WriteRegSPI(ANA_CFG22_ADDR,0x0000); // RX TX LO disable
	return result;
}
uint8_t recoverpower(void)
{
	uint8_t result = 0;
	result += RC7711B_WriteRegSPI(ANA_CFG8_ADDR,0x0F1F);  // 基带使能[4:0]:ch1234 pow en[bit4]; [ch4 ch3 ch2 ch1]使能对应bit[3 2 1 0]
	result += RC7711B_WriteRegSPI(ANA_CFG18_ADDR,0x0007); // PLL Enable [2:0]
	result += RC7711B_WriteRegSPI(ANA_CFG22_ADDR,0xFF80); // RX TX LO使能,详见手册	
	result += waveTxEnable();
	result += waveGenStart();
	return result;
}

低功耗的硬件设计选项 

以xWRL6432 器件为例,可以为其提供 1-3 个不同的电源电压轨。这种灵活性使系统能够进行定制,硬件设计工程师选择是以降低功耗为目的还是以降低BOM 成本为设计优先级。下图展示了可用于为 xWRL6432 提供电源轨的四种拓扑。


针对低功耗的线性调频脉冲设计优化 

在 xWRL6432 可能进入的所有不同状态中,活动模式(特别是活动模式期间的线性调频脉冲频率扫描行为)是功耗最大的。由于线性调频脉冲频率扫描行为会打开高功率射频放大器来发送和接收雷达波,因此这种行为的功耗最大。既如此,用户便可通过减少频率扫描所花费的时间和/或降低频率扫描时的功耗来降低总体功耗,但是这种调整会对雷达的性能产生影响,下面介绍了各参数对性能的影响。

  • 增加帧之间的时间:增加帧之间的时间会增加延迟并可能提高跟踪性能。如果帧之间的时间很长,则可能无法跟踪快速移动的物体,有效帧周期会受到直接的影响。
  • 减少线性调频脉冲间空闲和突发间空闲中花费的时间:对于角度估计而言,无论线性调频脉冲使用不同的发送器,还是在时分多路复用 (TDM) 和二进制相位调制 (BPM) 方案中(一次只有 一个发射),减少空闲时间都有好处,但是对测速来说,减低Tc会引起速度分辨率更粗。
  • 缩短线性调频脉冲频率扫描时间:雷达范围缩小,可视场边缘更明显。这个方向涉及到一些性能上的取舍,我们后边会详细介绍。
  • 减少发送器/接收器的数量:减少发送/接收通道的数量将直接降低雷达器件的角分辨率。此外,移除发送/接收对将减小测量的 SNR,从而减小雷达可检测到给定目标的最大距离。发送/接收通道越多,对同一突发的观察就越多,因此可以提高给定突发的精度。
  • 降低发射功率:降低输出功率可能会缩小器件可检测的最大距离。器件广播的功率大小将决定器件可接收的功率大小。一旦接收到的功率降至器件的本底噪声以下,器件将无法再准确检测目标。输出功率的下降可以在一定程度上通过 CFAR 阈值范围内的等效下降得到补偿,但不能无限度地进行补偿。一旦CFAR阈值范围变得过低,误报检测就会掩盖真实检测。

下表中的方案二针对方案一提高了采样率,采样同样的点数只需要用一半的时间,但是距离分辨率会变得更粗,如果采用方案二,更快的采样率加上更高的调频斜率,将会在不牺牲任何性能的情况下,降低功率。


降低帧间空闲和深度睡眠状态下的功耗 

降低空闲状态下的功耗

帧间空闲状态是器件中的一种软件可编程状态。在此模式下,器件要么等待来自外部主机的命令,要么通过 SPI 或 CAN 接口传输捕获的样本。器件中未在进行雷达处理或数据采集,同时器件的振荡器电路和可能的 PLL(取决于所使用的主机接口外设)已启动并正在运行。在帧间空闲状态下,用户可以将器件的一些部分断电或进行时钟选通,从而降低功耗。xWRL6432 允许使用如下所示的序列关闭以下外设。


降低深度睡眠模式下的功耗 

深度睡眠状态下的功耗主要取决于两个因素:深度睡眠期间保留的存储器容量和 IO 引脚的状态。

要保留内容的存储器越大,深度睡眠模式下的功耗越高。xWRL6432 器件可以通过减少深度睡眠模式中保留的存储器容量来节省功耗。

xWRL6432 中存在各种数字外设 IO(例如 SPI、UART、CAN-FD、I2C 或 LIN 等),用于传输数据、下载映像或与外部 MCU 建立连接。由于深度睡眠状态下的功耗非常低,因此任何悬空节点都可能导致严重的电流泄漏。因此,当 xWRL6432 器件处于深度睡眠模式时,必须适当地将这些 IO 置于其相关的上拉/下拉或高阻抗状态。


十六宿舍 原创作品,转载必须标注原文链接。

©2023 Yang Li. All rights reserved.

欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1054802.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.2.C++项目:仿muduo库实现并发服务器之时间轮的设计

文章目录 一、为什么要设计时间轮?(一)简单的秒级定时任务实现:(二)Linux提供给我们的定时器:1.原型2.例子 二、时间轮(一)思想(一)代码 一、为什…

2023年显著性检测论文及代码汇总(3)

ACM MM Point-aware Interaction and CNN-induced Refinement Network for RGB-D Salient Object Detection code Abstacrt:近年来,CNN在特征提取和跨模态交互中得到了充分的利用,但在自模态和跨模态的全局远程依赖关系建模方面仍存在不足。…

二叉树的常见操作

二叉树的常见操作 注:二叉树的结构如下: typedef char BinaryTreeDataType; typedef struct BinaryTreeNode {struct BinaryTreeNode* left;struct BinaryTreeNode* right;BinaryTreeDataType data; }BTNode;以下所有操作都以下面的树为例:…

PHP8中final关键字的应用-PHP8知识详解

在PHP8中,final的中文含义是最终的、最后的意思。被final修饰过的类和方法就是“最终的版本”。 如果关键字final放在类的前面,则表示该类不能被继承。 如果关键字final放在方法的前面,则表示该 方法不能被重新定义。 如果有一个类的格式为…

ili9431液晶 tft_espi图形库演示 时钟、天气、滚动、气象图标

米思齐tft_spi模块库演示程序。心知天气、阿里云时钟、WiFi信号强度检测、1分钟滚屏、更新天气时间为15分钟、加入天气图标。更新天气次数。断网检测 。此程序为tft_eSPI图形库演示、如感觉好可以自行优化。 ili9431tft_espi库是用于ESP32和ESP8266芯片的TFT LCD驱动程序库&am…

C++基础_Day02

文章目录 四、流程控制语句4.1 选择结构4.1.1 if语句 4.1.2 三目运算符4.1.3 switch语句注意事项 4.1.4 if和switch的区别【CHAT】4.2 循环结构4.2.1 while循环语句4.2.2 do...while循环语句 4.2.3 for循环语句九九乘法表 4.3 跳转语句4.3.1 break语句4.3.2 continue语句4.3.3 …

京东优惠券哪里找到如何领取内部隐藏优惠券怎么使用京东优惠券?

京东优惠券是指通过草柴APP查询要购买京东商品的大额隐藏优惠券,找到后点击进入领取京东优惠券,然后再京东购物可享受领券更便宜的购物方式。 京东优惠券哪里领取内部隐藏优惠券怎么使用? 1、打开京东APP挑选要购买的商品,并点击…

C++简单实现AVL树

目录 一、AVL树的概念 二、AVL树的性质 三、AVL树节点的定义 四、AVL树的插入 4.1 parent的平衡因子为0 4.2 parent的平衡因子为1或-1 4.3 parent的平衡因子为2或-2 4.3.1 左单旋 4.3.2 右单旋 4.3.3 先左单旋再右单旋 4.3.4 先右单旋再左单旋 4.4 插入节点完整代码…

C++指针常量,常量指针以及, 引用和指针的区别

const修饰指针有三种情况 1. const修饰指针 --- 常量指针 2. const修饰常量 --- 指针常量 3. const即修饰指针,又修饰常量 c int main() {int a 10;int b 10;//const修饰的是指针,常量指针,指针指向可以改,指针指向的值不…

linux——进程间通信——管道

✅<1>主页&#xff1a;&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;Linux——进程间通信——管道通信 ☂️<3>开发环境&#xff1a;Centos7 &#x1f4ac;<4>前言&#xff1a;进程间通信&#xff08;InterProcess Communication&…

Linux 文件上传、下载

1、通过FinalShell工具虚拟机进行数据交换 在FinalShell软件的下方窗体中&#xff0c;提供了Linux的文件系统视图&#xff0c;可以方便的&#xff1a; 浏览文件系统&#xff0c;找到合适的文件&#xff0c;右键点击下载&#xff0c;即可传输到本地电脑 浏览文件系统&#xff0…

密码技术 (5) - 数字签名

一. 前言 前面在介绍消息认证码时&#xff0c;我们知道消息认证码虽然可以确认消息的完整性&#xff0c;但是无法防止否认问题。而数字签名可以解决否认的问题&#xff0c;接下来介绍数字签名的原理。 二. 数字签名的原理 数字签名和公钥密码一样&#xff0c;也有公钥和私钥&am…

网站使用SSL证书是趋势吗?

随着互联网技术的不断发展&#xff0c;网络安全问题日益受到重视。其中&#xff0c;SSL证书作为网站安全的基石&#xff0c;其重要性不言而喻。SSL证书能够加密网站与用户之间的通信&#xff0c;保护用户隐私&#xff0c;防止信息被窃取和篡改。因此&#xff0c;越来越多的网站…

10.1作业

#include <stdio.h> #include <string.h> #include <stdlib.h> /** function:* 创建一个双向链表&#xff0c;将26个英文字母通过头插的方式插入&#xff0c;通过为尾删的方式读取并删除* param [ in] * param [out] * return */ typedef struct double…

ECharts多个数据视图进行自适应大小的解决方案

项目场景&#xff1a; 在制作数据视图时经常会遇到多个数据视图的情况&#xff0c;在多个数据视图的情况下做自适应是比较麻烦的&#xff0c;这里就详细的分析一下该如何去制作&#xff0c;分享一下我的解决办法及思路。 定义 DOM 容器 这里需要注意一个地方&#xff0c;在定…

《Jetpack Compose从入门到实战》第八章 Compose页面 导航

添加依赖&#xff1a;implementation “androidx.navigation:navigation-compose:$nav_version” Navigation for Compose class MainActivity : AppCompatActivity() {var theme: BloomTheme by mutableStateOf(BloomTheme.LIGHT)override fun onCreate(savedInstanceState:…

Vue3核心源码解析 (一) : 源码目录结构

通过软件框架阅读源码可以对框架本身运行机制进行学习&#xff0c;更能了解框架的API设计、原理及流程、设计思路&#xff1b;我们要知其然&#xff0c;更知其所以然。 Vue 3的源码相对于Vue 2版本有了较大程度的改变&#xff0c;采用Monorepo规范的目录结构&#xff0c;同时使…

JavaScript——APIs

复习&#xff1a; splice() 方法用于添加或删除数组中的元素。 **注意&#xff1a;**这种方法会改变原始数组。 删除数组&#xff1a; splice(起始位置&#xff0c; 删除的个数) 比如&#xff1a;1 let arr [red, green, blue] arr.splice(1,1) // 删除green元素 consol…

【ArcGIS Pro二次开发】(69):使用MapTool实现隐藏和隔离图层

一、MapTool简介 在ArcGIS Pro SDK中&#xff0c;MapTool是一个重要的组件&#xff0c;用于自定义地图操作工具&#xff0c;使用户能够在ArcGIS Pro中执行特定的地图交互操作。 在VS中添加新项&#xff0c;可以找到ArcGIS Pro 地图工具&#xff0c;即为MapTool。 新建后打开c…

全连接网络实现回归【房价预测的数据】

也是分为data&#xff0c;model&#xff0c;train&#xff0c;test import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optimclass FCNet(nn.Module):def __init__(self):super(FCNet,self).__init__()self.fc1 nn.Linear(331,200)s…