0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

低功耗MCU怎么选?

sanyue7758 来源:21ic论坛 2023-03-25 10:25 次阅读

芯片国产化日益高涨的情况下,一些新的芯片厂家脱颖而出,比如以串口通讯发展起来的沁恒微电子的WCH、兆易创新的GD、雅特力的AT、中科蓝讯的AB,以及国民技术等。

其中的国民技术则属于后起之秀,其主打的产品有基于M0内核的N32G03X通用系列、基于M4内核的N32G45X通用系列,以及面向低功耗的N32L4XX系列。

这样在选取低功耗MCU时,我们就多出了一种选择,也加大了设计的灵活性。

此外,国民技术所主打的3个系列产品是支持以MDK来进行开发的,这样对于那些出道早的程序者就天然地增添了一份亲近感。你可别小看了这份亲近感,常言道“不怕千招会,就怕一招熟”,用惯的东西好上手,它起到事半功倍的性能。

下面就有请我们的主角N32L43XRL-STB开发板上场,它的MCU为N32L436CBL7,其最高主频可达108 MHz,是采用LQFP48管脚封装。

该芯片的主要性能及参数

● 采用32位ARMCortex-M4内核+FPU,支持单周期硬件乘除法指令,支持DSP指令和MPU。

● 高达128KByte片内Flash,10万次擦写次数,10年数据保持。

● 高达32KByte片内SRAM,包括24Kbyte SRAM1和8Kbyte SRAM2。

● 高性能模拟接口,含1个12bit 5MspsADC,且多种精度可配置、2个轨到轨运算放大器、2个高速模拟比较器、多达24通道电容触摸按键、1个采样率为1Msps的12bit DAC

● 丰富的通信接口,有3个USART接口、2个UART接口、1个LPUART、2个速率高达27 MHz的SPI接口、2个速率高达1 MHz的I2C接口、1个USB2.0 Fullspeed Device接口及1个CAN 2.0A/B总线接口。

● 多样的定时计数器,有2个16bit高级定时计数器、5个16bit通用定时计数器、2个16bit基础定时计数器、1个16bit低功耗定时计数器、1x24bit SysTick、1x7bit窗口看门狗、1x12bit独立看门狗。

所以,它在性能方面是完全可以胜任常规芯片要求的! 该芯片的功耗情况:

● 在Standby模式下:典型值为1.5uA,即所有备份寄存器保持,IO保持,可选 RTC Run,8KByte Retention SRAM保持,可快速唤醒。

● 在Stop2模式下:典型值为3uA,RTC Run,8KByte Retention SRAM2保持,CPU寄存器保持,IO保持,可快速唤醒。

● 在Run模式下:90uA/MHz@108MHz/3.3V,100uA/MHz@72MHz/3.3V。

接下来,就将N32L43XRL-STB开发板与N32G45XVL-STB开发板放到一起,做一下功耗的对比。当然,这是在都配有调试下载工具的情况下,会比单纯的芯片对比要大一些,但相对来讲还是比较公平的。 经检测,N32L43XRL-STB开发板的功耗为0.13135W,N32G45XVL-STB开发板的功耗为0.15392W,二者净差值为0.02257W。

0d093790-cab3-11ed-bfe3-dac502259ad0.jpg

图1 开发板的对比

0d1bb4ce-cab3-11ed-bfe3-dac502259ad0.jpg

图2 N32L43XRL-STB的功耗

0d2b2f08-cab3-11ed-bfe3-dac502259ad0.jpg

图3 N32G45XVL-STB的功耗

如何构建开发环境:

前面说过国民技术的MCU是支持MDK来开发的,那么对于N32L4x系列的开发板,是如何来构建其开发环境的呢?

首先要做的自然是要安装MDK,其版本可以是V5.25。

随后,为支持此类芯片的使用,还需要安装Nationstech.N32L43x_DFP.0.1.0。

这样再打开MDK,就可在芯片列表中见到N32L4x系列的身影,见图4所示。

0d337514-cab3-11ed-bfe3-dac502259ad0.jpg

图4 添加芯片支持

至此,开发环境就基本构建好了。

此外,为了便于了解和学习程序的设计方法,还应下载一个函数库与例程,其压缩包为Nationstech.N32L43x_Library.1.1.0.7Z。

以例程LedBlink为例,经编译其结果如图5所示。

0d541d82-cab3-11ed-bfe3-dac502259ad0.jpg

图5 完成编译

为进行下载测试,需按图6所示来设置调试工具的类型,并按图7所示来选取烧录算法

