打印

(TI MCU分享)使用MSP430单片机做产品写程序的体会

[复制链接]
4763|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wanggong2011|  楼主 | 2011-8-6 00:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用TI的MSP430芯片已经有几年了,最近做产品用到了一款MSP430G2231,很愿意和大家分享一下。
    先说一下这个MSP430G2231,面对巨大的中低端MCU市场的诱惑,TI终于不再沉默,推出了G2xx系列超值MCU,其实它和Fxx系列mcu完全兼容,只是放宽了一些非关键参数,从而降低成本,可以与PIC、freescale等厂家进行竞争。
    我的产品是一款家用小探测器,使用普通电池供电,要求能正常工作1年以上。所以在单片机选型的时候就自然而然想到了MSP430,它在低功耗方面的优势实在太明显!
    待规格确定后,原理图设计完,就该编写程序了。
    程序要实现的功能主要有两部分,其一是探测;其二是通信。使用汇编编写。
    写程序前当然要先设计流程图了,有了流程图就有了思路,调试改错以及将来维护都很方便。没有流程图的汇编程序是比较恐怖的,有一次我要改两年前的汇编程序,脑子都想成一堆浆糊了,就是想不起来当时为什么那么编写!悔呀!
    在编写程序过程中,遇到了一些有意思的事情:
1、JMP指令只能在-511到+512字范围内跳转,如果想跳得更远些,就需要多个JMP指令接力了,呵呵,听说过烽火台点狼烟接力,看过田径跑步接力,现在程序跳转也玩接力了!
2、通信时使用比较复杂的协议,需要判断输入引脚的电平,由于种种原因不能使用中断,所以选择了查询的方式,虽然设计时理论上查询可以足够快,但实际上会由于通信线的干扰而导致脉冲变窄,有漏掉脉冲的情况。后来不再查询引脚的电平,改为查询引脚中断标志,这样便解决了问题。
3、16位单片机和8位单片机在写汇编程序时体会非常明显。因为对于16位单片机,必须时时刻刻想着我用的这个变量是16位的还是8位的,尤其是赋值、运算的地方,都是滋养bug的好地方。找bug是一件很辛苦的事情,为了少愁白几根黑发,能用C还是尽量用C吧。
4、定义了个变量:    Temp DS16 1;
然后对它操作,如清零: clr.w Temp; 有人喜欢写 clr.w &Temp;
这两种写法都对,我知道它们对应的是两种不同的寻址方式,只是感觉很奇怪,为什么要这么设计?
另外对寄存器的操作是不能用&的,是不是又是一个滋养bug的好地方?
5、进入LPM3低功耗模式,功耗真的很低,不到1个uA,太强了!
    总之,MSP430单片机功能是非常强大的,我用到了它的片上Flash作EEPROM,非常方便;用它的Timer_A在连续工作模式下做定时器,非常方便。还用到了内部经过校准的1M振荡器,省了外接晶振。
    一起分享,乐趣多多。
评分
参与人数 2威望 +7 收起 理由
wake6120 + 1
永远的不知 + 6 真实的项目体会,以后wanggong多光顾TI MCU ...

相关帖子

沙发
永远的不知| | 2011-8-6 11:02 | 只看该作者
1# wanggong2011

430的功耗,用过的人都知道。
谢谢wanggong的真实产品项目体会分享。

使用特权

评论回复
板凳
lsdg123| | 2011-8-6 20:54 | 只看该作者
很好谢谢分享

使用特权

评论回复
地板
-自己人| | 2011-8-6 22:17 | 只看该作者
写的不错

使用特权

评论回复
5
msp430ing| | 2011-8-7 15:49 | 只看该作者
430功耗确实低

使用特权

评论回复
6
yirongfu| | 2011-8-8 10:05 | 只看该作者
第1点补充个资料:

使用特权

评论回复
7
qin552011373| | 2011-8-15 17:11 | 只看该作者
顶一个

使用特权

评论回复
8
ShaoKn| | 2011-8-16 16:05 | 只看该作者
一直没机会用430啊

使用特权

评论回复
9
yqg80| | 2011-8-18 16:53 | 只看该作者
这样的真实案例越多越好,能让大家对TI的产品设计更熟悉。

使用特权

评论回复
10
初涉职场| | 2011-11-15 10:33 | 只看该作者
不错不错,有共鸣

使用特权

评论回复
11
xue| | 2011-11-15 18:38 | 只看该作者
楼主第一条要用:
BR XXXX
也就是 MOV XXXX,PC

看来楼主以前是用51的。430整个体系同51有很大不同,更接近DSP一些,
指令系统高效但混乱。

使用特权

评论回复
12
永远的不知| | 2011-11-16 22:37 | 只看该作者
13# xue

这个方法直接操作PC,一步到位了。

使用特权

评论回复
13
wanggong2011|  楼主 | 2011-11-16 23:19 | 只看该作者
13# xue

谢谢提议!
以前用过51,也用过pic和freescal,
杂而不精啊!

使用特权

评论回复
14
l289123557| | 2014-4-21 09:53 | 只看该作者
谢谢分享

使用特权

评论回复
15
backandtrack| | 2014-4-21 11:15 | 只看该作者
谢谢楼主

使用特权

评论回复
16
hqgboy| | 2014-4-21 11:58 | 只看该作者

使用特权

评论回复
17
angerbird| | 2014-4-21 19:31 | 只看该作者
16位单片机和8位单片机在写汇编程序时体会非常明显。因为对于16位单片机,必须时时刻刻想着我用的这个变量是16位的还是8位的,尤其是赋值、运算的地方,都是滋养bug的好地方

使用特权

评论回复
18
angerbird| | 2014-4-21 21:38 | 只看该作者
直接用汇编写程序,看来很牛的啊

使用特权

评论回复
19
comeon201208| | 2014-4-23 22:31 | 只看该作者
进入LPM3低功耗模式,功耗真的很低,不到1个uA,,,这个需要合理的配置外围电路设计的吧

使用特权

评论回复
20
shibalihuandao| | 2014-4-23 23:07 | 只看该作者
两年的贴了谁挖的坟

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

10

帖子

1

粉丝