低功耗

扩充16位MCU产品线,服务智能家居和工业市场

瑞萨电子株式会社的子公司瑞萨电子(中国)有限公司(以下简称“瑞萨电子”)宣布推出R7F0C205L、R7F0C206L、R7F0C206M、R7F0C207M和R7F0C208M等5款新产品,扩充其16位微控制器(MCU)产品线,进一步加强对触控式家电设备、智能楼宇、工业自动化和便携式设备应用的开发支持。嵌入式开发人员可以利用新产品在单芯片上同时集成用户界面(包括电容触控键、LED和LCD)和系统控制功能。

该新款MCU继承了RL78系列产品业界领先的低功耗和卓越的电磁兼容性(EMC)等强大性能。电容式触控应用的开发人员能以超低功耗、极低成本利用瑞萨电子最先进的第二代电容式触控技术。此外,嵌入式LCD和LED直接驱动功能,支持多样化的产品设计,并在整个产品线上规范了开发人员MCU平台。MCU还集成了用于驱动LED和LCD的高电流端口,可优化具有LED和LCD显示器的电容式触摸按键应用。新型MCU是瑞萨电子首款在单芯片上支持LCD和LED直接驱动的16位触控式MCU。该新品将以包括MCU、Workbench和图形用户界面(GUI)工具(HMI代码生成器)的解决方案交付,相关评估板和评估套件将另行提供。

新型电容触控 MCU的主要特性:

• 检测多达64个键,低电容触控按键待机电流,高电流端口直接驱动LED

新型MCU可支持复杂的用户界面要求,最多支持64个键。有助于降低添加触控面板时布线的复杂性,简化电路板设计,互感式按键配置可提高防水性能。电容式触控键在待机模式下的平均能耗仅为6微安(uA),可有效支持电池供电和其它具有低能耗要求的便携式设备。

MCU的内置大电流驱动端口可以直接驱动LED,适用于大多数LED显示屏和触控按钮控制LED显示应用。MCU还支持大部份通用接口。

• 可提供Workbench、软件和应用笔记,进一步缩短开发时间

通过使用瑞萨电子电容式触控键MCU中配置的Workbench自动校准工具,可以使用图形用户界面(GUI)更轻松、更快速地调整过去受不同电路板布局、跟踪图案、面板材料等因素影响而较难更改的灵敏度和其它设置。结合开发所需的软件和信息,包括应用注释、用户手册和参考软件,Workbench可与MCU样片及评估板一同使用,快速确认和评估系统操作,从而缩短开发时间。

• 电容式触控R7F0C208M评估套件通过IEC61000认证

目前已有三款电容式触控R7F0C208M评估套件通过IEC 61000-4-3和IEC61000-4-6抗噪声认证,即将向市场供应。

供货

新型解决方案以及可选参考板和评估板将于2018年2月供货。

该新型MCU包含64引脚、80引脚LQFP封装, 48 KB到128 KB闪存,支持消费类和工业类应用。其工业级产品可支持工业应用中复杂的人机界面(HMI)设计。

关于该新品的主要产品规格,请参阅以下规格表

R7F0C205L、R7F0C206L、R7F0C206M、R7F0C207M 和 R7F0C208M 微控制器产品规格

瑞萨电子推出新型超低功耗微控制器

瑞萨电子推出新型超低功耗微控制器

瑞萨电子推出新型超低功耗微控制器

瑞萨电子推出新型超低功耗微控制器

瑞萨电子推出新型超低功耗微控制器

瑞萨电子推出新型超低功耗微控制器

(注 1)参见 1.1 特性表中的 ROM 和 RAM 容量。
(注 2)8个键中断相当于1个外部中断源。
(注 3)如果执行指令代码 FFH 则会发生非法指令错误。在通过在线仿真器或片上调试仿真器进行仿真期间,不会发生因执行非法指令而产生复位。

围观 337

对于需要电池供电的便携式系统,功率问题成为电路设计考虑的重要因素之一。芯片电路的功耗主要来自开关的动态功耗和漏电的静态功耗。动态功耗主要是电容的充放电(包括网络电容和输入负载)以及P/N MOS同时打开形成的瞬间短路电流。静态功耗主要是扩散区与衬底形成二极管的反偏电流和关断晶体管中通过栅氧的电流。工作时序及软件算法设计有缺陷,会降低系统工作效率、延长工作时间,也会直接增加系统能量的消耗。本文将具体阐述低功耗设计理念在基于MSP430和MFRC522的非接触式读写器上的应用与实现。

模块电路设计

系统选用MSP430F413单片机和MFRC522射频芯片。为简化系统结构,本系统仅由低电压报警单元、MCU单元、射频收发单元、天线、红外发射接收以及外围信号组成。

本系统选用的是SPI接口方式,其连接图如图1所示。

低功耗非接触式射频读写器的设计与实现
图1 MCU与射频接口及下载接口图

MSP430选用JTAG接口下载仿真程序。为了进一步减少功耗,在系统处于休眠模式时可通过指令关闭SPI接口和MCU中无用的端口。

射频卡读写器采用电感耦合式天线,主要用于产生磁通量,而磁通量用于向射频卡提供电源并在读卡器与射频卡之间传输信息。当一个RFID系统正常工作时所需的磁感应强度B一定时,安培匝数NI由环形天线的边长a以及标签和读写器天线的距离x来共同决定。其关系式为:

低功耗非接触式射频读写器的设计与实现

电感耦合式天线的特征值主要有品质因数(Q)和谐振频率。一般而言,Q一方面衡量能量的传输效率,另一方面也衡量频率的选择性。对于并联谐振回路,Q可以定义为:

Q=2πfRC=R/(2πfL)(f在本系统中为13.56MHz) (2)

式中:f为谐振频率;R为负载电阻;L为回路电感;C为回路电容。Q值越高,天线的输出能量越高,然而太高的Q值会干扰读写器的带通特性,从而无法遵从协议标准。一般来说,Q=20时,整个系统的带通特性与带宽都比较好。RFID系统中的品质因数一般在10~30内取值,最大不要超过60。

MFRC522从TX1和TX2引脚发射的信号是已调制的13.56MHz载波信号,辅以多个无源器件实现匹配和滤波功能,以直接驱动天线。其匹配电路和信号接收电路如图2所示。

低功耗非接触式射频读写器的设计与实现
图2 天线匹配电路