0d667d92-cab3-11ed-bfe3-dac502259ad0.jpg

图6 设置调试工具

0d721710-cab3-11ed-bfe3-dac502259ad0.jpg

图7 设置烧录算法

在开发板上载有3个彩色LED,其电路原理图见图8所示,使用例程就可见到图9所示的流水灯效果。

仿照该例程,可获得GPIO口的使用方法,并实现开发板的功能扩展。

0d7fe548-cab3-11ed-bfe3-dac502259ad0.jpg

图8 原理图

0d8fc30a-cab3-11ed-bfe3-dac502259ad0.jpg

图9 测试效果

驱动相应器件的功耗对比

1)OLED屏显示及功耗

OLED屏是一种自发光的显示器件,但又较之数码管要更节省电能。此外,对I2C接口的OLED屏来讲,它的引脚少又能节省对GPIO口资源的占用,且所显示的信息及形式更丰富,故极适合与N32L43X系列这样的芯片相配合来设计低功耗产品。

那么,在N32L43X系列芯片的开发环境下,要实现I2C接口的OLED屏驱动是否容易呢?

其实,要实现起来并不复杂,所需要的只是2个GPIO口及相应等级的延时函数支持,从而保证以GPIO口模拟的方式来完成I2C通讯。

在OLED屏与开发板按一下关系来连接的情况下:

SCL----PA1

SDA----PA2

对引脚功能的配置函数为:

void OLEDInit(void) { GPIO_InitType GPIO_InitStructure; RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA, ENABLE); GPIO_InitStruct(&GPIO_InitStructure); GPIO_InitStructure.Pin = GPIO_PIN_1|GPIO_PIN_2; GPIO_InitStructure.GPIO_Current = GPIO_DC_4mA; GPIO_InitStructure.GPIO_Pull = GPIO_No_Pull; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure); }

而输出高低电平的引脚定义为:

#define OLED_SCLK_Clr() GPIOC-》PBA = GPIO_PIN_1 #define OLED_SCLK_Set() GPIOA-》PBSC = GPIO_PIN_1 #define OLED_SDIN_Clr() GPIOA-》PBC = GPIO_PIN_2 #define OLED_SDIN_Set() GPIOA-》PBSC = GPIO_PIN_2

延时函数的配备:

由于在MDK的开发板平台下,并未提供毫秒级和微秒级延时的函数,因此需要使用系统的滴答时钟来自行设计。

微秒级延时函数:

void Delayus(uint32_t count) { SysTick_Delay_Us(count); }

毫秒级延时函数:

void Delayms(uint32_t count) { count=count*1000; SysTick_Delay_Us(count); }

使用微秒级延时函数的I2C启动函数为:

void IIC_Start() { OLED_SCLK_Set(); Delayus(2); OLED_SDIN_Set(); Delayus(2); OLED_SDIN_Clr(); Delayus(2); OLED_SCLK_Clr(); Delayus(2); } 有了以上的基础,就不难将OLED屏的驱动功能移植给N32L43X系列芯片。 实现OLED屏显示功能测试的主程序为:int main(void) { LedInit(PORT_GROUP2, LED3_PIN); OLEDInit(); OLED_Init(); OLED_Clear(); OLED_ShowString(20,0,“N32L43x ”,16); OLED_ShowString(20,2,“OLED TEST”,16); OLED_ShowString(20,4,“jinglixixi”,16); OLED_ShowString(20,6,“2022.3.2”,16); while (1) { LedOn(PORT_GROUP2, LED3_PIN); Delayms(500); LedOff(PORT_GROUP2, LED3_PIN); Delayms(500); } } 在OLED屏显示的情况下,其整体功耗如图10所示。

0d94ffbe-cab3-11ed-bfe3-dac502259ad0.jpg

图10 功耗测试

2)传感器检测及功耗 以BMP085温度大气压传感器为例,其器件的连接关系为:

OLED_CLK_PIN---PA1

OLED_DIN_PIN---PA2

BMP_CLK_PIN---PB0

BMP_DIN_PIN---PB1

读取传感器数据的语句定义为:

#define IIC_SDA_IN GPIO_ReadInputDataBit(GPIOB, GPIO_PIN_1)

实现数据引脚输入输出功能定义的函数为:

