分享

将MCU的功耗和IO引脚关联起来分析

 云深无际 2024-12-03 发布于内蒙古

现代的MCU功耗越来越低了,也集成了非常多的外设,但是电池的技术却没有进步,一个系统里面电池占有大量的质量,那如何有效的使用这点能量就是很重要的事情,一般来说,就像兜子里面的钱,开源和节流永不过时,开源这个没想望了,电池就这么大,那就是要节流。这么多外设,这么多的寄存器,这么多的程序写法,究竟什么才是最好的搭配。一般思想是,该用的时候就启用,那就是对应的外设时钟,以及使用中断,该干活时再干活,不使用轮询,熬的系统油尽灯枯。其实就这么多办法了,如果给我1000毫安,我直接高性能,你就300毫安要求大几个小时在线,真的是粑粑上面刻东西了,难的咧。

目前牛迪克有个开源的东西好用的不行,包括淘宝也有一个,不过就是使用的人家的上位机,emmmm,这个就不评价了。

他里面出现了这样的逻辑分析仪和低功耗测量搭配的功能,我就在想,这样的仪器是不是真的有用,或者要怎么样使用?

提取与功耗变化密切相关的事件,如引脚状态的翻转、中断的发生等。

功耗数据和引脚状态数据都基于同一个高精度时钟,确保两者的时间戳是一致的。通过时间戳的对应关系,可以将每个时刻的功耗值与对应的引脚状态关联起来。通过观察功耗变化与不同模块对应的引脚状态,可以快速定位到功耗较高的模块。不同代码段的执行会引起不同的引脚状态变化,通过关联分析可以了解代码执行对功耗的影响。

也就是三个层级,瞬时的,以及代码的,关联性的。

为什么我爱TI的单片机,绝对是因为只有他给出了每个步骤的功耗情况

这里也是全新的机会

  1. 时序分析: 分析功耗变化与引脚状态变化的时间关系,找出是否存在因果关系。查看信号的上升沿、下降沿、脉宽等。分析信号的状态变化 分析不同时序下的功耗变化,找到最优的时序配置。

  2. 相关性分析: 计算功耗与不同引脚状态之间的相关系数,衡量它们之间的线性关系。当所有引脚处于低电平或高阻态时,系统通常处于空闲状态,此时可以分析系统的静态功耗。当系统功耗出现峰值时,可以查看对应的引脚状态,判断是哪个模块或操作导致了功耗升高。

  3. 聚类分析: 将具有相似功耗特征的数据点聚成簇,分析不同簇的引脚状态特征。

这个就是真实的例子,一个键盘,我们在不用的时候,马上进入低功耗,使用的时候马上高性能,以及一个纽扣电池配合一个一次性的传感器传输几个小时,所以这个技能真的很重要。哪个用户希望天天充电?如同一个尿袋一般。

软件千变万化,管不住,但是硬件就不一样了。

  1. 硬件中断: 由外部硬件设备产生的中断,如定时器中断、外部中断、通信中断等。

  2. 软件中断: 由软件产生的中断,如系统调用、异常等。

分类

中断发生时,功耗通常会有一个短暂的峰值。将功耗变化与其他相关信(如中断请求信号、CPU状态等)进行关联分析。

通过单步调试,查看中断服务程序的执行过程,了解中断对系统状态的影响。

中断服务程序的执行时间: 中断服务程序的执行时间越长,对功耗的影响越大。

中断嵌套: 中断嵌套可能会导致功耗增加,需要仔细分析中断优先级和处理流程。

调试的时候需要有这些常识,不然分析不明白。

所以要对细节特别的熟悉

不同类型中断的功耗影响

中断服务程序(ISR)的执行:

  1. 指令执行: ISR 中的指令执行会消耗一定的动态功耗。

  2. 寄存器读写: 访问寄存器也会消耗功耗。

  3. 内存访问: 如果 ISR 需要访问内存,则会带来额外的内存访问功耗。尽量使用寄存器,减少内存访问次数。

  4. 避免浮点运算: 浮点运算消耗较大,尽量使用定点运算。

也就是说,可以对比不同代码的指令数量和消耗的功耗来优化

中断响应延迟过长会导致系统无法及时处理事件,可能引起额外的功耗。中断嵌套会增加中断处理的复杂度,从而增加功耗。可以测量中断的响应时间,尽可能的短,多使用低功耗的外设,不要唤醒CPU以及无线功能这些大杀器。选择功耗较低的外设,减少外设功耗。STM32 L开口头的外设。

中断频率越高,功耗越大。中断处理时间越长,功耗越大。中断处理的复杂度越高,功耗越大。

这三条在写程序的时候深入心底,一定要短小简单,不能太深入。如果存在中断嵌套,需要仔细分析中断优先级和处理流程,以确保功耗分析的准确性。

可以测量中断发生后系统响应的时间,评估系统的实时性。调整中断频率,避免过高的中断频率。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多