红外发射接收电路部分的设计目的是为了节省电源开支,当系统处于休眠模式时停止发射无线电波,可外加一个红外对管来检测是否有卡进入天线范围。当红外接收管接收到外界有卡时立即进入中断,跳出休眠模式,对外发射无线电波,并进行相关的操作。这种通过指令间断打开红外发射管检测是否有卡再进入中断唤醒CPU 和打开天线的方法缩短了天线和红外管的电流消耗,从而节省了功耗。

软件设计

CPU的运行时间对系统的功耗影响很大,所以应尽可能缩短其工作时间,使系统较长时间处于休眠或低功耗模式。当系统上电完成初始化操作后立即进入休眠模式,只有当红外接收管接收到信号时产生中断才打开天线进入工作模式。其中断服务程序如下:

#pragma vector=PORT2 _VECTOR__interrupt void Port_2(void)
{ LPM3_EXIT; //退出休眠
PcdAntennaOn(); //开启天线
PcdReset(); //RC522复位
P1OUT = 0xFF; //打开SPI接口
station=1; //转入工作模式
P2OUT|=BIT6; //LED亮
P2IFG&= ~(BIT7); //清除标记}

图3是程序运行的流程图。

低功耗非接触式射频读写器的设计与实现
图3:程序运行流程

MSP430有五种低功耗模式,本系统采用的是LPM_3,此时DC发生器的DC电流被关闭,只有晶振活动。用晶振做系统主时钟和定时器时钟源,对红外接收管脚中断使能定义,使红外发射管每隔0.24s发射一个0.03ms的脉冲,间断地检测在天线范围内是否有卡,有卡时红外接收管产生中断进入中断服务程序。这样让I/O口间歇运行既不影响正常读卡也能节省电能。

尽量减少CPU的运算量,将一些运算的结果预先算好,放在Flash里,用查表的方式代替实时计算,需要运算时最好使用分数运算,尽量避免浮点数运算。定义变量时,尽量使用字符型变量。减少CPU的运算量可以有效降低CPU的功耗。

总结

本文利用MSP430单片机的中断、定时、运算等功能,借助于软件优势,及MFRC522的低电压,小体积等特点,使读卡器读卡距离为0~60mm,休眠模式的电流小于10μA,工作模式时电流约为150mA,延长了电池的寿命,增加了系统可靠运行的时间。

来源: eechina

围观 369

不知不觉,我们已经处于物联网的汪洋大海之中,大家公认的说法是,到2020年全球物联网设备接入总数将达到300-500亿。面对这海量的设备,维护变成一个繁重的任务,这就要求互联网设备可靠“皮实”的同时,功耗足够低,一块电池(或者使用能量收集技术)能撑足够久。因此“低功耗”三个字在物联网用户端设备的设计中,一直被摆在很高优先级的位置上。这也让开发者在元器件的选型上小心谨慎,铭记下面这些不得不守的“军规”。

死磕物联网低功耗设计,BOM中不得不知的五条“军规”
图1:物联网用户端设备系统框图

第一条:用一颗低功耗的MCU

从物联网设备的系统框图上来看,MCU处于核心的地位;而从功耗的角度来看,它也是耗电最大的“电老虎”。8-bit MCU功耗固然低,但毕竟性能有限,所以在物联网设备中32-bit MCU上位成了主角。目前在32-bit通用MCU领域,ARM Cortex-M系列架构的CPU内核占主流,从M0、M0+、M3、M4到M7,序号越大性能越高,功耗也越大。所以根据物联设备的应用场景,选择一颗功耗性能比“刚刚好”的CPU内核是首要准则。

不过决定MCU整体功耗的因素很多,除了CPU内核自身的功耗,至少还要考虑三个因素:是否有多样的电源管理模式设定,可以让CPU内核和无需工作的电路处于休眠状态;是否有灵活的时钟管理系统,按需对各个功能电路进行调度;是否有更智能而低功耗的外围电路,能够帮助CPU内核分担工作。其实这些因素核心的思路就是:无事休眠、按需激活、避免空耗。

要想全面了解MCU低功耗性能、做出正确判断,除了吃透器件的Datasheet、经验设计积累外,目前也有第三方的评测可供参考,比如EEMBC联盟为衡量嵌入式微控制器低功耗特性专门设计的ULPBench评分。虽然有人认为这一评分的结果值得商榷,但仍然不失为一把衡量MCU整体低功耗特性可参考的标尺。

死磕物联网低功耗设计,BOM中不得不知的五条“军规”
表1:ULPBench中业界主流MCU产品得分

第二条:考虑集成化的传感器

在传感器的选型上,开发者通常有两种选择:分立的传感器或集成化的传感器。单独来看,前者在成本和功耗上都更有优势,不过从系统整体功耗上看,集成传感器件不失为一种不错的选择。因为在集成传感器件中,通常会将信号调理电路(如ADC)整合进去,将预处理后的信号通过SPI或I2C等数据接口直接传给MCU,减少MCU数据处理的负荷。有些传感器件还会集成信号处理电路,如一个低功耗的CPU核,构成功能更完整的传感器中枢,简单的计算自己做,进一步减少对主MCU的“打扰”。这些策略都会对系统总体能耗的降低有帮助。

第三条:选择合适的无线互连协议

影响物联网产品功耗的另一个重要因素就是无线互连功能。目前市场上有太多的无线互连协议可供选择,从私有的Sub-GHz协议,到众所周知的Wi-Fi、BLE、ZigBee等开放标准,以及近年来快速发展的低功耗广域网LPWAN协议(如LoRa、Sigfox、NB-IoT等)。无线通信的功耗会与网络的规模、拓扑结构、可靠性、数据吞吐量等因素相关。通常来说,拓扑结构越复杂、数据吞吐量越大的网络,功耗也会更大,比如:星形WiFi网络要比点对点通信的Sub-GHz无线通信功耗要高很多;同样采用ZigBee协议,星形网络肯定比Mesh网络能耗更低。

因此物联网设备无线互连协议的选择与应用场景关联度极高,开发者需要从现实的需求以及未来的扩展性方面通盘考虑,确定适合的无线技术,在此基础之上再选择低功耗性能最优的元器件。

第四条:选用耗电少的电源管理器件

电源管理器件是物联网系统中必不可少的部分。不论是选用LDO线性稳压器还是DC-DC转化器,抑或是能够提供多轨电压输出的PMIC,高效率是当然的首选特性。此外,与物联网产品配套的电源管理器件,特别在与能量收集技术相关的应用中,自身还需要具备低静态电流的特性——如TI等公司相关产品标称的静态电流值可达到300nA左右——尽可能降低设备的待机功耗。

第五条:做好安全性功耗预算

2016年10月网络黑客劫持了摄像头等大量物联网终端设备,向北美网络发起了大规模DDoS攻击,这再次提醒人们物联网设备端的安全问题不容忽视。而对物联网设备来说,增强安全功能也意味着更大的功耗,比如如果MCU的内部或外部没有配置加密硬件,加解密工作就不得不耗费MCU的计算资源,产生更多的功耗。使用更可靠的非对称加密算法,与对称加密算法相比也需要更多的功耗。因此安全性关联的功耗预算,也是必须考量的部分。

将以上几个因素串联起来,我们才可以为物联网设备端的功耗描绘出一幅完整的图景。在此基础之上,锱铢必较,精心雕琢出禁得住市场和用户考研的低功耗产品。

死磕物联网低功耗设计,BOM中不得不知的五条“军规”
表2:主要无线互连协议比较

转自: 安富利

围观 374

电源对电子设备的重要性不言而喻,它是保证系统稳定运行的基础,而保证系统稳定运行后,又有低功耗的要求。

在很多应用场合中,对电子设备的功耗要求非常苛刻,如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久,且期间不需要任何维护;由于智慧穿戴设备的小型化要求,电池体积不能太大导致容量也比较小,所以很有必要从控制功耗入手,提高设备的续行时间。

在系统或电源复位以后,MCU处于运行状态。运行状态下的时钟源为 CPU 提供时钟,内核执行程序代码。当 CPU 不需继续运行时,可以利用多个低功耗模式来降低功耗,例如等待某个外部事件时。

MM32L0产品支持三种低功耗模式:睡眠模式、停止模式和待机模式,可以在要求低功耗、短启动时间和多种唤醒事件之间达到最佳的平衡,可以满足用户对低功耗的要求。

• 睡眠模式

在睡眠模式,只有 CPU 停止,所有外设处于工作状态并可在发生中断/事件时唤醒 CPU。

有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是 WFI(wait for interrupt)和 WFE(wait for event),即等待“中断”唤醒和“事件”唤醒。

进入睡眠模式例:
__WFE();//等待事件,等待事件是一个暂停执行指令暂停至任意事件产生后被唤醒。__WFI();//等待中断,等待中断是一个暂停执行指令暂停至任意中断产生后被唤醒。

关于退出睡眠模式:

如何使用MM32的三种低功耗模式?

配置外部事件唤醒函数例:
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
EXTI_InitTypeDef EXTI_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init( GPIOA, &GPIO_InitStruct);
SYSCFG_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
EXTI_InitStruct.EXTI_Line = EXTI_Line0;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Event;
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStruct);
}

