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

本篇文章以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 disableresult += RC7711B_WriteRegSPI(ANA_CFG18_ADDR,0x0000); // PLL Disableresult += RC7711B_WriteRegSPI(ANA_CFG22_ADDR,0x0000); // RX TX LO disablereturn 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.mzph.cn/news/92219.shtml

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

相关文章

SpringBoot——常用注解

Spring Web MVC与Spring Bean注解 Controller/RestController Controller是Component注解的一个延伸,Spring 会自动扫描并配置被该注解标注的类。此注解用于标注Spring MVC的控制器。 Controller RequestMapping("/api/v1") public class UserApiContr…

cesium 雷达扫描 (线行扩散效果)

cesium 雷达扫描 (线行扩散效果) 1、实现方法 使用ellipse方法加载圆型,修改ellipse中material方法来实现效果 2、示例代码 2.1、 <!DOCTYPE html> <html lang="en"><head><<

python代码混淆与代码打包

0x00 背景 自己写的项目&#xff0c;又想保护源码&#xff0c;自己做个混淆是最方便的了。 0x01 实践 这里使用开源工具 GitHub - astrand/pyobfuscate: pyobfuscate&#xff0c;虽然git上才500多star&#xff0c;但是很好用。它的使用场景是混淆单个py文件。很多事物有开始就…

如何利用niceGUI构建一个流式单轮对话界面

官方文档 参考文档 import asyncio import time import requests from fastapi import FastAPI from nicegui import app, uiclass ChatPage:temperature: ui.slider Nonetop_p: ui.slider Noneapi_key: ui.input Nonemodel_name: ui.input Noneprompt: ui.textarea None…

文心一言 VS 讯飞星火 VS chatgpt (103)-- 算法导论10.1 1题

一、用go语言&#xff0c;仿照图 10-1&#xff0c;画图表示依次执行操作 PUSH(S&#xff0c;4)、PUSH(S&#xff0c;1)、PUSH(S&#xff0c;3)、POP(S)、PUSH(S&#xff0c;8)和 POP(S)每一步的结果&#xff0c;栈 S初始为空&#xff0c;存储于数组 S[1…6]中。 文心一言&…

第5章-宏观业务分析方法-5.3-主成分分析法

5.3.1 主成分分析简介 主成分分析是以最少的信息丢失为前提,将原有变量通过线性组合的方式综合成少数几个新变量;用新变量代替原有变量参与数据建模,这样可以大大减少分析过程中的计算工作量;主成分对新变量的选取不是对原有变量的简单取舍,而是原有变量重组后的结果,因此…

【网络协议】IP

当连接多个异构的局域网形成强烈需求时&#xff0c;用户不满足于仅在一个局域网内进行通信&#xff0c;他们希望通过更高一层协议最终实现异构网络之间的连接。既然需要通过更高一层的协议将多个局域网进行互联&#xff0c;那么这个协议就必须为不同的局域网环境定义统一的寻址…

jmh的OperationsPerInvocation参数

背景 最近再看fllink的性能基准测试时&#xff0c;发现它使用了OperationsPerInvocation注解&#xff0c;本文就来记录下这个注解的含义 官方解释 从官方文档&#xff1a;http://javadox.com/org.openjdk.jmh/jmh-core/0.9/org/openjdk/jmh/annotations/OperationsPerInvoca…

七、2023.10.1.Linux(一).7

文章目录 1、 Linux中查看进程运行状态的指令、查看内存使用情况的指令、tar解压文件的参数。2、文件权限怎么修改&#xff1f;3、说说常用的Linux命令&#xff1f;4、说说如何以root权限运行某个程序&#xff1f;5、 说说软链接和硬链接的区别&#xff1f;6、说说静态库和动态…

nginx隐藏版本号和标识

