这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» STM32» 【12.29更新L053低功耗再测试】snake0301的低功耗进程

共29条 2/3 1 2 3 跳转至
专家
2015-12-07 11:15:06 打赏
11楼
这个高级

高工
2015-12-08 15:57:21 打赏
12楼

来水一楼


今天把段式液晶仔细整理了一下

因为管脚次序已经完全打乱

没有规律可循

没算法能够用统一的方法寻址显示段位

只能够傻x兮兮地做了一个100x4的显示数组

显示10个数字位的0-9,苦逼啊

const unsigned int num[100][4]= { {0x00000002,0x00000003,0x00000002,0x00000003},//1-0 {0x00000000,0x00000002,0x00000002,0x00000000},//1-1 {0x00000002,0x00000001,0x00000003,0x00000002},//1-2 {0x00000002,0x00000002,0x00000003,0x00000002},//1-3 {0x00000000,0x00000002,0x00000003,0x00000001},//1-4 {0x00000002,0x00000002,0x00000001,0x00000003},//1-5 {0x00000002,0x00000003,0x00000001,0x00000003},//1-6 {0x00000000,0x00000002,0x00000002,0x00000002},//1-7 {0x00000002,0x00000003,0x00000003,0x00000003},//1-8 {0x00000002,0x00000002,0x00000003,0x00000003},//1-9 {0x00000008,0x0000000c,0x00000008,0x0000000c},//2-0 {0x00000000,0x00000008,0x00000008,0x00000000},//2-1 {0x00000008,0x00000004,0x0000000c,0x00000008},//2-2 {0x00000008,0x00000008,0x0000000c,0x00000008},//2-3 {0x00000000,0x00000008,0x0000000c,0x00000004},//2-4 {0x00000008,0x00000008,0x00000004,0x0000000c},//2-5 {0x00000008,0x0000000c,0x00000004,0x0000000c},//2-6 {0x00000000,0x00000008,0x00000008,0x00000008},//2-7 {0x00000008,0x0000000c,0x0000000c,0x0000000c},//2-8 {0x00000008,0x00000008,0x0000000c,0x0000000c},//2-9 {0x00000030,0x00000030,0x00000020,0x00000030},//3-0 {0x00000010,0x00000020,0x00000020,0x00000000},//3-1 {0x00000030,0x00000010,0x00000030,0x00000020},//3-2 {0x00000030,0x00000020,0x00000030,0x00000020},//3-3 {0x00000010,0x00000020,0x00000030,0x00000010},//3-4 {0x00000030,0x00000020,0x00000010,0x00000030},//3-5 {0x00000030,0x00000030,0x00000010,0x00000030},//3-6 {0x00000010,0x00000020,0x00000020,0x00000020},//3-7 {0x00000030,0x00000030,0x00000030,0x00000030},//3-8 {0x00000030,0x00000020,0x00000030,0x00000030},//3-9 {0x00001800,0x00001000,0x00001800,0x00001000},//4-0 {0x00000000,0x00001000,0x00001000,0x00000000},//4-1 {0x00001000,0x00001800,0x00000800,0x00001000},//4-2 {0x00001000,0x00001800,0x00001000,0x00001000},//4-3 {0x00000800,0x00001800,0x00001000,0x00000000},//4-4 {0x00001800,0x00000800,0x00001000,0x00001000},//4-5 {0x00001800,0x00000800,0x00001800,0x00001000},//4-6 {0x00001000,0x00001000,0x00001000,0x00000000},//4-7 {0x00001800,0x00001800,0x00001800,0x00001000},//4-8 {0x00001800,0x00001800,0x00001000,0x00001000},//4-9 {0x00402000,0x00400000,0x00402000,0x00400000},//5-0 {0x00000000,0x00400000,0x00400000,0x00000000},//5-1 {0x00400000,0x00402000,0x00002000,0x00400000},//5-2 {0x00400000,0x00402000,0x00400000,0x00400000},//5-3 {0x00002000,0x00402000,0x00400000,0x00000000},//5-4 {0x00402000,0x00002000,0x00400000,0x00400000},//5-5 {0x00402000,0x00002000,0x00402000,0x00400000},//5-6 {0x00400000,0x00400000,0x00400000,0x00000000},//5-7 {0x00402000,0x00402000,0x00402000,0x00400000},//5-8 {0x00402000,0x00402000,0x00400000,0x00400000},//5-9 {0x00810000,0x00010000,0x00810000,0x00810000},//6-0 {0x00000000,0x00010000,0x00010000,0x00800000},//6-1 {0x00010000,0x00810000,0x00800000,0x00810000},//6-2 {0x00010000,0x00810000,0x00010000,0x00810000},//6-3 {0x00800000,0x00810000,0x00010000,0x00800000},//6-4 {0x00810000,0x00800000,0x00010000,0x00810000},//6-5 {0x00810000,0x00800000,0x00810000,0x00810000},//6-6 {0x00010000,0x00010000,0x00010000,0x00800000},//6-7 {0x00810000,0x00810000,0x00810000,0x00810000},//6-8 {0x00810000,0x00810000,0x00010000,0x00810000},//6-9 {0x01020000,0x01000000,0x01020000,0x01020000},//7-0 {0x00000000,0x01000000,0x01000000,0x00020000},//7-1 {0x01000000,0x01020000,0x00020000,0x01020000},//7-2 {0x01000000,0x01020000,0x01000000,0x01020000},//7-3 {0x00020000,0x01020000,0x01000000,0x00020000},//7-4 {0x01020000,0x00020000,0x01000000,0x01020000},//7-5 {0x01020000,0x00020000,0x01020000,0x01020000},//7-6 {0x01000000,0x01000000,0x01000000,0x00020000},//7-7 {0x01020000,0x01020000,0x01020000,0x01020000},//7-8 {0x01020000,0x01020000,0x01000000,0x01020000},//7-9 {0x04100000,0x00100000,0x04100000,0x00100000},//8-0 {0x00000000,0x00100000,0x00100000,0x00000000},//8-1 {0x00100000,0x04100000,0x04000000,0x00100000},//8-2 {0x00100000,0x04100000,0x00100000,0x00100000},//8-3 {0x04000000,0x04100000,0x00100000,0x00000000},//8-4 {0x04100000,0x04000000,0x00100000,0x00100000},//8-5 {0x04100000,0x04000000,0x04100000,0x00100000},//8-6 {0x00100000,0x00100000,0x00100000,0x00000000},//8-7 {0x04100000,0x04100000,0x04100000,0x00100000},//8-8 {0x04100000,0x04100000,0x00100000,0x00100000},//8-9 {0x00200100,0x00000100,0x00200100,0x00200100},//9-0 {0x00000000,0x00000100,0x00000100,0x00200000},//9-1 {0x00000100,0x00200100,0x00200000,0x00200100},//9-2 {0x00000100,0x00200100,0x00000100,0x00200100},//9-3 {0x00200000,0x00200100,0x00000100,0x00200000},//9-4 {0x00200100,0x00200000,0x00000100,0x00200100},//9-5 {0x00200100,0x00200000,0x00200100,0x00200100},//9-6 {0x00000100,0x00000100,0x00000100,0x00200000},//9-7 {0x00200100,0x00200100,0x00200100,0x00200100},//9-8 {0x00200100,0x00200100,0x00000100,0x00200100},//9-9 {0x000000c0,0x00000040,0x000000c0,0x000000c0},//10-0 {0x00000000,0x00000040,0x00000040,0x00000080},//10-1 {0x00000040,0x000000c0,0x00000080,0x000000c0},//10-2 {0x00000040,0x000000c0,0x00000040,0x000000c0},//10-3 {0x00000080,0x000000c0,0x00000040,0x00000080},//10-4 {0x000000c0,0x00000080,0x00000040,0x000000c0},//10-5 {0x000000c0,0x00000080,0x000000c0,0x000000c0},//10-6 {0x00000040,0x00000040,0x00000040,0x00000080},//10-7 {0x000000c0,0x000000c0,0x000000c0,0x000000c0},//10-8 {0x000000c0,0x000000c0,0x00000040,0x000000c0}//10-9 };


整理了一下段式液晶的更新函数

感觉被击中了

void Display_updata(double temperature,unsigned char day,unsigned char month,unsigned char hour ,unsigned char minute) { unsigned int temp,temp1,temp2,temp3,mask[4]; temp = (unsigned int)(temperature*10.0); temp1 = temp/100; temp2 = temp%100/10+10; temp3 = temp%100%10+20; mask[0] = num[temp1][0]|num[temp2][0]|num[temp3][0]; mask[1] = num[temp1][1]|num[temp2][1]|num[temp3][1]; mask[2] = num[temp1][2]|num[temp2][2]|num[temp3][2]; mask[3] = num[temp1][3]|num[temp2][3]|num[temp3][3]; temp1 = month/10; temp2 = month%10+30; if(temp1>0) { mask[0] = mask[0]|num[temp2][0]; mask[1] = mask[1]|num[temp2][1]; mask[2] = mask[2]|num[temp2][2]; mask[3] = mask[3]|num[temp2][3]|0x00000800; } else{ mask[0] = mask[0]|num[temp2][0]; mask[1] = mask[1]|num[temp2][1]; mask[2] = mask[2]|num[temp2][2]; mask[3] = mask[3]|num[temp2][3]; } temp1 = day/10+40; temp2 = day%10+50; mask[0] = mask[0]|num[temp1][0]|num[temp2][0]; mask[1] = mask[1]|num[temp1][1]|num[temp2][1]; mask[2] = mask[2]|num[temp1][2]|num[temp2][2]; mask[3] = mask[3]|num[temp1][3]|num[temp2][3]; temp1 = minute/10+60; temp2 = minute%10+70; mask[0] = mask[0]|num[temp1][0]|num[temp2][0]; mask[1] = mask[1]|num[temp1][1]|num[temp2][1]; mask[2] = mask[2]|num[temp1][2]|num[temp2][2]; mask[3] = mask[3]|num[temp1][3]|num[temp2][3]; temp1 = hour/10+80; temp2 = hour%10+90; mask[0] = mask[0]|num[temp1][0]|num[temp2][0]; mask[1] = mask[1]|num[temp1][1]|num[temp2][1]; mask[2] = mask[2]|num[temp1][2]|num[temp2][2]; mask[3] = mask[3]|num[temp1][3]|num[temp2][3]; HAL_LCD_Write(&LCDHandle, LCD_RAM_REGISTER0, 0, mask[0]); HAL_LCD_Write(&LCDHandle, LCD_RAM_REGISTER2, 0, mask[1]); HAL_LCD_Write(&LCDHandle, LCD_RAM_REGISTER4, 0, mask[2]); HAL_LCD_Write(&LCDHandle, LCD_RAM_REGISTER6, 0, mask[3]); HAL_LCD_UpdateDisplayRequest(&LCDHandle); }


还好最后能够正常使用

顺道用渣表做了一个简单的电流测试

先看代码

int main(void) { unsigned char i; SystemClock_Config(); LCD_GPIO_Config(); HAL_PWREx_EnableUltraLowPower(); HAL_LCD_DeInit(&LCDHandle); LCD_GLASS_Init(); for(i=0;i<10;i++){ Display_updata(i*1.2,i,i*2,i*3,i*4); delay_ms(15); } Display_updata(35.9,27,12,43,14); //HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON,PWR_SLEEPENTRY_WFI); HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI); // HAL_PWR_EnterSTANDBYMode(); /* Infinite loop */ while (1) { } } }


循环填充液晶屏后

做个静态显示,进入stop模式


GIF显示

在全速填充段式液晶的时候

电流达到了370μA以上

进入stop模式后,电流掉到40-50μA

传说中的低功耗出现了

不过是20mA档测的,估计误差不小


表有点磕碜

这回下血本撸了块四位半

还在快递路上

VC86E,支持国产

欢迎吐槽,欢迎拿fluke来比

等表拿到手

再来认真测试一把


to be continued......


专家
2015-12-09 09:45:45 打赏
13楼
似乎还比较贵,还不包邮,我先尝试用5110那个屏吧,比较大众,看看平时是不是能关上

助工
2015-12-29 14:59:44 打赏
14楼
卤煮可以啊

高工
2015-12-29 22:35:34 打赏
15楼

胜利四位半到手

当天就阵亡了

国产表啊,叫我如何是好

一怒之下,如了17B+


拿到新表,又仔细把L053的低功耗特性测试了一遍

特别针对休眠状态的电流

运行时的电流,直接在后面实际展示

使用的官方库例程

上结果

先是sleep模式

灰常失望

数据手册上给出的都是几十μA的测试数据

看看实测

1090μA,简直是坑爹啊

不过后来发现一个很有意思的问题

如果直接从stlink下载固件复位运行

会出现测试电流很大的情况

不知道是不是板子设计上的问题

所以导致sleep模式的测试偏差

最好能够手动复位一下

接下来的测试,都是下载后,掉电测得

室温大约在18度左右


看standby模式

手册上给出

使能LSI时,最大值是1.7μA,典型值1.3μA

失能LSI时,最大值0.6μA,典型值0.29μA

看看实测

使能LSI时

1.1μA,很稳定,比手册给出的典型值牛x

失能LSI

灰常给力,在0.1到0.2之间跳动

多数时间在0.1μA

已经是17B+的极限了


再来看看stop模式的两种情况

stop模式失能rtc和使能rtc两种情况并没有给出具体的数值

来个实测

失能RTC时

RTC不工作的时候,比典型值小

大概在0.3μA

使能RTC时

RTC用来唤醒stop模式

这个时候休眠电流在1.3μA


经过上面的测试

可以看出来

ST这次推的L053功耗做得相当可以

至少比F系列进步了许多


顺道测试了一下自己做的小东东

在读取传感器并填充段码液晶屏的时候

电流在400+μA

进入stop+RTC模式后

液晶屏继续显示

电流降低到85μA


下一步深入调试低功耗吧

to be continued......



助工
2015-12-30 10:53:13 打赏
16楼
支持支持,有板子我支持你

工程师
2016-01-03 14:03:51 打赏
17楼
牛。

高工
2016-01-03 19:49:12 打赏
18楼
写得够详细,支持一下

高工
2016-02-02 12:16:44 打赏
19楼
写的挺好,加油

专家
2016-03-27 21:09:17 打赏
20楼
很厉害,围观一下。

共29条 2/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]