• 停止模式

在保持 SRAM 和寄存器内容不丢失的情况下,停机模式可以达到最低的电能消耗。在停机模式下,停止所有内部 1.8V 部分的供电, PLL 、HSI 的振荡器和 HSE 晶体振荡器被关闭,调压器可以被置于普通模式或低功耗模式。

有两种方式进入停止模式,可以通过设置独立的控制位,选择以下待机模式的功能:

独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动 IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。

内部振荡器(LSI 振荡器):通过控制/状态寄存器 (RCC_CSR)的 LSION 位来设置。在停止模式下,如果在进入该模式前 ADC 和 DAC 没有被关闭,那么这些外设仍然消耗电流。

进入停止模式例:
void Sys_Stop(void)
{
PWR_EnterSTOPMode(0, PWR_STOPEntry_WFI);
}
注:MM32L0xx在进入停止模式前,需将系统时钟切换到HSI。

关于退出停止模式:

当一个中断或唤醒事件使MCU退出停止模式时, HSI 振荡器被选为系统时钟。当电压调节器处于低功耗模式下,当系统从停止模式退出时,将会有一段额外的启动延时。

如何使用MM32的三种低功耗模式?

配置中断唤醒函数例:
void WKUP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_SYSCFG, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOA, &GPIO_InitStructure);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=EXTI0_1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
PWR_WakeUpPinCmd(ENABLE);
}

• 待机模式

待机模式可实现系统的最低功耗。该模式是在 CPU 深睡眠模式时关闭电压调节器。整个 1.8V 供电区域被断电。 PLL、 HSI 和 HSE 振荡器也被断电。 SRAM 和寄存器内容丢失。只有备份的寄存器和待机电路维持供电。在进入待机模式后,除了被用于唤醒 I/O,其余 I/O 都进入高阻态,而从待机模式唤醒后,相当于复位MM32芯片,程序重新从头开始执行。

有两种方式进入待机模式,可以通过设置独立的控制位,选择以下待机模式的功能:

独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动 IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。

内部振荡器(LSI 振荡器):通过控制/状态寄存器(RCC_CSR)的 LSION 位来设置。

进入待机模式例:
void Sys_Standby(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
PWR_WakeUpPinCmd(ENABLE);
PWR_EnterSTANDBYMode();
}

关于退出待机模式:

当一个外部复位(NRST 引脚)、 IWDG 复位、 WKUP 引脚上的上升沿, 微控制器从待机模式退出。从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR),所有寄存器被复位。

从待机模式唤醒后的代码执行等同于复位后的执行(采样启动模式引脚、读取复位向量等)。电源控制/状态寄存器(PWR_CSR)将会指示内核由待机状态退出。

如何使用MM32的三种低功耗模式?

配置WKUP引脚上升沿函数例:
u8 Check_WKUP(void)
{
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0))
{
return 1;
}
else
{
return 0;
}
}
}

void WKUP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPD;
GPIO_Init(GPIOA, &GPIO_InitStructure);
SYSCFG_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=EXTI0_1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
if(Check_WKUP()==0) Sys_Standby();
}

当系统处于低功耗状态时,使用下载器是无法给芯片下载程序的。有很多用户使用低功耗功能,但是唤醒部分配置有问题,导致MCU无法唤醒,发现无法对芯片进行下载程序。在这里告诉大家一个调试低功耗模式的小秘密,您在测试低功耗模式时可在主函数启动时加一个较长的延时函数,按住板子的复位键,使系统处于复位状态,然后点击电脑端的下载按钮下载程序,这时再释放复位键,这样MCU上电后执行延时函数期间对低功耗程序进行擦除。

还有一种方法是选择启动方式,通过将BOOT0拉高,重新上电使MCU从SRAM启动,重新选择一个闪灯程序对flash进行擦除,擦除完成后将BOOT0拉低,然后重新上电即可重新下载程序。