void IIC_INPUT_MODE_SET() { GPIO_InitType GPIO_InitStructure; RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB, ENABLE); GPIO_InitStruct(&GPIO_InitStructure); GPIO_InitStructure.Pin = GPIO_PIN_1; GPIO_InitStructure.GPIO_Current = GPIO_DC_4mA; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Input; GPIO_InitStructure.GPIO_Pull = GPIO_Pull_Up; //GPIO_No_Pull GPIO_Pull_Down GPIO_InitPeripheral(GPIOB, &GPIO_InitStructure); } void IIC_OUTPUT_MODE_SET() { GPIO_InitType GPIO_InitStructure; RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB, ENABLE); GPIO_InitStruct(&GPIO_InitStructure); GPIO_InitStructure.Pin = GPIO_PIN_1; GPIO_InitStructure.GPIO_Current = GPIO_DC_4mA; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pull = GPIO_No_Pull; GPIO_InitPeripheral(GPIOB, &GPIO_InitStructure); }

模拟I2C发送字节数据的函数为:

void BMP085_Send_Byte(char txd) { char t; IIC_OUTPUT_MODE_SET(); SCL_Clr(); for(t=0;t《8;t++) { if((txd&0x80)》》7) SDA_Set(); else SDA_Clr(); txd《《=1; SysTick_Delay_Us(2); SCL_Set(); SysTick_Delay_Us(2); SCL_Clr(); SysTick_Delay_Us(2); } }

读取温度大气压的函数为:

void bmp085Convert() { unsigned int ut; unsigned long up; long x1, x2, b5, b6, x3, b3, p; unsigned long b4, b7; ut = bmp085ReadTemp(); up = bmp085ReadPressure(); x1 = (((long)ut - (long)ac6)*(long)ac5) 》》 15; x2 = ((long) mc 《《 11) / (x1 + md); b5 = x1 + x2; temperature = ((b5 + 8) 》》 4); b6 = b5 - 4000; x1 = (b2 * (b6 * b6)》》12)》》11; x2 = (ac2 * b6)》》11; x3 = x1 + x2; b3 = (((((long)ac1)*4 + x3)《《OSS) + 2)》》2; x1 = (ac3 * b6)》》13; x2 = (b1 * ((b6 * b6)》》12))》》16; x3 = ((x1 + x2) + 2)》》2; b4 = (ac4 * (unsigned long)(x3 + 32768))》》15; b7 = ((unsigned long)(up - b3) * (50000》》OSS)); if (b7 《 0x80000000) p = (b7《《1)/b4; else p = (b7/b4)《《1; x1 = (p》》8) * (p》》8); x1 = (x1 * 3038)》》16; x2 = (-7357 * p)》》16; pressure = p+((x1 + x2 + 3791)》》4); }

检测温度大气压的主程序为:

int main(void) { LedInit(PORT_GROUP2, LED3_PIN); BMP085_Init(); Init_BMP085(); OLEDInit(); OLED_Init(); OLED_Clear(); OLED_ShowString(20,0,“N32L43x ”,16); OLED_ShowString(20,2,“OLED & BMP085”,16); OLED_ShowString(20,4,“t= C”,16); OLED_ShowString(20,6,“p= KPa”,16); while (1) { bmp085Convert(); OLED_ShowNum(44,4,temperature/10,3,16); OLED_ShowNum(44,6,pressure/100,5,16); LedOn(PORT_GROUP2, LED3_PIN); Delayms(500); LedOff(PORT_GROUP2, LED3_PIN); Delayms(500); } } 在添加传感器的情况下,其显示效果及整体功耗分别如图11和图12所示。

0da7d166-cab3-11ed-bfe3-dac502259ad0.jpg

图11 显示效果

0dba5ea8-cab3-11ed-bfe3-dac502259ad0.jpg

图12 整体功耗

至此,就在N32L43XRL-STB开发板上完成了温度大气压检测装置的设计,并针对其低功耗的特点对相应环境的功耗进行了跟踪测量。尽管测试的工具不很专业,但它还是能够带来一个很直观的感性认识。所以在低功耗的设计中,使用N32L43X芯片是可行的也是十分方便的,其功耗也是能够达到认可的!

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16017

    浏览量

    343630
  • 计数器
    +关注

    关注

    32

    文章

    2121

    浏览量

    92978
  • 开发板
    +关注

    关注

    25

    文章

    4429

    浏览量

    93995

