找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3575|回复: 2
打印 上一主题 下一主题
收起左侧

说一下 SN 芯片的低功耗工作

[复制链接]
跳转到指定楼层
楼主
ID:27770 发表于 2013-10-1 03:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
说一下 SN 芯片的低功耗工作
当不使用专门时钟芯片,例如 DS1302,HT1380 等的场合下,实时时钟就只能依靠单片机本身的晶体振荡器或内部
RC 振荡器来产生了.
这时候,当进入外部供电停止时,实时时钟是需要保持运行的,通常会使用 3V6 或 3V 的电池来维持时钟正常走时.
这时候,电池的耗掉总是希望越小越好.
专门的时钟芯片,在进入这种掉电保护的时候,其消耗电流是非常非常的小,普通电流表几乎测量不出来.
而单片机呢? 就有很多问题需要解决了.
SN 单片机提供了几种工作模式,来实现"低功耗"运行,睡眠模式虽然电流极小,但是实时时钟不能运行.
剩下的可用选择就只有低速模式(SlowMode)和绿色模式(GreenMode)了.
我使用 2602C,2501B,27E65 等多种芯片作为测试,测试结果均不能达到芯片手册给出的低电流值.
通常,在 3V 供电下,所有端口均设置为输出模式并且输出为低电平,所有内部上拉功能均去除!
无论是外部 32768 晶体或者内部 ILRC_16KHZ 振荡器,都是此时可以选择使用的系统时钟.
下面,就几种可能选择的掉电保护模式,告诉大家一些测试实践体验:
(1):进入绿色模式:
当使用 IHRC_RTC 代码选项时,代码高速运行依靠内部 16M RC 振荡器,实时时钟依靠外接的 32768 晶体.这种结
构,表面看来是最理想的组合,但是,进入掉电保护后,实际应用起来就有许多麻烦!
这种结构进入绿色模式,高速时钟仍然运行,电池电流就不用指望很小了!-----实际测试 3V 时约 0.35mA!
曾经在 27E65 试过 IHRC_RTC : 16/4~16/64 的代码选项,进入绿色模式后,都不能明显降低保护电流.差不多都
是 0.35mA! 没有什么改变!
(2):进入 RTC 低速模式:
要让电流明显下降,需要关闭高速时钟,好了,如果此时关闭高速时钟,就会没有时钟运行了,程序死掉了!
那么,我就更换另外一种保护运行的模式吧! 试一下低速模式.
进入掉电保护后,就选择低速模式,由于外怪有 32768 晶体,RTC 仍然正常工作,时钟稳定走时,电池在 3V 时,电流
为 0.09mA . 比起绿色模式来,已经好了很多了!
(3):进入 ILRC 低速模式:
这种模式,外部无需任何晶体,就直接使用内部 RC 高速振荡器, IHRC 16MHZ 振荡器作为运行和实时时钟源.不要
使用 RTC 选项了.还可以多出 2 个端口来供其它地方使用,最省钱了!
IHRC 当然不够精确了,如果希望精确度好一些,可以外接 16MHZ 晶体,端口就没有多余的 2 个了!
当进入掉电保护后,关闭高速时钟,此时,能够使用的就只有 ILRC 16KHZ_3V 了.
要让这个 16KHZ 与原来的 16MHZ 产生同样的实时时钟源,其定时器的参数就要在进入低功耗时重新设置.
例如:
;-----------------------------------------------------------
; 正常 5V 工作时,运行 16M/4 的代码选项,定时器 T0 的参数配置:
        MOV         A,#030H ;16/4MHZ:计数250=0.5S
        B0MOV         T0M,A
        CLR         T0C  ; 清T0C。
        B0BCLR         FT0IRQ ; 清T0IRQ。
        B0BSET         FT0IEN ; 使能T0 中断。
        B0BSET         FT0ENB ; 使能T0 定时器。
每中断 250 次,就是 0.5S 时基.此时,T0 是从 16MHZ/4 得到驱动信号.
;-----------------------------------------------------------
当进入掉电保护后,首先启动低速模式,再关闭高速时钟(千万注意操作顺序,不能反了!)定时器 T0 的参数配置为:
        MOV         A,#050H ;16/4MHZ:计数250=0.5S
        B0MOV         T0M,A
        CLR         T0C  ; 清T0C。
        B0BCLR         FT0IRQ ; 清T0IRQ。
        B0BSET         FT0IEN ; 使能T0 中断。
        B0BSET         FT0ENB ; 使能T0 定时器。