转自: 灵动微电MMCU

围观 756

新产品是专为移动应用设计的大批量非接触式连接方案

高速、非接触式连接技术厂商Keyssa日前宣布:推出其新一代元件化非接触连接器产品KSS104M,它采用超紧凑的3x3mm封装,并具有改良的电气和机械耐受性等利于设计的特性,同时其功耗已得到大幅的降低,且支持多种成为行业标准的高速通信协议。Keyssa也将发布一个即刻可用的非接触式连接模组KSS104M-CW(Connected World计划),该模组满足了对于系统非常关键的所有电磁和机械要求,以在移动和其它系统应用中成功使用KSS104M。

Keyssa推出高速、超小面积且超低功耗的KSS104M和KSS104M-CW非接触连接方案

KSS104M是Keyssa的Kiss Conectivity非接触连接解决方案中的最新产品,它们都是微型化、低成本、低功耗、全固态的电磁连接器,可以在设备之间高速、安全地移动超大文件。与前几代产品一样,KSS104M可以很容易地被集成到客户的终端产品中,同时可支持多种作为行业标准的高速数据和视频协议,而不需要对软件或固件进行任何改动。KSS104M-CW是一个基于KSS104M的电磁模组系统,旨在解决供电、机械附着机构等问题,并且提供波导传输支持(包括颜色和完成品)和材料要求建议。该模组可在多个应用领域内,帮助使用高可靠非接触式连接器的产品更快速上市。

KSS104M-CW标志着Keyssa的愿景正走向商业应用,其中包括手机不再需要烦人的线缆,消除了不可靠的机械连接器以及他们所产生的干扰,提供远超过无线网络可支持的数据吞吐量,最终可点燃之前被传统连接器所制约的工业设计创新。

“消费者和制造商一直都是不情愿地接受了机械连接器这一需求。Keyssa在研发上花费了9年的时间,来了解在移动产品中实现高速非接触式连接所需要满足的所有技术要求。在花费无数人年的努力并申请了250项专利之后,我们才有了KSS104M和KSS104M-CW,”Keyssa首席执行官Eric Almgren说。“现在,这项引人注目的、无需机械连接器的功能,已经可以提供给那些想要简化实现过程及测试的制造商,并在系统良品率和可靠性两个方面支持大批量和高可信生产。”

“自从有了KSS104M,我们已着眼于扩展Keyssa在非接触式连接领域内的领导力,即通过结合我们在极小占位面积上提供的业界领先的性能和功耗,使KSS104M成为可嵌入到小型移动设备或嵌入式IoT设备中的理想之选,”Keyssa产品副总裁Satish Ganesan,这位曾在诸如博通这样的公司负责过大批量无线和IoT产品的资深人士评论到。“此外,KSS104M也进行了特别的设计,可为客户的系统带来非常高的良品率,这得益于其可简化大批量制造工艺的高可靠性和业界领先的机械余量。”

作为Keyssa的投资者之一,富士康旗下的鸿胜精密科技(FIT)正在通过打造可被集成到各种系统中的高速非接触式连接器模组KSS104M-CW,力助Keyssa将产品推向市场。“Keyssa的非接触式连接解决方案标志着一种全新的且是颠覆性的设备连接形式,可使连接不再需要连线,”FIT首席执行官卢松清(Sidney Lu)表示。“借助KSS104M在非接触式信号连接上的优势,将KSS104M与电源和机械附着机构一起集成到一个非接触式连接模组中则是顺理成章,该模组可被运用在多个应用领域中,以实现更快的上市时间和高度可靠的非接触式连接器。”

“KSS104M-CW是伴随我们提出的Connected World计划而设计的,”Keyssa营销副总裁Steve Venuti说道。“我们的生态系统合作伙伴需要知道:高速连接在系统中可以很容易且可靠地实现,可以在高达亿级的大批量上实现,同时其系统物料成本(BOM)还非常低。”

除了KSS104产品线已有的技术性改善以外,KSS104M还具有以下关键特性:

• 3x3mm封装,带有内置天线
• 支持多种高速视频和数据通信协议,包括USB 2.0
• 运行速度高达6Gbps
• 非常低的系统物料成本(BOM)
• 高可靠性和高客户系统良品率

KSS104M目前正在通过各种与大批量生产相关的认证,覆盖公差、温度、湿度和跌落测试,协议向后兼容性(USB),移动、振动和其它大批量移动产品相关的认证。目前可为客户提供KSS104M样片。

来源: eechina

围观 341

作者:Øivind Loe,Silicon Labs微控制器产品高级营销经理

即使是在诸如物联网应用的无线连接这种主导功耗的事件中,让尽可能多的进程自主运行,也可大大提高电池寿命。降低功耗一直是微控器(MCU)市场的一个主要关注点。超低功耗MCU现在可以大大降低工作模式和深度睡眠模式下的功耗。这种变化的效果是显而易见的,它大大提高了我们日常嵌入式应用中的电池寿命,并且提供了在未来使用能量收集的可能性。

然而,要基于新型MCU降低功耗,开发人员必须考虑到许多因素,对此Silicon Labs特别撰写一篇技术文章:“以0 MIPS运行你的嵌入式系统”,帮助开发人员了解如何利用新型MCU中外设的自主运行,通过更接近以“0”MIPS运行,来实现数据手册中所承诺的低功耗。

低功耗为嵌入式系统研发关键

对于在功耗敏感型物联网(IoT)应用中所使用的新型MCU和无线MCU(WMCU)来说,执行代码时的功耗已经明显下降,甚至达到40μA/ MHz以下。使用这些低功耗规格,您可能会想知道为什么我们需要睡眠模式,为什么不以500 kHz运行您的代码来实现20μA的电流消耗,并且允许您的应用使用电池运行10年?其实事情并不是这么简单的。

睡眠模式下的功耗在过去几年中也有显著的改善。我们现在可以看到深度睡眠模式下的功耗低于2μA,而一些睡眠模式下的功耗甚至低于50 nA。您可能会觉得拥有这些模式设计出来的系统功耗自然很低,然而事实并非如此,应用能否利用睡眠模式才是关键。

为什么工作模式是好的...也是坏的

使用MCU或WMCU的最直接的方法是让CPU管理一切。例如,您可以启动模数转换(ADC),将一些数据放入通信接口(如USART传输)中,读取ADC数据,并对数据做出一些处理,所有一切都由CPU直接控制。直接的CPU控制简化了开发,但其成本是:每当外设或外部事件需要处理时,MCU都将处于工作模式,从而使功耗大增。

