MSPEXP430G2入门.docx
- 文档编号:6869832
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:28
- 大小:1.97MB
MSPEXP430G2入门.docx
《MSPEXP430G2入门.docx》由会员分享,可在线阅读,更多相关《MSPEXP430G2入门.docx(28页珍藏版)》请在冰豆网上搜索。
MSPEXP430G2入门
提纲:
一.MSP-EXP430G2套件介绍
1.包装清单
2.LaunchPad简介(430文件夹_用户指南)
(一)LaunchPad片上资源
(1)开发板硬件简介
(2)主要功能模块
(二)LaunchPad特性
(三)LaunchPad电路图(主要参考【LaunchPad】开发板介绍.pdf)
3.MSP430G2553数据资料(技术资料汇总_G2553中文资料.pdf)
4.安装MSP-EXP430G2LaunchPad
二.编译部分
1.编译工具的选择
2.编译工具的安装(根据安装提示便可)
3.程序编译、烧录流程
4.编程规则(MSP430编程规则.pdf)
三.基础程序部分
1.功能模块程序(MSP430G2xx3CodeExamples文件夹)
2.基础应用程序(例程代码)
四.应用举例——MSP430G2452内置温度传感器温度检测
五.LaunchPad扩展部分
1.eZ430连接、编程要点
2.与卫星板的连接
3.与LaunchPad兼容的MSP430器件
一.MSP-EXP430G2套件介绍
1.包装清单:
⏹LaunchPad目标板(附一个烧好测温实验例程的MPS430G2553)
⏹MPS4302452一个——具有8通道10位ADC、片上比较器、触控式I/O、通用串行接口、8Kb闪存、256字节SRAM的低功耗16位MSP430微控制器
⏹32.768KHz时钟晶振
⏹0.5m长的USB-B线缆
⏹插座式10引脚印刷板连接线两个
⏹LaunchPad贴签两个
⏹快速启动指南
2.LaunchPad简介
(一)LaunchPad片上资源
(1)开发板硬件介绍:
板上材料清单
开发板指示图
(2)主要功能模块:
⏹复位模块
⏹时钟模块
⏹I/O端口模块;
⏹WDT看门狗模块;
⏹TimerA定时器模块
⏹比较器A模块
⏹ADC10数模转换模块
⏹USART串行异步通讯模块
⏹CPU模块
(二)LaunchPad特性
⏹实验班成本低、低功耗
⏹USB调试与编程接口无需驱动即可安装使用,且具备高达9600波特的UART串行通信速度
⏹支持所有采用PDIP14或PDIP20封装的MSP430G2XX和MSP430F20XX器件
⏹分别连接至绿光和红光LED的两个通用数字I/O口引脚可提供视觉反馈
⏹两个按钮可实现用户反馈和芯片复位
⏹器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板
⏹高质量的20引脚DIP插座,可轻松简便地插入目标器件或将其移除
(三)LaunchPad电路图
LaunchPad原理图见“【LaunchPad】开发板介绍.pdf”。
3.MSP430G2553数据资料
G2553是LaunchPad的主要芯片,其数据资料详见“G2553中文资料.pdf”。
4.安装MSP-EXP430G2LaunchPad
安装MSP-EXP430G2LaunchPad包含三个步骤:
(1)下载所需软件:
通常选IAR或者CCS。
(2)安装选定的IDE:
下载一个集成开发环境(IDE),IAR或者CCS,安装(编译部分有详细介绍)。
(3)将LaunchPad连接至PC:
将附带USB线缆的EXP430G2LaunchPad目标板连接至PC。
如果出现提示,要求提供软件,则允许Windows自动安装该软件。
注意,仅当已经安装了IARKickStart或CodeComposerStudio后才能这样做。
二.编译部分
1.编译工具的选择
开发LaunchPad通常选用CCS(CodeComposerStudio)或者IAR(IAREmbeddedWorkbenchIDE)作为编译软件。
前者是TIDSP的官方软件,功能强大;后者在论坛的人气更高。
2.编译工具的安装(根据安装提示便可)
3.程序编译、烧录流程
选择IAR作为编译软件操作系统:
Windows7开发环境:
IARFORMSP430V5.30.1
第一步:
驱动安装。
IARFORMSP430V5.30.1软件已集成LaunchPad驱动,安装好IAR再将LaunchPad与电脑连接,等待驱动安装完毕即可。
如果不成功通常是电脑与板子连接不好。
第二步:
建立工程。
双击图标
打开工程,点击工具栏上方的File-New-Workspace,新建工作组,再点击工具栏Project-CreatNewProject,转到如图
接着点击如图所示
然后会提示你保存工程文件,存在事先建好的文件夹内。
选择C–main,这里也可选择Emptyproject,选择前者则会自动新建一个main.c文件,并且把它加入到工程中。
给指定一个文件,并且把它加入到工程中,给指定的工程名称msp430中。
点击make编译,确认无错误。
第三步:
配置。
上面无错误的话,在工程名msp430上右键选择第一项,Options–GeneralOptions–Targets–Device,如图芯片类型选择msp430g2553(视开发板上的主芯片定)。
再选择Link–Output,勾上如图所示,
再选择Debugger–Setup–Driver,选择FETDebugger,
再点击下面的FETDebugger,设置成如下图所示,
点击OK完成。
第四步:
编译下载。
接着上面的步骤点击工具栏中间
DownloadandDebug,这样就可以将程序下载到班子上了,同时软件也进入了仿真界面。
若最后如图所示,则说明板子未连接好。
4.编程规则(MSP430编程规则.pdf)
三.基础程序部分
1.功能模块程序(MSP430G2xx3CodeExamples文件夹)
2.基础应用程序(历程代码文件夹)
四.应用举例——MSP430G2452内置温度传感器温度检测
⏹首次使用:
首次使用MSP-EXP430G2LaunchPad实验板时,演示应用将在该板从USB主机获得供电时立即自动启动。
使用自带的MiniUSB线缆将MSP-EXP430G2LaunchPad连接至空闲的USB端口。
演示应用启动后,LED将交替变亮以指明器件启动。
⏹演示应用——内部温度测量:
LaunchPad实验板包括一个预烧录程序的MSP430G2553器件。
实验板启动后,按下P1.3可将应用切换到温度测量模式。
此模式开始会显示一个参考温度,LaunchPad信号的LED分别通过板上红或绿光LED的亮度变化来指示温度的升或降。
通过再次按P1.3来重新对参考温度进行校准。
所收集的温度数据还可经由反向通道UART通过USB仿真电路传回PC。
传输的值表示使用MSP430G2553内部温度传感器测量的华氏温度值。
PC上的串行通信端口必须设置为2400bps、一个停止位且无控制流,才能正确显示值。
该演示应用使用了G2553器件的片上外设,例如10位ADC用于对内部温度传感器进行采样,而16位定时器用于驱动PWM以改变LED亮度并启动软件UART以与PC进行通信。
这一预加载的演示应用源代码可从MSP430LaunchPadwiki页面的“项目”板块进行下载。
⏹由于MSP–EXP430G2套件有两个单片机——G2553和G2452,其中,G2452没有预烧录程序,所以此处的应用举例部分以G2452单片机为例。
(一)实验准备:
①基于MSP430G2452内置温度传感器的温度检测程序(见附录);②搭建编译环境、用USB将LaunchPad与PC连接安装相关驱动程序;③由于显示温度的GUI要求PC安装JAVA的一个组件,所以要保证PC上有JAVA程序——安装JAVA程序;④获得温度显示GUI——官网下载或者光盘自带或者网上查找下载等方式获得。
(二)程序编译、烧录,参照第二部分第3步。
注意将温度检测程序添加到项目里面。
(三)演示:
①用USB将LaunchPad与PC相连,查看实验板分配串口。
此处分
配串口为COM8;②若实验板的LED1和LED2分别闪烁红、绿光,则开发板启动正常,此时打开MSP430温度检测GUI:
由于此次示例实验板分配的串口为COM8,所以输入数字1选择串口,回车,温度检测显示界面如图:
所示温度是华氏度。
摄氏度=(华氏度-32)*5/9。
五.LaunchPad扩展部分
1.eZ430连接、编程要点
⏹MSP-EXP430G2实验板可通过仿真器的J4中插入1.27毫米间距的排针与eZ430目标板进行连接
⏹MSP-EXP430G2仿真器与相连目标器件(eZ430目标板)的连接可用跳线组J3断开
⏹通过断开Spi-Bi-WireJTAG线路RST和TEST,可以很方便地把JTAG线路用于其它应用,方便连接其它eZ430目标板。
⏹MSP-EXP430G2LaunchPad可对eZ430-RF2500T目标板、eZ430-Chronos手表模块、eZ430-F2012T/F2013T进行编程
⏹要在不干扰LaunchPad目标板的情况下为相连的目标板进行编程,则必须断开J3的跳线连接的RST和TEST,将eZ430目标板的接口与MSP-EXP430G2仿真器相连接
⏹只有在未同时连接eZ430目标板的情况下才能对连接的LaunchPad目标器件进行编程和调试
⏹将UART直接连接到LaunchPad目标器件,闭合跳线J3,可以监控从LaunchPad目标到所连接eZ430的传输情况。
通过这种方法,可以在不更改UART引脚方向的情况下建立两种可能的连接,即从器件到PC以及从器件到eZ430
调试接口J4的引脚分配
2.与卫星板的连接
⏹LaunchPad的J1/J2和J6处预留了2.54毫米(0.1英寸)的排针焊接脚位,能够以极低成本实现电路实验板的扩展
⏹卫星电路板可通过J1、J2和J6访问LaunchPad目标器件的所有引脚信号
⏹卫星板既可以自带芯片且将LaunchPad用作纯粹的编程接口,也可与插入到LaunchPad插座中的芯片协同工作
⏹LaunchPad和eZ430目标板之间连接器的器件型号:
排针:
Mill-Max850-10-006-20-001000
插座:
Mill-Max851-93-006-20-001000
3.与LaunchPad兼容的MSP430器件
TI可提供多种采用PDIP封装且与LaunchPad兼容的MSP430器件:
附录——基于MSP430G2452内置温度传感器的温度检测程序:
#include"msp430g2452.h”
#defineLED1BIT0//绿灯,BIT0,BIT6之类的是宏定义,请在头文件"msp430g2452.h"中查看
#defineLED2BIT6//红灯,参见MSP-EXP430G2LaunchPadExperimenterBoardUser'sGuide
#defineLED_DIRP1DIR
#defineLED_OUTP1OUT
#defineBUTTONBIT3//P1.3为板上按键S2
#defineBUTTON_OUTP1OUT//端口输出寄存器
#defineBUTTON_DIRP1DIR//端口方向控制寄存器
#defineBUTTON_INP1IN//端口输入寄存器
#defineBUTTON_IEP1IE//端口中断允许寄存器
#defineBUTTON_IESP1IES//端口中断触发沿控制寄存器
#defineBUTTON_IFGP1IFG//端口中断标志寄存器
#defineBUTTON_RENP1REN//端口上下拉电阻使能控制寄存器
#defineTXDBIT1//TXDonP1.1
#defineRXDBIT2//RXDonP1.2
#defineAPP_STANDBY_MODE0//待机模式标志,也就是接上电源(或USB)后红绿灯交替闪的状态
#defineAPP_APPLICATION_MODE1//应用模式标志,也就是待机模式时按按键后进入的状态,也就是测量温度
#defineTIMER_PWM_MODE0
#defineTIMER_UART_MODE1//串口模式状态
#defineTIMER_PWM_PERIOD2000
#defineTIMER_PWM_OFFSET20
#defineTEMP_SAME0
#defineTEMP_HOT1
#defineTEMP_COLD2
#defineTEMP_THRESHOLD5
//Conditionsfor9600/4=2400BaudSWUART,SMCLK=1MHz
#defineBitime_50x05*4//~0.5bitlength+smalladjustment
#defineBitime13*4//0x0D
#defineUART_UPDATE_INTERVAL1000//主循环次数进行一次串口发送温度值
unsignedcharBitCnt;
unsignedcharapplicationMode=APP_STANDBY_MODE;//功能模式标志,初始值为待机模式
unsignedchartimerMode=TIMER_PWM_MODE;
unsignedchartempMode;
unsignedcharcalibrateUpdate=0;
unsignedchartempPolarity=TEMP_SAME;
unsignedintTXByte;
/*Usingan8-valuemovingaveragefilteronsampledADCvalues*/
longtempMeasured[8];//定义数组以计算8次10位ADC温度采样的平均值
unsignedchartempMeasuredPosition=0;//温度测量值数组索引
longtempAverage;//8次10位ADC温度采样的平均值
longtempCalibrated,tempDifference;
voidInitializeLeds(void);//IO端口初始化,设置两颗LED对应的端口并两设置为熄灭初始状态
voidInitializeButton(void);//IO端口初始化,配置按键
voidPreApplicationMode(void);//进入待机模式,红绿灯交替闪,等待按键BlinksLED,waitsforbuttonpress
voidConfigureAdcTempSensor(void);//配置温度传感器模数转换
voidConfigureTimerPwm(void);//配置定位器为PWM模式
voidConfigureTimerUart(void);//配置定时器为Uart模式
voidTransmit(void);//串口发送子程序
voidInitializeClocks(void);//初始化时钟系统
voidmain(void)
{
unsignedintuartUpdateTimer=UART_UPDATE_INTERVAL;//主循环次数进行一次串口发送温度值
unsignedchari;
WDTCTL=WDTPW+WDTHOLD;//停止看门狗StopWDT
InitializeClocks();//初始化时钟系统
InitializeButton();//配置按键
InitializeLeds();//设置端口并两设置两颗LED对应为熄灭初始状态
PreApplicationMode();//进入待机模式,红绿灯交替闪,等待按键BlinksLEDs,waitsforbuttonpress
//执行PreApplicationMode()将进入低功耗模式,程序停止在此,直到有按键按下
/*进入应用模式ApplicationModebegins*/
applicationMode=APP_APPLICATION_MODE;//功能模式标志变成应用模式
ConfigureAdcTempSensor();//配置温度传感器模数转换
ConfigureTimerPwm();//配置定位器PWM模式
__enable_interrupt();//使能全局中断Enableinterrupts.
/*MainApplicationLoop*/
while
(1)
{
ADC10CTL0|=ENC+ADC10SC;//ADC使能,ADC开始转换一次Samplingandconversionstart
__bis_SR_register(CPUOFF+GIE);//进入省电模式LPM0,等待AD转换完成中断LPM0withinterruptsenabled
/*Movingaveragefilteroutof8valuestosomewhatstabilizesampledADC*/
tempMeasured[tempMeasuredPosition++]=ADC10MEM;//将温度采样值存入温度值数组下一位
if(tempMeasuredPosition==8)
tempMeasuredPosition=0;复位温度采样值数组索引
tempAverage=0;
for(i=0;i<8;i++)
tempAverage+=tempMeasured[i];//累加温度采样值数组各值
tempAverage>>=3;//除以8得到平均值Divideby8togetaverage
if((--uartUpdateTimer==0)||calibrateUpdate)//如果主循环了UART_UPDATE_INTERVAL次或者参考温度按键按过
{
ConfigureTimerUart();
if(calibrateUpdate)
{
TXByte=248;//Acharacterwithhighvalue,outsideoftemprange
Transmit();//串口发送值248表示按键按下进行了校准参考
calibrateUpdate=0;//复位参考温度校准标志变量
}
TXByte=(unsignedchar)(((tempAverage-630)*761)/1024);//计算温度华氏值
Transmit();//串口发送华氏温度值
uartUpdateTimer=UART_UPDATE_INTERVAL;//复位循环计数变量
ConfigureTimerPwm();//配置定时器回PWM模式
}
tempDifference=tempAverage-tempCalibrated;//计算相对于参考温度的差值
if(tempDifference<-TEMP_THRESHOLD)//如果采样温度值低于参考温度值差值TEMP_THRESHOLD
{
tempDifference=-tempDifference;//差值取正
tempPolarity=TEMP_COLD;//极性变量设为值TEMP_COLD
LED_OUT&=~LED1;//LED1绿灯置灭
}
else
if(tempDifference>TEMP_THRESHOLD)//如果采样温度值高于参考温度值差值TEMP_THRESHOLD
{
tempPolarity=TEMP_HOT;//极性变量设为值TEMP_COLD
LED_OUT&=~LED2;//LED2红灯置灭
}
else//如果相对于参考温度值偏差没有超过阈值TEMP_THRESHOLD
{
tempPolarity=TEMP_SAME;//性变量设为值TEMP_SAME
TACCTL0&=~CCIE;//关TACCTL0中断使能
TACCTL1&=~CCIE;//关TACCTL1中断使能
LED_OUT&=~(LED1+LED2);//置两灯皆灭
}
if(tempPolarity!
=TEMP_SAME)//如果相对于参考温度值偏差超过阈值TEMP_THRESHOLD
{
tempDifference<<=3;//温度偏差值乘以8
tempDifference+=TIMER_PWM_OFFSET;//加上一个偏置值
TACCR1=((tempDifference)<(TIMER_PWM_PERIOD-1)?
(tempDifference):
(TIMER_PWM_PERIOD-1));//置TACCR1,最大为TIMER_PWM_PERIOD-1。
//TACCR1值控制亮的时间,定时器计数到TACCR1在中断中将关闭灯,在TACCR0中断中亮灯
TACCTL0|=CCIE;//开TACCTL0中断使能
TACCTL1|=CCIE;//开TACCTL1中断使能
}
}//返回主循环
}
//进入待机模式,红绿灯交替闪,等待按键
voidPreApplicationMode(void)
{
LED_DIR|=LED1+LED2;//p1.0和P1.6口为输出
LED_OUT|=LED1;//绿灯亮ToenabletheLEDtogglingeffect
LED_OUT&=~LED2;//红灯灭
BCSCTL1|=DIVA_1;//辅助时钟分频设置为2,ACLK=6KHz
BCSCTL3|=LFXT1S_2;//辅助时钟源选择VLOCLK,12KHz//ACLK=VLO
TACCR0=1200;//
TACTL=TASSEL_1|MC_1;//定时器时钟源选择辅助时钟ACLK,增计数模式//TACLK=SMCLK,Upmode.
TACCTL1=CCIE+OUTMOD_3;//捕获/比较控制寄存器1设置为比较模式,输出模式为“置位/复位”,中断允许//TACCTL1CaptureCompare
TACCR1=600;
__bis_SR_register(LPM3_bits+GIE);//LPM0withinterruptsenabled?
?
低功耗模式LPM3
//此时cpu停止,等待中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MSPEXP430G2 入门