低功耗之王——STM8L-DISCO评测
扫描二维码
随时随地手机看文章
相比于32位的STM32来说,8位的STM8让人感觉似乎有些弱。但是在嵌入式领域遵循着够用就好的原则,所以对于8位的STM8来说在某些领域还是大有用武之地的。实际上,在性能、可靠性、外设、低功耗方面新的STM8都表现出色,它主要为工业应用和家电应用提供了一个较高性价比的解决方案。而ST公司也决定要大力推广STM8系列芯片,配套了一系列STM8的开发板和开发工具,今天我们看到的STM8L-Discovery就是其中比较有特色的一款。
一、 开箱
无图无真相,先上PP吧。包装非常简洁,和一般的小电子产品差不多,不用拆包装就能看到板卡的基本情况。
背面照,主要介绍了跳线的连接以及各种工作模式等,当然最重要的是给出了开发板所需的资料网址,需要在ST的官网上进行下载(www.st.com/stm8l-discovery)
脱掉并不华丽的外衣,剩下这个看起来朴实无华的家伙,中间的DIP封装的LCD挺吸引眼球的,我不会告诉你,这是我第一次见到DIP封装的LCD。。。。。
下面是对这块STM8L-Discovery板子的资源总结:
STM8L152C6T6处理器,32KB Flash,2KB RAM,1KB EEPROM
ST-Link可以调试外部芯片通过SWIM引脚
2个红灯,LED1作为USB连接指示灯,LED2作为电源指示灯
电源设计为通过USB供电或者外部5V或3.3V
支持5V和3.3V
2个用户LED,LED3和LED4(绿和蓝)
2个按钮(用户和重置)
IDD 引脚可以检测当前电流
28引脚DIP封装的LCD(24段,4端口)
48个I/O引脚都引出来,便于扩展
然后,我还特意地将LCD单独拆开,给大伙瞧瞧:
[!--empirenews.page--]
咳咳,“果体”背面照,MCU的每个引脚都在背面单独引出,挺方便的
大小么,就这么大。。。。。。(认真脸)
好吧,给个具体的尺寸: 111mm x 45mm
整个STM8L-Discovery板子由两部分构成,液晶屏的上边带USB口的部分,也就是红框圈出来的部分是STLINK仿真器,这部分的核心是一块STM32芯片,其内部包含了ST公司未公开的STLINK固件(据说网上有些大侠已经破解了,有兴趣的童鞋可以到网上去看看。)为了便于用户评估,ST公司已经把这个仿真器通过跳线直接与STM8芯片连接起来了,并且通过SWIM我们可以用板载的仿真器来调试其他STM8板子哦。是不是很超值?注意measurement 这个跳线处,可以选择是否检测电流,待会我们将会通过将跳线帽接到ON的位置来测试板子的电流大小。
可以看到MCU型号是:STM8L152C6T6,那么STM8L中的L表示什么呢?STM8 系列芯片包含以下三大系列:
l STM8L系列:超低功耗系列,主要应用于低功耗场合
l STM8A系列:车用8位微控制器
l STM8S系列:通用8位微控制器
所以我们这块STM8L-Discovery开发板上搭载的就是一块超低功耗的STM8L系列MCU。
二、上电测试:
通过查看STM8L-Discovery板子包装盒后面的说明,原来开发板在出厂的时候内部就写入了一个测试当前电流、电压,并把结果显示在屏幕上的小程序。同时,通过这个程序也展示了STM8 在低功耗方面的出色。每按下板子上的“用户按键”一次,STM8就切换工作模式一次,并且测试在不同工作模式下的消耗电流。可以看到STM8的低功耗还是做得不错的,这也是它主推的市场嘛。
上电工作电压
RUN模式IDD电流
低电压模下,打开LCD时IDD电流[!--empirenews.page--]
低电压模式下,关闭LCD时的电流
Halt模式下IDD电流
可以看到不同模式下功耗相差还是挺大的,在低功耗场合,合理运用不同模式的切换,能够将功耗做的相当低。
三、功耗测试
低功耗一直是各大MCU厂商争夺的焦点。最近,网上非常流行一个视频(http://v.youku.com/v_show/id_XMTI0NDg2MjA4.html)视频中ST的工程师分别用两个土豆,RFID线圈,一杯热水对STM8L MCU进行供电并使得系统正常运行。这不禁让我对STM8的运行功耗产生了兴趣,到底多低的电量STM8L就能工作呢?MCU内部哪个模块功耗最高?如何才能尽可能的降低STM8L的功耗?
厂商DS中提供的数据:
1. 工作电压1.8V到3.6V
2. 5个低功耗模式:
wait模式
Low power run模式 (约消耗5.1uA)
Low power wait模式(约消耗3uA)
Active-halt with full RTC模式(约消耗1.3uA)
Halt模式(约消耗350nA)
当然,这只是厂商提供的理想功耗,在实际使用过程中,不同的应用场合不同的外设甚至于不同的PCB 设计和不同的软件编写都会对系统的功耗产生重大的影响。在下面的评测中,我们就以最基本的STM8 discovery开发板为平台进行STM8 RUN模式下功耗实测。当然由于测试仪器的精度以及测试方法的影响,在测试之前,我们有必要讨论一下STM8 discovery中集成有IDD电流测试电路,通过这个板载测试电路,STM8L-Discovery开发板能够测试其自身在正常工作模式与低功耗模式的消耗电流。测试的方法和电路也比较简单,如下图所示:
短接JP1的2,3脚后,系统进入IDD测试环境,此时如果在正常工作模式下(RUN模式),电流通过采样电阻转化为电压信号,再通过检流放大器MAX9938对微小的信号进行放大,最终通过STM8自带的AD转换模块采样并最终计算得到此时的电流值。另一种情况是如果系统工作在低功耗模式下,则AD不能够开启,所以此时采用的是另外一种变通的方法:在低功耗时对电容C11进行充电,当稳定后C11的电压值即为此时采样电阻电压经过MAX9938放大后的电压。通过外部的计数器4060唤醒STM8并开启AD模块快速完成对C11电压的采样并最终计算得到此时的电流值。当然,如果我们怀疑IDD测试的准确性则可以通过JP1的2,3脚串接一个外部电流表进行测试。
测试电路很简单,一个外置稳压电源,一个万用表串联用来测当前电流,一个万用表并联用来测试当前电压。如果系统能够正常工作,则屏幕上显示当前电流,否则屏幕上无任何显示。同时,通过这个测试也可以对DISCOVERY开发板上的IDD测量电路进行校准,便于下一步测试。图1为测得的系统不工作时的电压,图2为系统工作时的电压。由于稳压电源的精度不够,所以我们外接万用表测试当前电压。
在电源电压为1.8056V时系统不工作,STM8板上液晶不亮
在电源电压为1.8135V时系统工作,片内程序执行,IDD测试当前电流为1.12mA ,按照STM8L用户手册(CD00278045文档)的介绍,我们把电流表串入JP1的2,3号引脚。此时电流表中显示为1.08mA。基本与IDD测量一致。通过此次测量,可以认为STM8的工作电压介于1.80V到1.81V之间,基本满足数据手册上所述的1.8V供电电压。
四、开发环境搭建
在这里我用到的IAR开发环境,所以我们就以IAR为例来说明如何开发STM8的程序。
首先,我们从IAR的网站上把开发环境下载下来,(注意:由于IAR所支持的MCU众多,所以大家下载的时候可要看仔细了)我下载的是30天的时间限制版本,整个安装过程就不多说了,一路“NEXT”就能搞定,不过在需要输入序列号的地方把IAR给的临时序列号输入即可。
打开IAR,新建工程(Project->Creat New Project...),将会出现如下窗口:
这个窗口是告诉我们如何需要用什么语言来开发我们的程序,一般来说都是选择C,当然你也可以选择汇编和C++,选择好保存后,从固件库demo中将如下文件夹及其里面的文件复制到工程文件目录的相关文件夹,并添加到工程中。
新建完工程以后就要对项目进行设置了,这里的设置主要是选择目标芯片,对应库文件的位置以及仿真器型号的选择,打开Project->Options出现如下界
点击C/C++ Complier->Preprocessor,设置如下图所示。
点击Debugger->Setup,将Driver选择为ST-LINK
使用库函数的代码:
while (1)
{
GPIO_SetBits(LED1_PORT, LED1_PIN);
GPIO_ResetBits(LED1_PORT, LED1_PIN);
}
使用直接操作寄存器的代码:
while(1)
{
LED1_PORT->ODR = ~(LED1_PORT->ODR);
}[!--empirenews.page--]
测试结果如下图所示:
上边是采用直接操作寄存器方式得出的数据,下边是采用库的方式得出的数据。注意看两张图片的右上角。直接操作寄存器得到的波形频率大概为200K,而采用库的方式得到的波形频率大概是70K.所以我个人认为如果大家项目对时间、效率要求比较严格的话还是尽量使用直接操作寄存器的方式吧。
参考资料:
1、开发板官网
本文系21ic原创,未经许可禁止转载