10384|27

1469

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

基于LaunchPad的【低功耗时钟】我的DIY~~~~【【技术讨论帖】】 [复制链接]

 

东西的视频照片在这个帖子里:

https://bbs.eeworld.com.cn/viewthread.php?tid=309715&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D66

 

这次DIY其实已经计划了好长时间了,自从买了LaunchPad就一直想做点什么。

后来论坛里有朋友开始做低功耗时钟,我就想着也做一个,正好看到手边有一个废弃的电子表,就拿来拆掉改装咯

关于这次DIY最早的讨论在这个帖子里:

https://bbs.eeworld.com.cn/viewthread.php?tid=308482&extra=page%3D2%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D66

 

好了,废话就这么多,这个帖子只讨论技术问题~

 

====================很有技术含量的分割线=====================

 

这次DIY涉及到的内容:

    GPIO操作,时钟的操作,中断应用,看门狗作定时器,段式液晶的直接驱动,触摸按键的操

 

我认为比较有用的资料汇总:

    这个是一个很详细的数据手册,官网上貌似有2011版的,但是不知怎么下不下来,这个是08版的

                      MSP430x2xx_Family_Users_Guide.pdf (2.26 MB, 下载次数: 450)

 

    这个是关于IO口驱动段式液晶的,看起来比较复杂,但是从我实际的实验来看并不算很难

                       用普通IO口驱动LCD显示.pdf (188.14 KB, 下载次数: 695)

 

    这几个是关于触摸按键的,有原理性的也有具体TI的库的介绍,比较方便

                      CapTouch_BoosterPack_UserExperience.rar (103.94 KB, 下载次数: 296)

                       Capacitive Touch Library.pdf (572.54 KB, 下载次数: 323)

                      通过 MSP430 进行 PCB 电容触摸感应.pdf (1.57 MB, 下载次数: 652)

     

     这个是我的工程,虽然可能不能拿来就用,还是希望能对大家有所帮助,编程风格不是很好,大家理解一下哈

                      430clock.rar (66.48 KB, 下载次数: 599)

 

     

 

关于GPIO、时钟和中断的操作我看到论坛里已经有不少朋友总结过了,也都给出了相应的代码,我就不多说了,主要还是说一下关于段式液晶和触摸按键的心得体会吧

 

段式液晶的驱动:

 

       之前我想大家用的最多的显示器件大体可以分为两类:带控制器的液晶和LED数码管。数码管的原理我想很容易理解,就是在某一段的两段通上电压就会亮。段式液晶其实也是这样,只是它需要的不是直流电,而是交替变化的电压。举个例子,假如某一个公共端的时序是0-1-0-1,那么若想让该公共端控制的一个段显示,则在另一端上要加的时序就是1-0-1-0,不显示就是0-1-0-1。

       但是同时问题也来了,由于IO口只有两个状态,当一个公共端正在使用的时候,别就不能起作用,但是它的状态要么和正在使用的相同,要么就相反。相同肯定不行,但是如果相反的话,原来不想显示的段就会显示出来了。所以要想个办法给不使能的公共端找个位置,这就是“1/2 Bias”的目的了。让不使能的公共端的电压保持在0.5,这样别的段不管是0还是1,和它的压差只有0.5,虽然理论上还是会有显示,但是相对于压差为1的就不明显了,实际的结果也说明这种方法是有效的。当然还有1/3、1/4的驱动方法,但是用普通的IO口已经不可能做到了

        那么最关键的,如何用一个IO口产生1/2电压呢?其实说起来也简单,只要把IO口设为输入,然后在外部用两个电阻分压就行了。

        还有就是频率,段式液晶一般在30~60Hz,这个说的是全部扫描一遍的时间。

        就实际应用来说,我的液晶有两个公共端,11个段选,所以用了四个电阻,其他的都直接接到了单片机的IO上。

        在程序执行时,用看门狗做定时器,每8ms产生一个中断,这样四个中断完成一个显示周期,频率是31Hz,勉强可以。本来我是用TimerA做5ms中断的,这样频率是50Hz,比现在的效果要好。但是后来开始做触摸按键才发现竟然要用两个定时器,TimerA和看门狗,这不就没办法计时和显示了吗...后来在资料里找来找去才找到一个只用TimerA的,但是看门狗只能产生固定周期的中断,所以就只好用31Hz的了。 

        具体在程序里,每一个显示周期分成了四个节拍,两个公共端的时序分别是1-0-1/2-1/2和1/2-1/2-1-0;在第1、3节拍里各个段选根据要显示的内容输出0(显示)或1(不显示),在第2、4段选只要简单的把使能的位选和各个段选取反就可以了。

 

        关于驱动段式液晶的就先说这么多吧,我实在是不太擅长这些文字的工作..看起来有点混乱,但愿能说清楚....

 

 