近期,一些数据手册显示工作模式的电流是40μA/MHz甚至更低,它们通常是高时钟频率下的参数,低频下会变大,进而导致绝对功耗变大。这是因为工作模式下频率和功耗不是线性关系。功耗由如下两部分组成,其中第二部分和频率联系不紧密:
1. 处理器本身,它是和频率按比例变化的。
2. 有基础工作电流的模块,比如低压差线性稳压器(LDO),欠压检测器(BOD)等。

要想降低功耗,应尽可能地减少MCU在高功耗的工作模式下运行,尽可能地关闭外设,让CPU尽可能多地睡眠。

功耗预算

对于受限于能源的电池供电型应用来说,要知道能源消耗在哪里才能进行优化。表1显示了一个传感器检测无线应用的功耗预算,它的功耗优化不太好。

通过平均计算每个组件的功耗来测量或估计功耗。如果CPU占空比为两个百分点,并且在60μA/ MHz时工作在20 MHz,则CPU的消耗为24μA。

请注意,表1所示的功耗预算是根据功能划分的。例如,基础睡眠电流包括一个低频振荡器和一个实时时钟(RTC)来对系统事件进行定时从而允许深度睡眠。

传感器测量部分是由一个0.5kHz的中断触发,中断之间深度睡眠。低功耗蓝牙每秒钟都要把数据发出去,这是个很普遍的低功耗应用。最后,还有一些非MCU部分的功耗。MCU可能无法直接控制这些模块中的一部分,包括电源管理外设,在这个例子中,MCU是直接控制ADC对传感器进行采样,如果不是的话,传感器电流将完全是图片中的数据。

对于这个例子,传感器的持续电流大约是390μA,但是通过调整占空比,每个ADC采样仅仅使用了10 μs的时间,从而可以大大降低功耗。

【干货】以0 MIPS运行你的嵌入式系统

表1 目标应用的功耗预算

如果该无线应用由具有225 mAh容量的CR2032电池供电,则在61.6μA功耗下操作时其寿命约为0.4年。事实上,我们可以做得更好。

改善现状

我们来看看降低MCU传感器测量电流的方法。虽然此示例涉及ADC测量外部传感器,但相关示例可能集中在一系列不同类型的测量以及与外部环境的交互上。在这两种情况下,MCU和外部环境之间都会发生频繁的交互。

实现低功耗传感的最简单的方法是让CPU尽可能多地处于睡眠模式,只在采样时唤醒,并尽可能快地重回睡眠模式。对于非常低的采样率来说,这种方法很好,但是从图1可以看出,当每秒采样次数增加时,系统的功耗也会显著增加:

【干货】以0 MIPS运行你的嵌入式系统

图1 采用中断进行ADC采样,显示出随着每秒采样次数的增加,功耗也在增加

许多类型的应用必须具有频繁的活动,同时还需要保持电池寿命。超过1kHz的活动率并不是闻所未闻,这时候就需要采取措施来保持低功耗。

图2显示了传感器管理的两种附加方法。外设反射系统/直接存储器访问(PRS / DMA)方法使CPU在完全不参与的情况下在深度睡眠模式进行ADC采样。而不是RTC唤醒CPU,然后CPU启动ADC进行采样。RTC通过事件系统(如Silicon Labs的PRS)将事件直接发送到ADC。ADC在接收到此事件时自动启动ADC转换。转换完成后,DMA在这种情况下也能够从深度睡眠模式下运行,从ADC获取数据并将其存储在RAM中。 PRS / DMA方法的好处是显著降低了电流消耗。在1 kHz时,系统电流从58μA降低到25μA。

【干货】以0 MIPS运行你的嵌入式系统

图2 该ADC采样图显示了各种工作方式下的功耗

驱动ADC的更有效的方法是PRS /比较器(CMP)方法,其中RTC仍然通过PRS系统触发ADC,但在这种情况下,ADC立即使用比较功能对样本进行评估,除非发现有需要的数据,否则不使用DMA或CPU。这种方法能够实现1 kHz采样率时系统电流只有3.5μA。

动态ADC比较器

使用PRS/CMP方法,大部分采样数据都被丢弃,CPU只关注需要处理的数据。当信号变化缓慢时,或者需要特定的信号时,这种方法很有效。

当使用比较功能监视信号时,一种方法是测量信号,然后根据这个信号设置阈值,只要信号在阈值范围内,那么当ADC测量信号时,系统可以保持在深度睡眠模式,当然CPU也保持在睡眠模式。

然而,如果信号发生变化,并且超过阈值,系统将知道该信号,并采取适当的措施。在回到睡眠模式之前,ADC阈值将重新配置以适应新的信号值,因此系统可以再次进入睡眠模式,直到下一次信号发生变化。图3显示了这种技术的示例。圆点表示ADC样本,箭头表示每当CPU被唤醒时,它将记录本次变化并重新配置阈值。

【干货】以0 MIPS运行你的嵌入式系统

图3 当信号超过阈值时,CPU中断动态修改ADC的阈值

使用这种方法,系统实际上将丢失一些信号准确性,因为信号可以在触发器之间的阈值范围内任意移动。然而,益处是功耗显著降低。

如果系统的目标是测量信号的动态值,则PRS / DMA驱动方法是理想的,因为它使所有数据可用,同时仍然可以提供非常有益的节能特性。

自主工作子系统

ADC示例只是众多通过睡眠模式降低应用功耗的方法之一。专注于低功耗应用的新型MCU(如Silicon Labs的EFM32 Gecko MCU)拥有大量功能,可在深度睡眠模式下运行,从而实现高水平的自主行为。

例如,Gecko MCU的LESENSE(低功耗传感)模块可以自动地、周期性地采样多达16个通道,完全不需要CPU参与。它可以实现高频率检测且充电1次就能工作10年。

在许多情况下,单个外设可以自主地履行其职责,但也有许多需要交互的情况。在这种情况下,我们可以利用诸如在当前一些新型MCU中存在的PRS系统这样的外设互连。这些外设互连允许多个外设连接以自主执行更复杂的任务。

