穿戴产品功耗开发——外设篇

上一篇已对主控的硬件和软件层面做了相应的总结,本篇将从手表常见的外设来说明:外设不同状态下对穿戴产品功耗的影响。

手表常见的外设有:

  1. 人机交互:LCD+Touch等。常见有TFT、AMOLED模组;
  2. 生物医学传感器:PPG、ECG等。用于光学、电学等原理获取人体生物特征值:PPG用于计算心率、血氧等,ECG用于监测心电图;
  3. 惯性传感器:加速度传感器(ACC)、陀螺仪(GYRO)、地磁(MAG)等。常作为运动、健康、睡眠算法的raw data;
  4. 近场通信:NFC等,用于实现移动支付、数据传输、门禁系统等功能;
  5. 定位:GPS等,用于运动定位、地图定位等功能;
  6. 支付:支付宝芯片等,用于硬件加密;
  7. 存储介质:NandFlash、NorFlash、EMMC等,由于存储固件、应用APP、用户数据等;
  8. ...

不同产品的外设配置可能会存在区别,下面小弟就以LCD、TP这组典型外设来说明下。

LCD

主要影响功耗的是 a) 自刷新频率、b) 亮度、c) 休眠模式:

以AMOLED为例,显示状态分为 Normal mode、AOD mode。休眠状态分为 Sleep mode、Standby mode。

自刷新频率

a) Normal mode一般配置为60hz;b) AOD mode一般配置为15hz。

自刷新频率限制了频率的最高帧率。市面较多的模组都是模组厂在出厂时就固化了自刷新频率,所以如果要从自刷新频率进行功耗优化,就得提前和模组厂沟通确认了。

通常,Normal mode的刷新频率一般不会降低,毕竟影响的是显示帧率,但AOD mode 据了解,有厂家已经能够做到几hz的效果了,实属牛x,因为AOD在15hz的情况下,很多模组还是存在肉眼可见的闪屏情况的。

亮度

Normal mode的亮度一般会提供由用户手动调节,或根据屏下光感来自适应调整,这块的功耗就没啥好说明了(市面常见的显示模组最高显示亮度由400nit~1000nit不等),用户设置的亮度越高,对应的功耗也越高了。

AOD mode(Always on Display)一般会选择固定亮度,而且亮度通常会较低(一般控制在最高亮度的20%以内)。因为AMOLED的物理属性,常亮会存在“烧屏”风险,“烧屏”后到时候给你来个绿屏护眼模式了哈哈哈,别说,早期我们调试阶段偶尔也会遇到“烧屏”情况的。所以从功耗的角度,我们通常会尽量降低AOD的亮度,而从硬件保护的角度,软件还会考虑定期移动显示内容位置来保证每个像素点都不会一直常亮。

休眠模式

休眠模式是在熄屏后触发的,分为sleep mode和standby mode,简单的说就是休眠等级不同。

进出sleep mode,一般只要发送 sleep in/out指令即可;

而进出standby mode,进入时需要发送sleep in + standby,而退出时还需要对模组执行硬件复位,再执行初始化才能退出

相比sleep mode,退出standby mode需要对模组做硬件复位,所以我们就可以在进入standby后将模组给下电来优化功耗了。与此同时,功耗的收益需要付出的是需要更长的退出休眠时长(硬复位+初始化),影响的就是抬手亮屏等场景的速度了。所以这块的功耗优化就要在性能要求之间做权衡了。

Touch(TP)

主要影响功耗的是 a) 报点率,b) 休眠模式

报点率

TP的报点率,可以理解为触控面板的采样率,最直观的影响就是用户滑动的跟手效果。报点率越高,对应触控模组的功耗也越高。

举个极限的例子,1Hz和100Hz的报点率。用户从屏幕最左侧滑动到最右侧,用了500ms,1Hz的报点率得再过500ms才能相应用户的滑动操作,而100Hz就能够及时响应。

但也不是报点率越高就越好,再举个极限的例子,10000Hz的报点率,滑动的这1s内,抛开吊炸天的芯片,普通芯片的CPU得频繁响应中断,线程级任务就很难获得执行的机会,应用压根反应不过来,不光是TP相关的动作,连同其他任务和低优先级中断都无法执行,手表反而就更卡了,还跟个毛线手了。

所以TP报点率得折中选择,权衡功耗和性能,一般会在50~120H左右。

休眠模式