1.隐藏版本号:nginx-服务器banner泄漏风险_banner信息泄露_javachen__的博客-CSDN博客 2.隐藏nginx标识 cd /usr/local/nginx-1.24.0/src/corevi nginx.h在第14行 cd /usr/local/nginx-1.24.0/src/httpvi ngx_http_special_response.c在第22,29,36行 cd /usr/local/nginx-1.2…

【知识梳理】多级页表的原理分析【地址形成过程】【扩充思考】

多级页表的地址形成过程 首先每个进程中都至少有一个页表&#xff08;段页式可以有多个页表&#xff09;&#xff0c;都有一个页表基地址寄存器&#xff08;PTBR&#xff09;&#xff0c;以下针对三级页表进行分析。 level1&#xff1a;PTBR代表的是一级页表的基地址&#xf…

leetCode 376.摆动序列 贪心算法

如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如&#xff0c; [1, 7, 4, 9, 2, 5] 是一个 摆动序列 &…

labview 混合信号图 多曲线分组

如果你遇到了混合信号图 多曲线分组显示的问题&#xff0c;本文能给你帮助。 在文章的最好&#xff0c;列出了参考程序下载链接。 一个混合信号图中可包含多个绘图区域。 但一个绘图区域仅能显示数字曲线或者模拟曲线之一&#xff0c;无法兼有二者。 以下显示的分两组&#…

ARM汇编基础指令整合

汇编语言的组成 伪操作 不参与程序的执行&#xff0c;但是用于告诉编译器程序该怎么编译 如&#xff1a; .text .global .end .if .else .endif .data 汇编指令 汇编器将一条汇编指令编译成一条机器码&#xff0c;在内存里一条指令…

公众号商城小程序的作用是什么

公众号是微信平台重要的生态体系之一&#xff0c;它可以与其它体系连接实现多种效果&#xff0c;同时公众号内容创作者非常多&#xff0c;个人或企业商家等&#xff0c;会通过公众号分享信息或获得收益等&#xff0c;而当商家需要在微信做私域经营或想要转化粉丝、售卖产品时就…

SELinux 介绍

背景 在工作中经常需要在 android 中增加一些东西&#xff0c; 而android有自己的安全限制&#xff0c;如果不懂SELinux&#xff0c;就不好添加。 Control Access Model https://zh.wikipedia.org/wiki/Chmod https://linux.die.net/man/1/chcon DAC DAC and Trojan Horses D…

一维数组和二维数组的使用(一)

目录 导读1. 一维数组1.1 一维数组的创建1.2 数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的存储 2. 二维数组2.1 二维数组的创建2.2 二维数组的初始化2.3 二维数组的使用2.4 二维数组在内存中的存储 博主有话说 导读 本篇主要讲解一维数组和二维数组的创建和使用&…

dart flutter json 转 model 常用库对比 json_serializable json_model JsonToDart

1.对比 我是一个初学者,一直跟着教材用原生的json,最近发现实在太麻烦了.所以搜索了一下,发现真的有很多现成的解决方案. 网页 https://app.quicktype.io/?ldart 这个是测试下来最好用的 有很多选项,可以使用 json_serializable 也可以不使用 json_serializable 这是推荐最…

机器人入门(一)

机器人入门&#xff08;一&#xff09; 一、ROS是什么&#xff0c;能用来干什么&#xff1f;二、哪些机器人用到了ROS&#xff1f;三、ROS和操作系统是绑定的吗&#xff1f;四、ROS 1 和ROS 2的关系是什么&#xff1f;4.1架构中间件改变API改变数据格式改变 4.2特性4.3工具/生态…

前缀、中缀、后缀表达式相互转换工具

目录 1. 界面一览 2. 使用说明 3. 实例演示 3.1 输入中缀 3.2 输入前缀 3.3 输入后缀 3.4 选择错误的类型 4. 代码 5. 资源地址 关于什么是前缀、中缀、后缀表达式&#xff0c;相信你不知道这个东西&#xff0c;那你也不会点进来这篇博客&#xff0c;当然&#xff0c;…