图4显示了这样的自主系统示例,其使用事件链来执行其功能:
1. RTC以给定的时间周期性地发送PRS信号至ADC以启动转换。
2. RTC同时启动外部传感器,这样在测量时信号就已经准备好了。
3. ADC完成采样并通知DMA,DMA把数据传送到RAM。
4. 来自ADC的完成PRS信号关闭外部传感器。
5. 当缓冲器满时中断唤醒CPU,或者超过ADC阈值时中断唤醒CPU。
6. 可选项:PRS看门狗监视事件循环,确保它保持运行。

DMA可以从图4所示系统中拿走,通过设置ADC的比较功能来做到更省电。

【干货】以0 MIPS运行你的嵌入式系统

图4 该自主ADC系统包含周期工作的传感器和看门狗

这些自主子系统具有以下几个主要优点:
1. 显著节能。
2. 即使CPU负载很重时传感器依旧可以稳定工作。

缺点是,并不是所有的MCU都支持这种类型的操作,并且在设置交互时,您会希望像硬件设计人员一样思考。总之,对于许多电池供电型应用来说,其优点明显多于缺点。

结论

通过利用各种节能技术,当传感器测量时,CPU几乎完全脱离工作。对于表1所示的无线应用,这将使总平均功耗从61.6μA降低到37.6μA,降低了39%,从而使电池寿命从大约5个月延长到8个月,增加了64%,或者可以允许电池尺寸减小以改善系统外形。

对于非无线应用,节能将更加显著。表1中的示例,能耗将从29.6μA降低到5.6μA,由CR2032电池供电,理论上寿命将从10个月延长到4.6年。

来源: Silicon Labs

围观 318

循序渐进式的功耗优化已经不再是超低功耗mcu的游戏规则,而是“突飞猛进”模式,与功耗相关的很多指标都不断刷新记录。我们在选择合适的超低功耗mcu时要掌握必要的技巧,在应用时还需要一些设计方向与思路才能够更好的应用。

一:超低功耗mcu-低功耗mcu的选择方法

嵌入式微控制器 (mcu)的功耗在当今电池供电应用中正变得越来越举足轻重。大多mcu 芯片厂商都提供低功耗低功耗产品,但是选择一款最适合您自己应用的产品并非易事,并不像对比数据表前面的数据那么简单。我们必须详细对比 mcu 功能,以便找到功耗最低的产品,这些功能包括:断电模式 定时系统 事件驱动功能 片上外设 掉电检测与保护 漏电流 处理效率。

----在低功耗设计中,平均电流消耗往往决定电池寿命。例如,如果某个应用采用额定电流为 400mAh 的 Eveready 高电量 9V 1222 型电池的话,要提供一年的电池寿命其平均电流消耗必须低于 400mAh/8760h,即45.7uA。

----在使 mcu 能够达到电流预算的所有功能中,断电模式最重要。低功耗 mcu 具有可提供不同级别功能的断电模式。例如,TI 超低功耗 mcu MSP430 系列产品可以提供 5 种断电模式。低功耗模式 0 (LPM0) 会关闭 CPU,但是保持其他功能正常运转。LPM1 与 LPM2 模式在禁用功能列表中增加了各种时钟功能。LPM3 是最常用的低功耗模式,只保持低频率时钟振荡器以及采用该时钟的外设运行。LPM3 通常称为实时时钟模式,因为它允许定时器采用低功耗 32768Hz 时钟源运行,电流消耗低于 1uA,同时还可定期激活系统。最后,LPM4 完全关闭器件上的包括 RAM 存储在内的所有功能,电流消耗仅 100 毫微安。

----时钟系统是mcu功耗的关键。应用可以每秒多次或几百次进入与退出各种低功耗模式。进入或退出低功耗模式以及快速处理数据的功能极为重要,因为 CPU会在等待时钟稳定下来期间浪费电流。大多低功耗 mcu 都具有“即时启动”时钟,其可以在不到 10~20us 时间内为 CPU 准备就绪。但是,重要的是要明白哪些时钟是即时启动、哪些非即时启动的。某些 mcu 具有双级时钟激活功能,该功能在高频时钟稳定化过程中提供一个低频时钟(通常为32768Hz),其可以达到 1 毫秒。CPU 在大约 15us 时间内正常运行,但是运行频率较低,效率也较低。如果 CPU 只需要执行数量较少的指令的话,如:25 条,其需要 763us。CPU 低频比高频时消耗更少的电流,但是并不足于弥补处理时间的差异。相比而言,某些 mcu 在 6 微秒时间内就可以为 CPU 提供高速时钟,处理相同的 25 条指令仅需要大约 9us(6us 激活+25 条指令′0.125us指令速率),而且可以实现即时启动的高速串行通信。

----另外,如果 mcu 时钟系统为外设提供多个时钟源的话,当 CPU 处于睡眠状态时外设仍然可以运行。例如,一次 A/D 转换可能需要一个高速时钟。如果 mcu 时钟系统提供独立于 CPU 的高速时钟,CPU 就可以在 A/D 转换器运行情况下进入睡眠状态,从而节省 CPU 耗流量。

----事件驱动功能与时钟系统的灵活性并存。中断会使 mcu 退出低功耗模式,因此,mcu 的中断越多,其防止浪费电流的 CPU 轮询与降低功耗的灵活性就越大。轮询意味着进行与不进行功耗预算之间存在差异,因为它在等待出现事件时会浪费CPU 带宽并需要额外电流。一个好的低功耗 mcu 应具有充分的中断功能,为其所有外设提供中断,同时为外部事件提供众多外部中断。

----按钮或键盘应用可以证明外部中断的优势。如果不具备中断功能,mcu 必须频繁轮询键盘或按钮,以确定其是否被按下。不仅轮询自身会消耗功率,而且控制轮询间隔也需要定时器,其会消耗附加电流。相比而言,在具备中断情况下,CPU 可以在整个过程中保持睡眠状态,只有按下按钮时才激活。

----在选择低功率 mcu 时,还需要考虑外设功耗与电源管理。某些低功率 mcu 仅仅是设计时不具备低利率功能的旧架构的改进版本。而有些 mcu 在设计时即具备低功耗特性,并在其外设中内置了低功耗功能。一种特性是在需要时单独启动或关闭外设的能力,换言之,更重要的是自动启动或关闭外设的能力。 A/D 转换器就是一个例子,其在完成一次转换后可以自动关闭。另外,某些 mcu 正在引入直接存储器存取功能,其可以在无需 CPU 干预情况下自动处理数据。