和LCD类似,TP也存在不同的休眠等级。如果用户使能了点触亮屏,那么再熄屏之后,TP只能进入浅睡模式,以便于及时响应点触中断;如果关闭了点触亮屏功能,那么就可以跟随系统动作,进入深睡模式。类似LCD,深度休眠的功耗收益要付出的代价就是退出休眠的时长更长,这里就不再展开了。

外设功耗模型

外设功耗模型是根据应用场景,合理切换外设的工作模式。设计目的是为了在满足用户使用场景的情况下,尽可能降低整机功耗。一般步骤为:

  1. 确定应用场景外设需要的工作模式;
  2. 确定外设各个模式下的工作电流;
  3. 在非应用场景下,将外设切换到省电模式;
  4. 打桩压测外设各个工作模式切换是否正常;

以PPG为例,有心率模式、血氧模式、佩戴检测模式。

a) 首先要明确不同应用下,PPG所需要切换的工作模式。如后台心率监测、心率应用检测,就需要切换成心率模式,后台血氧监测、血氧应用检测,就需要切换成血氧模式;

b) 分别切换PPG的3个模式,进行功耗测试(血氧模式功耗>心率模式>佩戴模式);

c) 进入应用场景时,控制PPG切换至对应模式,在退出应用场景的接口,将PPG切换为佩戴模式(通常功耗优化会在这个步骤下文章,比如减少中断频率、减少同步动作等);

d) 反复打桩压测3个模式切换是否正常(通常在HAL层进行统计,并结合功耗仪的记录情况来监测);

以上就是针对PPG的功耗模式设计的简单描述,实际开发过程会比上述过程会稍复杂,比如不同的应用场景下,可能需要其他外设配合输入一些raw data来执行健康算法,这里就要尽量减少交互的频率,在有限的交互次数来传输更多的有效数据,等等。

以上就是功耗外设篇的分享了,后续会从系统的角度对功耗优化和处理异常功耗bug做阐述。

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

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

相关文章

使用TTL直接对esp32-cam进行烧录

首先你要有一个usb转TTL下载器和一个esp32-cam 然后我们要将IO0与GND短接 UOR->TXD UOT->RXD 3V3->3V3 GND->GND

人工智能未来趋势

人工智能(AI)的未来趋势是多方面的,涵盖了技术进步、应用扩展、伦理法规等多个层面。以下是一些主要趋势: 算法进步:深度学习、强化学习等算法将持续优化,可能涌现出新的学习范式。例如,基于大…

[蜥蜴书Chapter2] -- 创建测试集

目录 一、规则 二、方法 1、seed 2、identifier 1)选取一个身份号 2)选取一定比例的身份号作为测试集 3)身份号的选取: 3、利用scikit-learn: 1) 随机生成: 2)注:分类 3&a…

【杂谈】-电动汽车的通信协议有哪些?

