查看: 1603|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2018-10-29 22:48
  • 签到天数: 731 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-6-24 00:20:34 | 显示全部楼层 |阅读模式
    分享到:
    玩单片机的时间也不短了,过手的板子也不少,不敢说是“高手”,勉强充个“老手”。大学的时候玩的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,看了一下网上流行的几个视频教程,好像也没用到调试的,只好用逻辑分析仪弥补了。接下来就是玩板子的常规流程了。
             
    • 创建工程组织结构
    经常玩板子的人一般都有自己的固定的工程组织风格。变化的只是单片机芯片,设计思想始终是不变的,没有必要每次都搞得很麻烦。这是我常用的代码结构。
    一个根目录<board>_demo_project下就放三个一级子目录:doc放文档及开发日志,记录代码进度及状态;source放公共的代码文件,例如startup启动代码、driver驱动程序及抽象出来的midware中间件软件等;example才放各自的例子程序相关的内容,build放工程组织文件,application放应用程序源代码。

    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小板:
    正面:

    侧面:

    底层:

    两个好兄弟:
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-18 08:49 , Processed in 0.119419 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.