----大多 mcu 具有集成的掉电保护功能,当电源低于正常操作范围时其可以复位 mcu。通常会提供启动或关闭掉电保护以节省功耗的功能,但是必须在整个过程中都使掉电保护功能置于可用状态,因为掉电是不可预测的。某些 mcu 需要70uA 的电流来实现掉电保护。在只需要 45uA 平均电流的应用实例中很明显可以不考虑这些 mcu。 ----在选择低功耗 mcu 期间有时会忽视漏电流,但是,在最苛刻的低功耗应用中则必须考虑到漏电流。大多改进后的低功耗 mcu 都具有 1uA 的限定输入漏电流。在 20 输入器件中,它可能会消耗 20uA!针对低功耗设计的最新 mcu 具有最高50nA 的漏电流。

----最后,我们常常会误解 mcu 处理效率。大家通常会认为 16 位 mcu 需要两倍于 8 位 mcu 的内存,但是一个 16 位架构实际上需要比 8 位架构要少一些的代码,而 16 位 mcu 一般会更快速地执行任务。例如,8 位 mcu 需要 CPU 开销来管理具有 10 位 A/D 转换数据或需要 16 位计算的应用中的数据。而且当今许多mcu 产品都具有单个工作文件或累加器,其数据必须进行传输,以便处理,因此,与基于寄存器的架构相比需要额外的 CPU 开销。表 1 说明在 16 位现代架构与8 位 8051 架构上传输 10 位 A/D 数据的指令。在采用 1Mhz 时钟情况下,16 位器件需要 6us 进行传输,而 8 位器件则需要 24us。

16 位 mcu8 位 mcumov.w &ADC10MEM,&RAMmovf ADRESH,W movwf RAML bsf 0x20 movlf ADCHRESL,W bcf 0x20 movwf RAMH ----表 1:16 位与 8 位 mcu 代码要求

----选择低功率 mcu 是一项耗时、棘手的工作。如果花费一些时间来了解可用产品选项的架构特性,我们就能够开发出能满足最苛刻功率预算的设计。

二:超低功耗mcu-如何降低mcu的功耗

低功耗是mcu的一项非常重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话,就会经常出现电量不足的情况,影响用户体验。

平时我们在做产品的时候,基本的功能实现很简单,但只要涉及低功耗的问题就比较棘手了,比如某些可以低到微安级的mcu,而自己设计的低功耗怎么测都是毫安级的,电流竟然能够高出标准几百到上千倍,遇到这种情况千万不要怕,只要认真你就赢了。下边咱们仔细分析一下这其中的原因。

第一条:掐断外设命脉——关闭外设时钟
先说最直观的,也是工程师都比较注意的方面,就是关闭mcu的外设时钟,对于现在市面上出现的大多数的mcu,其外设模块都对应着一个时钟开关。只需要打开这个外设的时钟,就可以正常的使用这个外设了,当然,此外设也就会产生相应的功耗;反之,如果想要让这个外设不产生功耗,只需关闭它的时钟即可。

第二条:让工作节奏慢下来——时钟不要倍频
除了外设模块功率消耗之外,还有一个功耗大户需要注意一下,这就是PLL和FLL模块。PLL和FLL主要是用来对原始的时钟信号进行倍频操作,从而提高系统的整体时钟,相应的,其功耗也会被提上去。所以在进入低功耗之前,需要切换是种模式,旁路掉PLL和FLL模块,从而尽可能的降低mcu的功耗,等到mcu唤醒之后再把时钟切换回去。

第三条:围堵涓涓细流——注意I/O口的电平状态
如果认为只要关闭外设时钟就能够保证外设不再耗电,那么你就太天真了。如果IO口没有做好处理的话,它就会在暗地里偷走功耗,而你却浑然不知。具体原因是这样的,一般的IO的内部或者外部都会有上下拉电阻,举个例子,如下图所示,假如某个IO口有个10KΩ的上拉电阻,把引脚拉到3.3V,然而当mcu进入低功耗模式的时候,此IO口被设置成输出低电平,根据欧姆定律,此引脚就会消耗3.3V/10K=0.33mA的电流,假如有四、五个这样的IO口,那么几个mA就贴进去了,太可惜了。所以在进入低功耗之前,请逐个检查IO口的状态:
如果此IO口带上拉,请设置为高电平输出或者高阻态输入;
如果此IO口带下拉,请设置为低电平输出或者高阻态输入;
总之一句话,不要把上好的电流浪费在产生热量的功能上,咱可不靠这点温度去暖手。

第四条:睦邻友好合作——注意I/O与外设IC的统筹
IO口的上下拉电阻消耗电流这一因素相对比较明显,下边咱来说一个不明显的因素:IO口与外部IC相连时的电流消耗。假如某个IO口自带上拉,而此与IO相连的IC引脚偏偏是自带下拉的,那么无论这个引脚处于什么样的电平输出,都不可避免的产生一定的电流消耗。所以凡是遇见这一类的情况,首先需要阅读外设IC的手册,确定好此引脚的的状态,做到心中有数;然后在控制mcu睡眠之前,设置好mcu的IO口的上下拉模式及输入输出状态,要保证一丝儿电流都不要被它消耗掉。

第五条:断开调试器连接,不要被假象所迷惑
还有一类比较奇特,检测出来的电流消耗很大,可实际结果是自己杞人忧天,什么原因呢?是因为在测试功耗的时候mcu还连接着调试器呢!这时候大部分电流就会被调试器给掳走,平白无故的让工程师产生极度郁闷的心情。所以在测低功耗的时候,一定不要连接调试器,更不能边调试边测电流。

总结
  
mcu的低功耗设计是一个细致活,要养成良好的习惯,做到每添加一个功能都要重新验证一下低功耗是否符合要求,这样就可以随时随地干掉消耗功率的因素。如果把所有功能都设计好了才去考虑低功耗的问题,一个不小心,就可能要更改程序的架构——即便如此也不一定能把功耗给彻底降下去。

来源:网络

围观 330

前言

某客户在使用我们的STM32L073芯片做项目的开发,据他们的工程师反映在测量低功耗模式下的唤醒时间,他们测试得到的数据与数据手册中列出的结果不符合,而且差别很大,并且测试了很多片都是这个问题。想咨询我们什么样的测试方法能够得到一个符合手册规范的数值。

一、测试

在这里正好选取了手边有的STM32L053C8-Discovery探索板。
软件里选取“…STM32Cube_FW_L0_V1.9.0\Projects\STM32L053C8-Discovery\Examples\PWR” 目录下的PWR_STANDBY 和PWR_STOP这项目工程,通过这两个低功耗模式做一个说明测量唤醒时间的方法。

