TI-MCU专区

MSP430快速入门

发布日期:2011/11/14

第1章 MSP430快速入门

    因为最近转入MPS430的技术支持工作,所以现在开始学习430的开发。由于之前用过51,也用过TIARM CORTEX-M3,但是就是没有用过TI430,所以将我学习430的过程写出来,给像我一样之前没有430开发经验的工程师快速入门做个参考。

 

1.1 准备工作

    如果你准备学习MSP430,在开始之前需要准备如下资料与工具:

         1. 430的开发板与调试仿真工具

    我公司有个TI 430 LaunchPan开发板,我正好拿它入门。该开发板上自带一个MSP-EXP430G2的调试仿真工具。MSP-EXP430G2适用于所有带2线调制功能的430

图 1.1 LaunchPan开发板

 

        2. 开发环境

    MSP430的开发平台,主要有IARTICCS

    IAR 是一款非常优秀的编译调试开发环境,具有业界最高的代码编译效率,而且几乎支持目前所有主流的MCU,如8051\430\ARM\AVR\PIC等。

    CCS是一款TI公司自己的开发环境,支持TI所有系列的处理器,如DSP\ARM\430等。

从性能和使用人数来看,IAR是无可争议的主流,所以我一般推荐使用IAR,且我后面的介绍也是基于IAR开发平台的。

 

    3. 如何获得IAR430版本

    IAR是一款收费软件,但是IAR公司有提供30天免费试用版和4K/8K代码限制永久免费版,可以登陆IAR公司官网 http://www.iar.com 获得。需要注意的是,需要先注册一个账号,登陆以后才能下载。

    如果你仅仅是用于个人学习,可以使用30天免费试用版+和谐文件,获得无限制使用。IAR的和谐文件,可以从网上获得。

 

        4.  获得430相关资料

    登陆TI官网 http://www.ti.com/ ,进入产品中心,选择MCU,选择你使用430型号所属系列,比如LaunchPan开发板,使用的是MSP430G2231,属于G2XX系列,选择G2XX系列,在430型号列表中找到MSP430G2231,双击进入。

    在这里你可以获得很多关于MSP430G2231的资料,你必须获得的重点资料如下:

    n DataSheet 

    n MSP430xxxx Family User's Guide

    n MSP430 Optimizing C/C++ Compiler User's Guide

 

    DataSheet,是CPU所包含资源的概述,引脚的详细定义,芯片的电气特性等。

 

    MSP430xxxx Family User's Guide,是430时钟系统、外设及外设寄存器的详细介绍,适用于某一个系列的430芯片,比如MSP430x2xx Family User's Guide,适用于MSP430x2xx系列的430芯片。

 

    MSP430 Optimizing C/C++ Compiler User's Guide,是基于该系列MCU的代码例程。有适用于IAR汇编语言版本,适用于CCS汇编语言版本,以及C语言版本等3个版本。

 

    MSP430 Optimizing C/C++ Compiler User's Guide,包含了系统时钟, GPIO, TIMER, ADC, UART, USI, COMP等各种外设的具体应用配置例程。其中有一个Readme.txt文件,简要的介绍了每个例程的设置。

图 1.2 C代码例程

 

1.2 MSP430的时钟系统

    要学习MPS430,首先需要搞清楚他的时钟系统。我们知道MSP430是一个超低功耗的MCU,他的时钟系统以及外设都为实现超低功耗而设计。

    我们以MSP430G2231为例进行说明。

    MSP430G2231系列有4个时钟源,分别是: LFXT1CLK\ XT2CLK\ DCOCLK\ VLOCLK

    LFXT1CLK由低频时钟晶体或外接32768hz时钟源产生的低频/高频振荡器或由标准晶体、振荡器,或外部400KHZ--16MHZ的外部时钟源提供。

    XT2CLK可供选择的高频振荡器,由标准晶体、振荡器,或外部400KHZ--16MHZ的外部时钟源提供。

    DCOCLK片内可数字控制的振荡器。

    VLOCLK片内超低功耗、12KHZ的低频振荡器。

    MSP430G2231可提供3个时钟信号,分别是: ACLK\ MCLK\ SMCLK

    ACLK:辅助时钟。ACLK有软件选择来自LFXT1CLKVLOCLK之一的时钟信号。ACLK1,2,3,4分频后得到。ACLK可由软件选作各个外围模块时钟。

    MCLK主时钟。MCLK有软件选择来自LFXTICLKVLOCLK,XT2CLK(如果片内提供)DCOLCK之一的时钟信号。MCLK1,2,4,8分频得到。MCLK用于CPU和系统。

    SMCLK:子系统时钟。SMCLK由软件选择来自LFXT1CLKVLOCLK, XT2CLK(片内提供),DCOCLK之一的时钟。SMCLK1,2,4,8分频得到。由SMCLK看有软件选作各个外围模块时钟。

 

    NOTE: MSP430G2231在复位上电后,MCLKSMCLK来自DCOCLK1.1MHZACLK来自内部集成6pF电容的LFXT1CLK的高频模式。使用DCOCLK作为MCLK也是最常用的时钟设置模式。

 

    我们搞清楚了时钟系统后,接下里需要搞清楚各个外设功能模块,包括 GPIO, TIMER, ADC, UART, USI, COMP等。由于这篇文章只是快速入门,我在这里不做详细叙述。

 

