一个单片机老手的MSP430初体验

作者: suyong_yq
上传时间为: 2014-06-24 12:20 AM

玩单片机的时间也不短了,过手的板子也不少,不敢说是“高手”,勉强充个“老手”。大学的时候玩的51单片机,那时候UART+GPIO+定时器几乎可以“打遍天下”了。后来ARM的Cortex M3火起来的时候也跟着凑热闹,用的接口也开始多起来,那个时候STM32可是占尽了风光。再后来ARM Cortex M4和M0/M0+的时代就是百家争鸣了,这个时候手里也攒了一些板子。中间错过了MSP430,一直觉得有点遗憾。

毕业前在学校里申请了两块MSP430F149的芯片,本来打算研究一下,但终究是没用起来。前一阵子借着一个偶然的机会在网上淘到两块PCB,终于可以实现在MSP430跑程序的夙愿。不得不提的是,淘到的两块PCB上自己集成了BSL下载电路,省去了单独购买调试器的麻烦,淘来的板子比自己做又节约了不少银子。

淘到的PCB布局真心是不错的:

1. 板载了基于PL2303的USB转串口电路用于BSL,并且可通过跳线将这个转换电路复用于BSL下载端口或主控芯片的串口0。

2. 基于48Pin MSP430F149的最小系统,刚好可以焊上之前申请到的芯片。

3. 8个贴片LED小灯,可通过跳线选择为小灯供电。这个Jumper设计得不错,当用连接小灯的端口做其它事情的时候,可以关掉小灯。

4. 每个引脚都单独引出,整整齐齐排列在板子的两侧,并清晰地标出每个引脚编号。这个是我最看重的地方,这样的设计特别适合用于用杜邦线扩展连接其它模块。

5. 专为为1602液晶留出了端口。这是让我惊喜的地方,这么一块小板竟然也用了时下开发板最时髦的设计,虽然1602配置低端,可是手头刚好有几块,哈哈,可以充分利用起来。

总之,当初看到这块板子的时候就觉得特别喜欢。

接下来开始说写程序的情况。因为最近几年玩Cortex-M的芯片用IAR比较多,因此这回也是选用了IAR v5.3 for MSP430,软件的界面跟IAR for ARM几乎是一样的,基本上是无缝转换。下载嘛,就是用BSL了。比较郁闷的是没有办法debug,看了一下网上流行的几个视频教程,好像也没用到调试的,只好用逻辑分析仪弥补了。接下来就是玩板子的常规流程了。

  1. 创建工程组织结构

经常玩板子的人一般都有自己的固定的工程组织风格。变化的只是单片机芯片,设计思想始终是不变的,没有必要每次都搞得很麻烦。这是我常用的代码结构。

一个根目录<board>_demo_project下就放三个一级子目录:doc放文档及开发日志,记录代码进度及状态;source放公共的代码文件,例如startup启动代码、driver驱动程序及抽象出来的midware中间件软件等;example才放各自的例子程序相关的内容,build放工程组织文件,application放应用程序源代码。

一个单片机老手的使用MSP430初体验 1

2.  三个基础例子程序

用GPIO点个灯、用UART输出“Hello”并回显输入字符、用定时器实现延时,这三个程序几乎是后面所以程序的基础,如果不是有特别的需求,实现得尽量简单。中断这种高端的机制就不要让UART搞了,交给定时器演示一下就OK。这三个功能几乎所有的单片机上都能实现,所以才是“基础”嘛。

3.  模块功能

这部分功能主要看板子上的资源了,如果没有板载模块,放出接口外接也行。基本上底层驱动实现一下,通信协议可以原样移植。其实这部分才是玩板子的重点,一般都是因为能集成某个或某几个好玩的模块才玩这块板子的,常见的比较耐玩的模块有:液晶屏、以太网络,SD卡等等。

再回到咱们的MSP430上。因为只是用,暂时也没考虑什么地址空间,链接管理什么的,上来先点个灯再说。MSP430的引脚电平控制起来非常方便,只要配置PxDIR为输出,然后想PxOUT写数就可以了。然后是定时器,MSP430的定时器看起来很NB,比较复杂,大部分功能一般都用不上,实际上我只想实现一个PIT,然后实现Systick。接下来是串口,想来肯定也是非常成熟的程序了,就直接从网上找了一些代码。这里要抱怨一下,MSP430的串口用的是UART,SPI和IIC(F149没有集成IIC)混合版的USART,东西是不错,不过配置起来比较晕,而且无论是否使用中断方式,串口的中断总是要开的。这个思路跟之前用过的单片机有点出入,所以让我纠结了一阵子。最后就是驱动1602液晶了,很早的时候玩单片机,当时还觉得用1602挺高深的,这几年动辄几千页洋文芯片手册看过来,现在再照着1602的手册写驱动,感觉真是幸福啊。

总结一下工作量:

焊两块板子用了1.5个小时,主要是烙铁不大好用,找元件也花费了一些时间。

写程序+找资料总共用了6个小时。

如果不去考虑专门为低功耗考虑的程序设计,总体感觉MSP430的编程是比较简单的,F149片上集成4KB RAM和60K Flash的存储资源,集成UART和SPI这两个常用的通信外设,还有ADC(暂时没有用到),剩下的GPIO操作起来非常方便。由于PCB的设计提供了极强且极为方便的可扩展性,我打算以后专门用它们评估新的小模块,基本上先用GPIO模拟通信时序的机会比较多。

如果不去考虑专门为低功耗考虑的程序设计,总体感觉MSP430的编程是比较简单的,F149片上集成4KB RAM和60K Flash的存储资源,集成UART和SPI这两个常用的通信外设,还有ADC(暂时没有用到),剩下的GPIO操作起来非常方便。由于PCB的设计提供了极强且极为方便的可扩展性,我打算以后专门用它们评估新的小模块,基本上先用GPIO模拟通信时序的机会比较多。

最后,秀一下我的MSP430小板:

正面:

一个单片机老手的使用MSP430初体验 MSP430正面

侧面:

底层:

一个单片机老手的使用MSP430初体验 MSP430底层

两个好兄弟:

全部评论 ()

创建讨论帖子

登录 后参与评论
系统提示