原文标题:低功耗MCU怎么选?看网友亲测国民技术N32L4xx系列!

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于低功耗MCU的摄像式无线自动抄表器高鹏飞

    基于低功耗MCU的摄像式无线自动抄表器_高鹏飞
    发表于 03-16 08:00 0次下载

    Apollo2_超低功耗MCU

    低功耗MCU
    发表于 08-18 11:11 107次下载

    TI MCU设计研讨会:低功耗MCU的性能介绍

    TI 2014 MCU设计研讨会:低功耗MCU
    的头像 发表于 08-22 01:40 2140次阅读

    低功耗MCU单片机如何选型

     小编给带来分享低功耗MCU单片机如何选型,需要关注以下几点。
    发表于 07-05 11:11 3527次阅读

    低功耗MCU设计理念

     转自:http://www.eeworld.com.cn/mcu/article_2018031938316_2.htmlMCU功耗来自何处    在开始讨论低功耗MCU设计前,必须
    发表于 10-27 15:36 19次下载
    <b class='flag-5'>低功耗</b><b class='flag-5'>MCU</b>设计理念

    低功耗MCU的选择方法

    在物联网的推动下,业界对各种电池供电设备产生了巨大需求。这反过来又使业界对微控制器和其他系统级器件的能源效率要求不断提高。因此超低功耗MCU功耗相关的很多指标都不断得刷新记录。在选择合适的超
    发表于 11-01 16:24 14次下载
    超<b class='flag-5'>低功耗</b><b class='flag-5'>MCU</b>的选择方法

    低功耗MCU选型

    摘要有时为了一款低功耗产品而绞尽脑汁,产品的低功耗实现往往在于主控MCU的选择。低功耗MCU选型要点 powerDown时有极低的电流
    发表于 11-01 16:25 17次下载
    <b class='flag-5'>低功耗</b><b class='flag-5'>MCU</b>选型

    低功耗MCU的选择方法

    在物联网的推动下,业界对各种电池供电设备产生了巨大需求。这反过来又使业界对微控制器和其他系统级器件的能源效率要求不断提高。因此超低功耗MCU功耗相关的很多指标都不断得刷新记录。在选择合适的超
    发表于 11-05 20:21 2次下载
    超<b class='flag-5'>低功耗</b><b class='flag-5'>MCU</b>的选择方法

    如何选择一款适合的低功耗MCU芯片

    在智能表计、个人可穿戴设备、家庭医疗、智慧家居、远程测控、无线传感等许多依靠电池供电的物联网设备中,设备续航是一个棘手问题,对设备内的核心器件-微控制器(MCU)提出了很大的挑战,低功耗MCU
    的头像 发表于 01-26 09:46 2695次阅读

    低功耗MCU的选择方法

    在物联网的推动下,业界对各种电池供电设备产生了巨大需求。这反过来又使业界对微控制器和其他系统级器件的能源效率要求不断提高。因此超低功耗MCU功耗相关的很多指标都不断得刷新记录。在选择合适的超
    的头像 发表于 07-21 09:16 2388次阅读

    低功耗MCU让智能楼宇更聪明

    低功耗MCU让智能楼宇更聪明
    发表于 11-02 08:16 0次下载
    超<b class='flag-5'>低功耗</b><b class='flag-5'>MCU</b>让智能楼宇更聪明

    水、气、电、热|N32L4系列低功耗MCU应用案例分享

    国民技术拥有业界领先的低功耗MCU技术、无磁计量技术、低功耗无线射频技术,以及金融级信息安全技术等表计核心技术和全栈芯片产品,面向表计行业客户提供低功耗
    发表于 03-01 17:07 446次阅读
    水、气、电、热|N32L4系列<b class='flag-5'>低功耗</b><b class='flag-5'>MCU</b>应用案例分享

    低功耗MCU的选型技巧与设计思路

    循序渐进式的功耗优化已经不再是超低功耗mcu的游戏规则,而是“突飞猛进”模式,与功耗相关的很多指标都不断刷新记录。我们在选择合适的超低功耗
    的头像 发表于 08-04 14:46 1338次阅读

    N32L4系列低功耗MCU应用案例分享

    水、气、电、热 | N32L4系列低功耗MCU应用案例分享
    的头像 发表于 10-24 15:43 287次阅读
    N32L4系列<b class='flag-5'>低功耗</b><b class='flag-5'>MCU</b>应用案例分享

    基于RJM8L151S低功耗MCU的传感器模块方案

    基于瑞纳捷RJM8L151S低功耗MCU的传感器模块方案
    的头像 发表于 10-27 09:40 295次阅读
    基于RJM8L151S<b class='flag-5'>低功耗</b><b class='flag-5'>MCU</b>的传感器模块方案