每中断 1 次,就是 0.5S 时基.T0 是从 16KHZ/4 得到驱动信号.
;-----------------------------------------------------------
一个是16MHZ,一个是 16KHZ,它们刚好相差 1000 倍.
而赋值到 T0M 的 30H 与 50H ,相差 4 倍.
得到 0.5S 时基的中断次数分别为 250 和 1,相差 250 倍.
恰好, 4*250=1000 !
如果不顾及精度问题,这个 ILRC 低速模式就是可使用的.实测掉电保护电流也是 3V 时 0.09mA !
测试中还发现,掉电保护电压从 2.4V 缓慢变化到 4.2V ,这个 0.09mA 基本维持不变!
这些测试,对低成本时钟项目的应用是有帮助的,当然,做万年历就会不行了! 只能在那些要求精度稍差,掉电保护
时间不太长.(例如:保护 15 天,30 天,够不够? ) 2mAh 的小电池就可以保护 24 小时左右.工程项目使用就是足
够的了. 如果某个工地停电 30 天,还不如放长假!
按照芯片手册,无论何种低功耗模式,手册上给出的掉电保护电流会更低,不同芯片也有一些差别.同时,内部低速时
钟的精度也会不同.越是后来的型号,似乎指标就会越好一些.
这些实验得到的资料和数据,仅供各位参考! 并且欢迎大家讨论和指正!
;===============================================================================
在 SN 单片机里,专门有进入/返回各种工作模式的宏指令,可以方便直接使用. 如下:
; Sleep Mode control macro for compatibility in S8KD-2 ICE;指令周期数: 1
        SleepMode        macro
                B0BSET        FCPUM0
        endm
;*******************************************************************************
; Green Mode control macro for compatibility in S8KD-2 ICE;指令周期数: 3
        GreenMode        macro
                B0BSET        FCPUM1
                NOP
                NOP
        endm
;*******************************************************************************
; Slow Mode control macro for compatibility in S8KD-2 ICE;指令周期数: 2
        SlowMode        macro
                B0BSET        FCLKMD
                B0BSET        FSTPHX
        endm
;*******************************************************************************
;  Slow mode to Normal Mode control macro for compatibility in S8KD-2 ICE; ;指令周期数: 5
        Slow2Normal        macro
                B0BCLR        FSTPHX
                NOP
                NOP
                NOP
                B0BCLR        FCLKMD
        endm
;*******************************************************************************

评分

参与人数 1威望 +1 黑币 +1 收起 理由
小彭 + 1 + 1 很给力!前辈说得很详细...谢谢!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:65225 发表于 2014-8-19 15:50 | 只看该作者
最近正好要用到低功耗的...楼主说得不错!!!
我使用的是数据双向传送的2.4G无线模块..
遥控端的话..关机直接休眠..省电没问题..
主机端就麻烦了...要进入低速模式,绿色模式,间隔让2.4G上电工作..检测是否有数据..没有的话继续省电中...
工作时也一样要省电...这个无线模块一上电就16mA..让人受不了..由于是双向数据..为了保证实时性..工作时也一样要间隔开关无线模块 ........哎...好累
回复

使用道具 举报

板凳
ID:27770 发表于 2015-1-7 03:45 | 只看该作者
很久没有来过,论坛越来越好了!
建议:
1.使用单片机一个引脚管理 2.4G 模块的供电.并且在数个单片机里仅仅设置一个主机. 主机可以定时自动唤醒工作.
2.其余从机直接进入睡眠.但是需要使用外部唤醒,唤醒后再给 2.4G 供电.并且随后接收主机信息进行通信.
3.主机重新工作后,发送唤醒信号,得到从机回应后再建立通信工作.
4.多机通信实际也是分时进行的,任何时候只有一对模块在通信,否则会乱套.
请试一下行不行?

评分

参与人数 1黑币 +80 收起 理由
admin + 80 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表