1.3 DCO时钟校准

    在上节中我们提到,在上电复位后MSP430G2231默认使用DCOCLK作为MCLKSMCLK

    DCO 数字可控的振荡器,误差较大,一般需要校准。MSP430G2231在出厂时有提供一个1MHZ的校准值。为获得较高的时钟精度,一般推荐使用校准时钟。

    当然你也可以自己校准,在MSP430 Optimizing C/C++ Compiler User's Guide软件包中有一个msp430x20xx_dco_flashcal.c的程序,该例程需要外接一个32768的晶体作为LFXT1CLK然后将校准后值保存在FLASH的数据空间。

    使用出厂校准值配置DCO,请看程序清单 1.1

void main(void)

{

    WDTCTL = WDTPW + WDTHOLD;               // Stop watchdog timer

    

    //======================================================================

    if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)

    {

        while(1);                           // If calibration constants erased

                                            // do not load, trap CPU!!

    }

    

    //1Mhz

    BCSCTL1 = CALBC1_1MHZ;                  // Set range

    DCOCTL = CALDCO_1MHZ;                   // Set DCO step + modulation */

    //=======================================================================

    

    while(1)

    {

    }

}

    程序清单 1.1 使用出厂校值值配置DCO

 

1.4 硬件最小系统

    MSP430的最小系统其实很简单,因为上电后默认使用DCO,所以不需要外部振荡器,只需要最基本的电源复位3个信号就可工作。

    如果需要使用2线调试,只需将GND, RST,TEST 3个引脚与MSP-EXP430G2仿真器相连。

 

1.5 IAR下新建工程

    在安装IAR后,下面就手把手的教你如何新建一个工程。

    1. 打开IAR

图 1.3 打开IAR

 

    2. 新建工程

    选择菜单 Project/ Create New Project... ,弹出如下菜单,点击OK确认,

图 1.4 新建工程

 

    3. 新建一个目录

    在步骤2后,会弹出如下菜单,需要为你的新工程新建一个目录,然后填入工程名。

图 1.5 新建工程目录

 

    4. 工程创建完成

    工程创建完成后,回到项目工程界面,如图所示。

图 1.6 工程创建完成

 

    5. 添加c文件

    如图所示,鼠标右键左上角的工程,选择菜单Add/ Add File, 然后把你自己的C文件添加进工程。

 

    6. 配置工程---之选择芯片型号

    加入你自己的C文件后,需要配置工程选项。鼠标右键左上角的工程,选择菜单Options...,在弹出的Options对话框中选择菜单 General Options。在Device选项中选择你芯片的型号。

 

    7. 配置工程---之选择调试工具

    工程配置Options内容很多,不过一般按默认值就可以了,只是需要根据你的使用调试工具,需要在Debugger选项中,选中你的调试工具型号。

 

1.6 运行你的第一个程序

    在工程创建与设置完成之后,就可以开始运行你的第一个程序了。忙活了这么久,很值得期待吧?

        程序清单 1.2 为我的一个测试程序frist_demo,该程序用出厂校正值配置DCO,配置P1.0 与 P1.6IO输出(这两个IO有连接的两个LED),然后在主循环里翻转LED,两个LED一闪一闪。

        程序清单 1.2---L1,加入MSP430G2231所需要的头文件,该头文件里包含了MSP430G2231的寄存器地址定义。

        程序清单 1.2---L2,关闭看门狗,MSP430上电复位后,默认看门狗开启。

        程序清单 1.2---L3L4L5 使用出厂校正值配置DCO1MHZ

        程序清单 1.2---L6 配置两个LED引脚为输出功能。

        程序清单 1.2---L8LED引脚置高电平。

        程序清单 1.2---L9,延时0.5秒,void__delay_cycles(unsigned long cycles) 为IAR编译器的库函数(CCS也有),该函数的功能是精确延时n个系统时钟。

        程序清单 1.2---L10LED引脚置低电平。

 

#include  <msp430g2231.h> L1

#define     SYS_CLK         1000000

#define     MS              (SYS_CLK/4/1000)

#define     LED_1           (1<<0)

#define     LED_2           (1<<6)

void main(void)

{

    WDTCTL = WDTPW + WDTHOLD;               // Stop watchdog timer L2

    

    //=========================================================================

    if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF) L3

    {

        while(1);                           // If calibration constants erased

                                            // do not load, trap CPU!!

    }

    

    //1Mhz

    BCSCTL1 = CALBC1_1MHZ;                  // Set range L4

    DCOCTL = CALDCO_1MHZ;                   // Set DCO step + modulation */ L5

    //=========================================================================

    

    P1DIR = LED_1|LED_2;                    // LED 为输出 L6

    P1OUT =  LED_1|LED_2;                   // 设置 LED 为 1 L7

    

    while(1)

    {

        P1OUT  =  LED_1|LED_2;              // LED == 1 L8

        __delay_cycles(SYS_CLK/2); L9

        

        P1OUT &= ~(LED_1|LED_2);            // LED == 0 L10

        __delay_cycles(SYS_CLK/2);

    }

}

程序清单 1.2 frist_demo程序

 

 

 

 

--------------------------------------------------------------------------------------------------------

MSP430快速入门