电动汽车的通信协议有哪些? 文章目录 电动汽车的通信协议有哪些?1、控制器局域网 (CAN)2、ISO 151183、CHAdeMO4、组合充电系统(CCS)5、Modbus6、本地互连网络 (LIN)7、Ethernet8、蓝牙&WIFI9、总结 电动汽车 (Electric vehic…

python判断ip是否是本机

银河麒麟服务器上下载脚本进行部署的时候,需要判断是部署在本机还是部署在远程服务器上,需要走不同的处理逻辑。 在Python中判断一个IP地址是否是本机的,可以采用以下方法: import socketdef is_local_ip(ip_address):# 获取本机…

Java共享问题 、synchronized 线程安全分析、Monitor、wait/notify

文章目录 1.共享带来的问题1.1 临界区 Critical Section1.2 竞态条件 Race Condition 2. synchronized语法及理解2.1 方法上的 synchronized 3.变量的线程安全分析3.1.成员变量和静态变量是否线程安全?3.2.局部变量是否线程安全?3.2.1 局部变量线程安全分…

Pycharm安装,环境初次配置与运行第一个简单程序

一、Pycharm安装 1.在PyCharm官网中,找到社区版下载链接,下载Pycharm社区版,社区版免费 2.下载成功后,双击下载好的安装包,点击下一步后,点击“浏览”更改安装路径到C盘以外其他硬盘,点击“下…

开发小需求:页面滚动一定距离后,顶部导航栏消失

在Vue3和TypeScript中实现网站顶部导航栏固定&#xff0c;并在页面滚动大于200px时&#xff0c;顶部导航栏消失&#xff0c;出现新的固定在顶部的导航栏 创建一个Vue组件来实现顶部导航栏的逻辑&#xff1a; <template><div class"navbar-wrapper"><…

【大厂AI课学习笔记NO.70】GitHub,GitLab,CODING等

GitHub及其相关产品详细介绍 一、GitHub 定义&#xff1a; GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持Git作为唯一的版本库格式进行托管&#xff0c;故名GitHub。它提供Git仓库的托管服务&#xff0c;并且提供多种功能帮助软件开发者更高效地协作和…

k8s安全控制、授权管理介绍

目录 一.Kubernetes安全控制介绍 1.客户端认证操作 2.访问对象资源依次流程 二.授权管理介绍 1.AlwaysDeny 2.AlwaysAllow 3.ABAC 4.Webhook 5.Node 6.RBAC 三.Role解释 1.Role和ClusterRole 2.Rolebinding和ClusterBinding 3.Rolebinding和ClusterRole 四.准入…

LeetCode-22题:括号生成(原创)

【题目描述】 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 【题目链接】. - 力扣&#xff08;LeetCode&#xff09; 【解题代码】 package dp;import java.util.ArrayList; import java.util.Arrays; im…

数字化审计智慧

简析内部审计数字化转型的方法和路径 内部审计是一种独立的、客观的确认和咨询活动&#xff0c;包括鉴证、识别和分析问题以及提供管理建议和解决方案。狭义的数字化转型是指将企业经营管理和业务操作的各种行为、状态和结果用数字的形式来记录和存储&#xff0c;据此再对数据进…

2024年展望:AI辅助研发引领科技创新潮流,重塑未来研发格局

2024 年 AI 辅助研发趋势 随着人工智能技术的持续发展与突破&#xff0c;2024年AI辅助研发正成为科技界和工业界瞩目的焦点。从医药研发到汽车设计&#xff0c;从软件开发到材料科学&#xff0c;AI正逐渐渗透到研发的各个环节&#xff0c;变革着传统的研发模式。在这一背景下&a…

ChatGPT预训练的奥秘:大规模数据、Transformer架构与自回归学习【文末送书-31】

文章目录 ChatGPT原理与架构ChatGPT的预训练ChatGPT的迁移学习ChatGPT的中间件编程 ChatGPT原理与架构&#xff1a;大模型的预训练、迁移和中间件编程【文末送书-31】 ChatGPT原理与架构 近年来&#xff0c;人工智能领域取得了巨大的进展&#xff0c;其中自然语言处理&#xf…

【Java项目介绍和界面搭建】拼图小游戏完结——源代码分析以及资料上传

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

AI与IoT之间的融合:预测性维护

预测性维护是利用数据分析和机器学习算法来预测设备故障和计划维护的一种方法。这种方法可以帮助企业减少意外停机时间&#xff0c;延长设备寿命&#xff0c;并优化维护资源。以下是一个简化的预测性维护应用实例&#xff0c;使用Python和机器学习库scikit-learn来实现。 假设我…

一款开源、免费、跨平台的Redis可视化管理工具

前言 经常有小伙伴在技术群里问&#xff1a;有什么好用的Redis可视化管理工具推荐的吗&#xff1f;, 今天大姚给大家分享一款我一直在用的开源、免费&#xff08;MIT License&#xff09;、跨平台的Redis可视化管理工具&#xff1a;Another Redis Desktop Manager。 Redis介绍…

【亲测有效】解决三月八号ChatGPT 发消息无响应!

背景 今天忽然发现 ChatGPT 无法发送消息&#xff0c;能查看历史对话&#xff0c;但是无法发送消息。 可能的原因 出现这个问题的各位&#xff0c;应该都是点击登录后顶部弹窗邀请 [加入多语言 alapha 测试] 了&#xff0c;并且语言选择了中文&#xff0c;抓包看到 ab.chatg…

hive中split函数相关总结

目录 split函数示例实战注意事项 split 函数一直再用&#xff0c;居然发现没有总结&#xff0c;遂补充一下&#xff1b; split函数 在Hive中&#xff0c;split函数用于将一个字符串根据指定的分隔符进行分割&#xff0c;并返回一个数组。它的语法如下&#xff1a; split(str…

【Python】成功解决ModuleNotFoundError: No module named ‘matplotlib‘

【Python】成功解决ModuleNotFoundError: No module named ‘matplotlib’ &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448…