触摸按键的使用:

 

        触摸按键估计是这次LaunchPad最吸引人的地方了吧,当初有多少人是冲着那块触摸板才买的啊....嘿嘿。那么这次既然是用LaunchPad做DIY,不做一下触摸按键恐怕有点说不过去吧,所以就照着触摸板的原理图加了三个触摸按键。

        硬件上很简单,就是三块覆铜直接连到了P2口的IO口上。看技术文档介绍在背面应该做一些敷铜接地,但是不做好像问题也不大。

        触摸按键的使用主要是在软件上做文章,这也是我这次DIY花费时间最多的地方....唉

        首先说一下原理吧,其实原理也不复杂。当激活了P2口某个引脚的第二功能后,该引脚立即就会产生1M左右的震荡,这个频率是和该引脚上的电容直接相关的。而触摸与该引脚相连的覆铜就足以产生使频率改变的电容变化。所以我们需要做的就是测量出频率的变化值。

        具体的应用上TI已经提供了详细的Capacitive Touch Library,里面有很多做触摸感应的方案,以及操作的API函数。

        我们需要做的就是现在structure.c和structure.h里定义好我们要使用的元件(element)和传感器(sensor),传感器指的是种类,比如button、weel等,同一个传感器可以包含多个元件,比如button1、button2等。

同时在定义传感器的时候也需要定义要使用的测量方案,针对不同的方案还有一些参数需要设置,比如用TimerA做计数,看门狗做门限的话需要设置看门狗的溢出周期,如果是用软件做门限计时的话就要设置软件技术的计数值。

在定义元件的时候也有针对各个元件的参数设定,主要是最大计数和门限计数。这两个参数是给API函数判断是否按下用的。

        具体的信息在Capacitive Touch Library都有很详细的介绍,只是要耐下心来一点一点看。内容上没有什么难度,关键的是耐心。

        还有如果碰到问题的话可以多参考一下TI提供的触摸板的例程,看一下他操作的方法和各个部分定义的顺序也会很有帮助。再一个就是头文件,单片机上所有的资源都会在头文件里提到,仔细找一找也会很有收获。

 

 

关于低功耗:

 

        毕竟是主打低功耗的单片机嘛,低功耗还是要看一看的。

        说实话最近还没来得及仔细研究低功耗方面的问题,只是直接测了一下工作的电流,一开始没加休眠,主函数里的while(1)是一直在空转着的,测的电流大概在500uA左右。

        然后我在里面加了一句__bis_SR_register(CPUOFF);  不执行中断的时候就把CPU关掉,再一测,电流直接掉到200uA左右了...看来确实还有很大水分可以压出来啊。

 

 

======================我是结束的分割线========================

 

好了,这次DIY差不多就总结到这里了,有什么疏忽了的地方欢迎跟帖提出来,大家一起讨论讨论

[ 本帖最后由 anqi90 于 2011-11-5 18:45 编辑 ]

最新回复

楼主辛苦了  详情 回复 发表于 2012-10-27 00:15

点评

楼主辛苦了  详情 回复 发表于 2012-10-27 00:15

赞赏

1

查看全部赞赏

 
点赞 关注(1)

回复
举报

11

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
沙发~~支持一个
 
 

回复

2056

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
 
 
 

回复

391

帖子

1

TA的资源

一粒金砂(高级)

4
 
学习
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(高级)

5
 
200uA,有待压缩呀;争取20uA以下;
 
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

6
 

回复 5楼 mcu5i51 的帖子

20uA...这个悬吧...
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

7
 
好像有报道说有用msp430做的实时时钟用电池可工作超过十年
 
 
 

回复

5015

帖子

13

TA的资源

裸片初长成(初级)

8
 
:carnation: 撒花,很费心的DIY,
anqi90给力啊!
 
 
 

回复

5015

帖子

13

TA的资源

裸片初长成(初级)

9
 
提个问题,讨论讨论!
触摸按键的启动和休眠是怎么处理的?
说不定这个地方还可以再降点功耗。
 
 
 

回复

158

帖子

0

TA的资源

纯净的硅(初级)

10
 
给力啊!顶一个~
 
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

11
 

回复 9楼 wstt 的帖子

嘿嘿,现在的按键检测是每秒钟检测大概10次

而且从原理来看不太好做成中断触发的,只能是主动去检测

现在可能的降低功耗的方法应该就是降主频了,目前的DCO是1MHz
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

12
 
原帖由 anqi90 于 2011-11-6 15:48 发表
嘿嘿,现在的按键检测是每秒钟检测大概10次

而且从原理来看不太好做成中断触发的,只能是主动去检测

现在可能的降低功耗的方法应该就是降主频了,目前的DCO是1MHz


没用那个附送的32KHz的晶体?
 
 
 

回复

1万

帖子

16

TA的资源

版主

13
 

写得不错哈,顶

:carnation:
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

14
 

回复 12楼 wangfuchong 的帖子

嘿嘿,引脚不够了,就没用
而且这个主要是学习一下使用方法,精度什么的就没有要求太高,毕竟就算精度高了也不会真当时钟用吧
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

15
 
学习了,不顶不行!
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

16
 
撒花
:carnation:
 
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

17
 

回复 16楼 David_Lee 的帖子

嘿嘿,多谢捧场~

点评

楼主英文好好啊 都是官方英文资料各种看  详情 回复 发表于 2012-6-18 19:38
 
 
 

回复

1181

帖子

0

TA的资源

五彩晶圆(初级)

18
 

很不错哦!可惜我的

 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

19
 
:carnation: :carnation: LZ很牛  顶个
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(初级)

20
 
学习了
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表