1.1 PWR_STANDBY模式

查看相应的参考手册RM,了解standby模式下的特点,主要涉及到参考手册中的如下两个表格:

STM32L低功耗模式下唤醒时间的测量

STM32L低功耗模式下唤醒时间的测量

从这两个表格中,我们可以看到其进入低功耗模式的条件,退出模式的条件,退出后执行的情况。对应表格可以看出,退出STANDBY模式后执行的是RESET复位,唤醒的方法我们选择WKUP唤醒引脚的上升沿;进入低功耗的方法有WFI(wait for interrupt)和WFE(wait for event)。

进入低功耗确认

直接打开运行“…STM32Cube_FW_L0_V1.9.0\Projects\STM32L053C8-Discovery\Examples\PWR” 目录下的PWR_STANDBY项目工程,并且阅读工程目录下的Readme.txt,了解该项目代码是如何进入低功耗模式,以及进入低功耗的寄存器及时钟方面的配置,这里不再赘述,重点是唤醒时间的测量。

STM32L低功耗模式下唤醒时间的测量

将JP4跳线帽拔除,将万用表调至电流档位,串入万用表,全速运行项目代码,观测电流功耗,按下B1的按钮,看看电流的差别,判断程序运行是否正常即可(进入低功耗模式前后电流)。

唤醒波形的设置

此时程序已经能够正确的进入并能够退出低功耗模式,但由于Discovery探索板上是采用机械按钮B1的唤醒(通过查看该探索板的原理图,可以发现B1连接到的是MCU的PA0引脚,WKUP引脚),基于机械按钮在按下或释放按钮的时候,电平变高或变低的时候,或存在坡度(按键的抖动和按键电路中电容的影响),这样不利于观察唤醒时间的读取,所以可以的操作是:1/去除B1按键相关的电路,比如电容等,使得与其相连的PA0引脚上面没有电路,这时候可以从外部引入发波的波形进入PA0。2/软件代码里配置其它的唤醒引脚输出脉冲用于唤醒;唤醒引脚上波形的上升沿用于唤醒低功耗模式;

唤醒后的第一条语句的执行

从前面的分析可以知道,STANDBY模式唤醒后是执行的复位操作,即对应于IAR项目程序中的Reset Handler。在Reset Handler中添加引脚状态的切换(由低变高,或由高变低),引脚边沿的变化即可理解为唤醒后开始执行第一条语句的时间;这里添加Reset Handler中的函数最好是汇编代码,如果是C语言代码的话,由于编译工具的优化,可能C语言的一句代码,成为汇编语言的话会变成好几条,这就会影响唤醒时间的测量。

STM32L低功耗模式下唤醒时间的测量

如果仅仅为了了解测试方法简化使用,可以看到Reset_Hanlder执行的第一个函数是SystemInit,所以简化一点,可以在SystemInit函数的开始添加如下的代码用于判断唤醒后的第一条语句:
STM32L低功耗模式下唤醒时间的测量

唤醒时间的计算

唤醒时间的测量,可以读取时间段= [唤醒引脚上波形的上升沿用于唤醒低功耗模式,引脚边沿的变化即可理解为唤醒后开始执行第一条语句的时间],也就是两个跳动边沿的时间间隔。

实验结果:

黄色的波形代码的是唤醒引脚PA0上的上升沿,是用于将MCU从Standby模式下唤醒;
蓝色的波形代码的是,MCU从STANDBY模式唤醒后,执行的第一个语句翻转IO口,
可以看出,STANDBY模式唤醒的时间测试结果大致为:70us,快速唤醒,符合数据手册上的描述:

STM32L低功耗模式下唤醒时间的测量

1.2 PWR_STOP模式

同样的操作步骤和上述STANDBY模式类似,只是通过参考手册表格我们可以知道,唤醒STOP模式主要用到的是外部中断事件,WKUP引脚不能唤醒了,唤醒后不是执行RESET服务,而是继续执行进入STOP模式后的下一条指令。

所以基于上述的分析:通过打开示例程序“…STM32Cube_FW_L0_V1.9.0\Projects\STM32L053C8-Discovery\Examples\PWR” 目录下的PWR_STOP项目,主要进行修改如下四个方面:

1/ 系统时钟初始化
修改测试的条件和数据手册中的条件一致,修改SystemClock_Config()函数,这里选取的是系统时钟SYSCLK = 32MHz,HCLK = 16MHZ = HSI;

STM32L低功耗模式下唤醒时间的测量

2/ 测试端口的配置PB12
添加for testing部分的代码,配置PB12为EVENTOUT模式,事件输出模式,结合__SEV()指令,用于在PB12的引脚上输出一个脉冲,单周期指令;
STM32L低功耗模式下唤醒时间的测量

3/STOP模式的进入
STM32L低功耗模式下唤醒时间的测量

修改成如下的配置:

注意这里用到的PWR_STOPENTRY_WFE,而不是PWR_STOPENTRY_WFI,这样可以避免需要外部的中断事件唤醒处理等的时间,所以这里也可以发现在中断函数中,由于配置为外部中断,下面这个函数在原项目工程中不再起作用了。

STM32L低功耗模式下唤醒时间的测量

STM32L低功耗模式下唤醒时间的测量

也就是说PA0引脚被配置为GPIO_MODE_EVT_FALLING,外部事件模式,而不是外部中断模式。PA0的下降沿用于唤醒STOP模式。
4/唤醒后的第一条指令
修改HAL_PWR_EnterSTOPMode()函数,

STM32L低功耗模式下唤醒时间的测量

只添加for testing部分的这一条__SEV()指令;用于唤醒后第一条执行指令也就是在PB12引脚上输出一个脉冲。
直接运行程序,
发现实验的结果为:
黄色波形为PA0的唤醒波形
蓝色波形为__SEV指令作用于PB12引脚的脉冲。
STM32L低功耗模式下唤醒时间的测量

所以可以看出,STOP模式下唤醒的时间大约为5.2us,
数据手册中的数据为typ 4.9us,max 7 us,符合手册的说明要求。

STM32L低功耗模式下唤醒时间的测量

二、总结

通过上述的两个示例可以看出,通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。
由于外部事件模式不需要额外处理中断时间的特点,所以利用它,我们能够得到更精确的唤醒时间的测量,更适合用于唤醒后执行下一条命令的低功耗模式。

来源: 21ic

围观 579

页面

订阅 RSS - 低功耗