解决方案调研(2)

GOAL:针对上一次老师提出的点进行补充调研。https://ieeexplore.ieee.org/document/8812785

KEY WORDS: 具体通信细节、耗电量估算、MSP系列、Google edge TPU(另写一篇)

在认真读完SnowFort这篇文章后,我更进一步了解了我们设计的预期,想相比于SnowFort有更进一步的提升,可能可以在如下方面做一些升级:

  • 提升Mote的运算性能,以便可以在mote上进行更多的数据处理
  • 提升Mote的可扩展性,可以让每个mote接入更多种类的传感器
  • 令Mote有更长or维持当前的功率(使用时间)
  • 提升Base Station的运算性能,可以不用考虑其功率情况
  • 组网能力提升、通信距离提升
  • 云端功能、数据处理算法提升

综上,除了对于老师上次提出的点进行补充,我也尝试着从这些方面来尝试改进。

具体通信细节

在上一篇调研的最后有一个简易的实现方案。LINK

STM32 PART

无限通信部分STM32系列方案使用的是 ATK-ESP8266

该模块的核心性能指标如图所示:

image-20200914204633006 image-20200914204839819

M5STACK PART

其核心是esp32系列芯片。esp32是esp8266的升级版,其WIFI支持:802.11 b/n/g,与ATK-ESP8266相似。其相比于ATK-ESP8266还支持蓝牙。

  • 传统蓝牙支持 L2CAP,SDP,GAP,SMP,AVDTP,AVCTP,A2DP (SNK) 和 AVRCP (CT) 协议
  • 低功耗蓝牙 (Bluetooth LE) 支持 L2CAP,GAP,GATT,SMP,和 GATT 之上的 BluFi,SPP-like 协议等

STM32L 低功耗系列

产品栈

image-20201014114115216

超低功耗模式中的不同产品系列

有M0+内核的STM32L0,有Cortex-M3内核的L1以及Cortex-M4内核的L4和L4+,其中L0和L1都有5种低功耗模式,这5种低功耗模式分别是低功耗的运行、睡眠、低功耗睡眠、停止和待机。对于L4和L4+,它们在5种低功耗模式基础上又添加了停止模式下的stop 1、stop 2和shutdown关断模式。可以通过内部的寄存器配置,来切换工作模式,在不同的模式下会有不同的唤醒时间。尤其是L4产品中shutdown模式,做到了非常低的功耗。

低功耗运行模式

其实低功耗运行模式还是一种运行模式,只是它的电流消耗很低,它与运行模式最大的区别是给内核供电的内部电压调节器电压要低于正常的运行模式下的电压值,即使用的低功耗的电压器来供电。在此情况下,系统最大的运行频率也会明显降低,例如L4在低功耗运行模式时最大的频率不超过2MHz。

睡眠模式

在睡眠模式,系统的CPU也就是Cortex-M内核的时钟被关闭了,但外设是可以继续保持运转的,它整个I/O的引脚状态与运行模式下也是相同的。

低功耗睡眠模式

低功耗睡眠模式是基于睡眠模式下的低功耗模式,是具有极低电流消耗的睡眠模式,它内核的时钟也是被关闭的,同时外设时钟频率受到了限制,因为它的电压调节器属于低功耗状态,内部的FLASH是要被停止的,所以低功耗睡眠模式只能从低功耗运行模式进入,这个是和其他模式不同的,其他模式都可以从运行模式直接做切换。

在低功耗运行和睡眠模式下,可以有一个BAM模式,它的工作方式是通过RTC加一个外设加DMA加SRAM,在不需要CPU干预的情况下就可以自行做数据采集,一旦到了数据采集需要到CPU处理的条件时,然后再把CPU唤醒做处理,所以这整个一个小系统就实现了一个协处理器的功能。

停止模式

首先说一下其的供电系统,其中有一个Vcore,它是内核的一个供电区域,负责给CPU内核供电,并且还给系统内部的存储器和它的数字外设供电。

停止模式中,除了CPU,也就是Cortex-M内核的时钟被关闭外,内核供电域的时钟也被停止,在停止模式下,内核供电域的时钟全部都停掉,PLL内部、外部的高速时钟全部都停掉,电压调节器为内核供电域供电,保留寄存器和内部SRAM中的内容。

在L4和L4+系列中,停止模式被细分为stop 0、stop 1和stop 2三种模式,按照功耗从低到高来说,stop 2是功耗最低的一个stop模式,它整个Vcore电源域放在了更低的漏电流模式下,使用了低功耗的电压调节器,只有最少的外设可以工作,所以它的功耗相对来说是最低的,但是唤醒时间是最长的。

Stop 1模式提供了更多的外设和唤醒源,唤醒时间也会更长一些;

Stop 0模式主电压调节器打开,可以得到最快的唤醒时间;

在所有的stop模式下,所有的高速振荡器停止,而低速振荡器保持活动,外设设置为active,需要的时候就可以使用这些高速时钟,能保证它在一些特定的事件下去唤醒设备。

待机模式

在待机模式下,内核的供电是直接断电的,电压调节器掉电区寄存器的内容会完全丢失,包括内部的SRAM,所以最大的区别即,系统从待机模式下的低功耗唤醒的时候,系统是要复位的。

默认条件的待机模式下,SRAM的内容是会丢失的,但是在L4里增加了SRAM 2,如果需要在待机模式后系统唤醒的时候有SRAM能保存一些内容,那就可以使用SRAM 2,它需要有多余220nA的额外电流消耗。

Shutdown模式

在shutdown模式,系统达到了最低的功耗,电压调节器的供电就被关断了,内核的供电也完全被断开,只有备份域的LSE、RTC可以工作所以在L4器件实现了一个新的模式,这个模式主要实现的目的就是为了延长电池供电之后整个器件的使用寿命,它其实是通过关闭内部的稳压器以及禁止使用耗电的监控,所以这个模式可以达到最低的功耗电流。

MSP系列芯片

MSP430的电压已经降到了3.3v,且MSP430比芯片分成了许多不同的模块部分,不用的部分功能模块可以关闭,电流近似为零,这样就极大的节省了能耗;另一个值得注意的是,其可以有三个时钟源,并产生更多的内部可用工作频率,让内部各个模块工作在不同的频率,不用的时钟也可以关掉。具体寄存器和模式切换TODO

MSP430 VS STML4

ULP Benchmark

在超低功耗MCU领域,有一些评测不同芯片功耗水平的Benchmark。

其中比较有名和有代表性的是:ULP Benchmark https://www.eembc.org/ulpmark/scores.php

NOTE:不同的编译方法,在真实功耗上会有很大的差异性。例如使用IAR和ARM GCC编译器在同一个芯片上的表现可能还不同。

从表中可以看到,STM32L4的大部分产品的在该Benchmark上的得分都是高于MSP430系列的。

其中,我选择了STM32L433(L4中较常见的一款,淘宝可买到)和MSP430FR5969(为MSP430Core)对比,可以看到STM32L4的功耗在该Benchmark下更低。DETAIL

image-20201014121221114

耗电量估算

ESP8266系列功耗

image-20200927172219640

TODO:

LINKS:

ULP Benchmark https://www.eembc.org/ulpmark/scores.php