This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
无论您是 MSP430 的设计老手,还是初涉 MSP430 应用设计,8 月 30 日到 9 月 16 日,快来分享您认为对您设计有用的资料文档!每一位分享者将获赠一块 MSP430 LaunchPad + MSP430 电容触摸 BoosterPack 。
我们期待您的给力分享!
希望 TI 官方 MSP430 社区为大家提供一个学习、分享的平台!
文档以最简单的方法带你入门msp430
例如:
#include "io430.h"
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0x01; // Set P1.0 to output direction
while(1)
{
volatile unsigned int i;
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
i = 50000; // Delay
while (i--);
}
}
最简单的代码教你入门
以及用CCS建立工程,用USB线连接电脑PC和目标板LaunchPad,安装驱动,例如:IAR for MSP430给安装上,驱动也就有了。这里驱动路径如下:
D:\Programs\IAR Systems\Embedded Workbench 6.0 Evaluation\430\drivers\TIUSBFET
还有如何用FETDEBUG仿真等等
这对于初学者有重大意义,这文档对于我入门430很有帮助
MSP430 太阳能收集开发工具
网址:www.ti.com.cn/.../EZ430-RF2500-SEH
eZ430-RF2500-SEH 是可根据超低功耗 MSP430 微处理器帮助创建永久供电的无线传感器网络的一套完整的太阳能收集开发工具。
该太阳能收集模块包含一个适用于在低强度荧光下的室内工作的高效太阳能 (2.25x2.25”) 面板,它可在无需附加电池的情况下为运行无线传感器应用提供足够电源。输入还可用于热、压电或其它太阳能面板等外部能量收集器。
该系统还管理和存储一对 Cymbet 薄膜可再充电 EnerChip 中的其它能量,其中 EnerChip 能够提供可供 400+ 传输的充足电源。EnerChip 充当应用休眠时存储能量的能量缓冲器,并拥有可供收集的光。该电池是绿色环保,可进行上千次的再充电。它们的自放电率极低,这一点对于无电源的能量收集系统非常重要。
eZ430-RF2500 用于运行能量收集应用。它是一套完整的基于 USB 的 MSP430 无线开发工具,可提供使用 MSP430F2274 微处理器和 CC2500 2.4GHz 无线收发器所需的所有硬件和软件。它包含一个支持 MSP430 的实时系统内置调试和编程的 USB 调试接口,另外它还是可将数据从无线系统传输至 PC 的接口。
集成温度和射频信号强度指示器可用于监视环境,而众多外部传感器可用于收集其它数据。
eZ430-RF2500-SEH 传感器监视器是一套完整的开放源码应用,它包含一个可测试硬件的能量感知示例项目,可以充当能量收集项目的框架。固件专为 MSP430 以及演示应用提供,以显示无线网络的数据采样。
特性:
用于 eZ430-RF2500 的高效太阳能收集模块
无电池操作
可在环境光较弱的场合工作
可在暗淡光线下实现 400+ 传输
可适用于所有射频网络或传感器输入
可用于外部收集器(热、压电、第二个太阳能面板等)的输入
具有连接至 PC 的应用反向通道的 USB 调试和编程接口
18 个可用的模拟和通信输入/输出引脚
具有 16MHz 性能的高度集成、超低功耗 MSP430 MCU
用于视觉反馈的 2 个绿色与红色的 LED
用于用户反馈的可中断按钮
转别人的一个好东西《MSP430加密熔丝烧断器的制作》
做工具开发比较有参考价值。。。
主要讲解了MSP430内部jtag熔丝加密的原理,总结如下:
MSP430系列单片机在上电复位时会通过TDI/TCLK端对保险丝进行检测,当保险丝完好时,在TDI/TCL K和地之间会有1mA 的电流流过。保险丝检测出现在上电复位以后TMS 端的第一个下降沿上,在第二个下降沿上会解除保险丝的检测,直到下一次的上电复位再进行保险丝检测,即在每一次的上电复位都会对保险丝进行检测。保险丝检测电流只有在保险丝检测方式时才会流过TDI/TCLK端,当检测不到保险丝电流时,JTAG功能就会失效,且这种加密方式是硬件方式的加密,一旦保险丝熔断,JTAG功能就永久失效了,无法再通过JTAG口访问单片机,从而保证了单片机内代码的安全。
给出MSP320的熔断条件
表2 保险丝熔断条件及参数
---------------------------------------------------------
保险丝电参数 min nor max
熔断时单片机供电电压VCC(fb)/V 2.5 3.3 3.6
熔断时施加在TDI/TCLK端的电压Vfb/V 6 6.5 7
熔断时施加在TDI/TCLK端的电流Ifb/mA 100
熔断时间tfb/ms 1
---------------------------------------------------------
并设计硬件电路与软件控制熔断
TI给人感觉不光是简单的卖芯片那么简单,往往随之伴随的有完整的应用方案、源代码、设计文档。Cortex系列的StellarisWare、MSP430的外设驱动库、Grace外设配置代码生成总给人眼前一亮的感觉。用TI 的MCU开发可以越来越专心于应用,而非复杂的寄存器配置。前年用到MSP430F149时,还是像玩PIC一样根据手册一个一个写外设寄存器。最近看到Grace的代码成生,试用了一下太清爽了。
给个链接大家可以看看,不过TI目前没有做到整个系列的完全支持,期待TI继续的更新。
[[View:http://www.deyisupport.com/cfs-file.ashx/__key/CommunityServer-Discussions-Components-Files/55/0602.MSP430-_005FD1530B7A8F5E_.zip:550:0]
我是在校大学生,学习MSP430的新手。
这个文件夹中的程序都是我写过的一些简单的程序,作为学习MSP430的一些参考程序,希望对刚接触MSP430的成员能够有所帮助。
里头的程序都是基于g2553编写的。很实用的一些小程序。
说实话,我还是一个学习MSP430的新手,但是,早在接触MSP430之前,我就久仰MSP430的大名,它更是凭借着出色的性能,超低的功耗,成为老师、同学眼中项目开发的不二选择。 现在,我也试着去接触MSP430,最大的感触就是它的低功耗,特别的省电,很适合在终端的使用,而且16位的技术,有能带来相对于51系列单片机更好的性能,更加认定是移动终端、移动设备的不二选择。
还有一点要说明一下,MSP430的上手不是很难,不会像其它的开发产品一样难以学懂,而且还有很多有关MSP430的文献、资料,内容特别的丰富,有关MSP430的开发系统,配套软件也很齐全,这无疑说明了一点:MSP430绝对有着十分美好的前景。
如今,我也踏上了学习MSP430旅途,有了先辈们如此良好的积淀,只要敢于吃苦、敢于创新,我相信一定会取得优秀的成果!
MSP430原理图:
这是之前在学长的指导和帮助下,自己试着焊接的MSP430学习板:
这是有关MSP430说明、开发等其它相关文件,我在网上找到的,觉得都挺不错的:
这是网盘的下载地址:
http://www.kuaipan.cn/file/id_40304802034362485.htm
另外,所带的附件是参加电赛的学长送给我的,我觉得很有价值就附在上面了。
刚开始用单片机就用的是51的单片机,新手了解的不是很多,做的东西不是怎么太理想,后来听同学说msp430,这个单片机的功耗要比51的低的多,现在他们做项目设计都用的是msp430 ,于是自己开始专注于msp430,工欲善其事,必先利其器,板子都是问同学借的,有了基础核心,还得有外围支持么
软件software-dl.ti.com/.../index_FDS.html
学习资料www.ideyi.org/.../article_1077_300138.html
msp430精品讲座dl.21ic.com/.../msp430-rar-ic-18354.html
别人的经验(值得借鉴)bbs.21ic.com/icview-356111-1-1.html
还有编程用的c语言pan.baidu.com/.../link
msp430是一块具有精简指令集,超低功耗的单片机。我个人也十分喜欢。
对于初学来说,编程有点迷茫。一分不错的资料会有很大的帮助。这是在TI官网的https://www.deyisupport.com/question_answer/f/55/t/2808.aspx#7482
应该说,我在看完这些,并在网上找了些教程后,逐渐的学习,对于它的语言工具,代码产生,目标支持等等有了些了解。
我以前是做软件开发的,最近才转到单片机方面,属于菜鸟级别,在基本概念也不清楚的情况下,是下面这个文档给了我很多启发,让我逐渐了解MSP430,并编写简单的程序,如今分享出来,希望帮助到和我类似的人。。。
我是最近刚刚参加完TI杯的选手,学过MSP430F149,比少时要求用LAUNCHPAD感觉还是比较生疏的,刚开始学习MSP430时有很多不懂的呢,在网站上一直看视频资料学习。
由于以前一直学的F149的,比赛后又没LAUNCHPSD了,所以想要一个LAUNCHPAD学习学习~~~~~
视频学习连接:http://edu.21ic.com/
·
上传一点平时学习MSP430的资料~见附件,顺便参加一下活动拿一个Launchpda学习学习。
MSP430F5438时钟测试引脚的使用例程 http://dl.21ic.com/download/aclk-mclk-smclk-done-zip-ic-106525.html
附件打包:
MSP430葵花宝典.zip
这个zip传不上来··不知道为什么····截个图····
做为一个MSP430的新手,从8BIT单片机积累来的学习经验,首先要从芯片的datasheet开始:http://www.ti.com/lit/ds/slas439f/slas439f.pdf
看数据手册,从中了解芯片的各种功能:如AD ,定时器,时钟等普通功能。bootstrap loader等特殊功能。
想用C语言编程,下面网址的资料一定要下载来看一下
https://www.deyisupport.com/question_answer/f/55/t/2808.aspx#7482
下一步,该找个例子练下手了,自己从头写代码对新手来说有点难,还是找别人的例子看一看,改一改,慢慢开始吧,附件就是一个不错的例子。
然后多多练习,在做自己的方案的时候不要再用51了!现在有更先进的16位单片可以选择,快速 ,低功耗。
前一段时间参加了TI杯模拟电子系统专题模拟邀请赛,处理器要求在MSP430G2553、MSP430FR5739及MSP430F5529中选择,于是下载了一些关于它们的资料,对于大部分人来说MSP430G2553是再熟悉不过了,而另两款属于新推出的开发板,特别是MSP430F5529,属于F55xx系列 MCU ,为能量收集、无线传感以及自动抄表基础设施 (AMI) 等应用提供了业界最低工作功耗的集成 USB、更大的内存和领先的集成技术。板上的测试代码很强大,开发板上集成多路电源选择、RF射频接口、 microSD Card 插槽 、齿轮电位器、电容触摸屏、三轴坐标加速度计、LCD等,测试代码把所有外设集合起来,组成的系统菜单界面好,显示效果很绚丽,还有游戏。。。。
废话不多说,附上MSP430F5529和MSP430F5529的资料:
MSP430F5529:
http://www.ti.com.cn/cn/lit/ug/slau330a/slau330a.pdf
http://www.ti.com.cn/cn/lit/ml/slau339/slau339.pdf
http://www.ti.com.cn/cn/lit/ug/zhcu033/zhcu033.pdf
MSP430FR5739
http://www.ti.com.cn/cn/lit/ds/symlink/msp430fr5739.pdf
http://www.ti.com.cn/cn/lit/ug/slau272a/slau272a.pdf
自己初学MSP430,写了一个UART程序,分享分享
#include "msp430x16x.h" //430寄存器头文件
#include "Uart.h" //串口通讯程序库头文件
char str[] = "UartWriteChar 函数工作正常!"; //ROM中一个字符串
/****************************************************************************
* 名 称:ClkInit
* 功 能:时钟系统初始化 MCLK为8MHz,SMCLK为1MHz
* 入口参数:无
* 出口参数:无
****************************************************************************/
void ClkInit()
{
char i;
BCSCTL1 &= ~XT2OFF; //打开XT2振荡器
IFG1&=~OFIFG; //清除振荡错误标志
while((IFG1&OFIFG)!=0)
{
for(i=0;i<0xff;i++);
IFG1&=~OFIFG; //清除振荡错误标志
}
BCSCTL2 |= SELM_2+SELS+DIVS_3; //MCLK为8MHz,SMCLK为1MHz
}
/****************************************************************************
* 名 称:main主程序
* 功 能:设置串口,输出信息,从串口读计算机键盘输入数据,测试串口收发
* 入口参数:无
* 出口参数:无
****************************************************************************/
void main()
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
char chr; //串口测试中,收到的字节
//串口初始化之前必须调用此函数,SMCLK设为1M,9600以下波特率可以不调用
ClkInit();
UartInit(38400,'n',8,1);//串口初始化,设置成38400bps,无校验,8位数据,1位停止
_EINT();
UartWriteStr(str);
UartWriteChar(0x0d); //发送"换行"(\r)"
UartWriteChar(0x0a); //发送"回车"(\n)"
UartWriteStr("下面测试串口收发函数\r\n");
while(1) //串口测试
{
chr=UartReadChar(); //收1字节
UartWriteChar(chr); //将收到的数据返回
}
}
#include <msp430x16x.h>
#include "Uart.h"
/***********************************宏定义*********************************/
#define UxCTL U0CTL
#define UxRCTL U0RCTL
#define UxTCTL U0TCTL
#define UxBR0 U0BR0
#define UxBR1 U0BR1
#define UxMCTL U0MCTL
#define UxRXBUF U0RXBUF
#define UxTXBUF U0TXBUF
#define UxME U0ME
#define UxIE U0IE
#define UxIFG U0IFG
#define UTXEx UTXE0
#define URXEx URXE0
#define URXIEx URXIE0
#define UTXIEx UTXIE0
#define UARTxTX_VECTOR UART0TX_VECTOR
#define UARTxRX_VECTOR UART0RX_VECTOR
#define UARTON P3SEL |= 0X30 // P3.4,5 = USART0 TXD/RXD
/**************************************************************************/
char TxFlag=1;
char RxFlag=0;
/****************************************************************************
* 名 称:abs
* 功 能:求绝对值
* 入口参数:i:整数
* 出口参数:int 求得的绝对值
****************************************************************************/
int abs(int i)
{
return (i>=0?i:(-i));
}
/***************************************************************************
* 名 称:SetBaudRateRegisters
* 功 能:根据时钟 波特率设置对应寄存器
* 入口参数:
* clk: 所选时钟频率(如:32768)
* baud: 波特率 (300~115200)
* 出口参数:无
* 范 例: SetBaudRateRegisters(32768,9600)//用时钟频率32768产生9600的波特率
****************************************************************************/
void SetBaudRateRegisters(long clk,long baud)
{
int n = clk / baud; //整数波特率
char mSum = 0; //Σmi
int txEr0; //对应位为0时错误率
int txEr1; //对应位为1时错误率
char i = 0; //循环计数
UxBR1 = n >> 8; //高8位
UxBR0 = n & 0xff; //低8位
UxMCTL = 0;
//循环 比较错误率大小 设置UxMCTL
for(;i < 8;i++)
{
txEr0 = 100 * baud * ((i + 1) * n + mSum) / clk - 100 * (i + 1);
txEr1 = 100 * baud * ((i + 1) * n + mSum + 1) / clk - 100 * (i + 1);
if(abs(txEr1) < abs(txEr0))
{
mSum++;
UxMCTL |= (1<<i);
}
}
}
/****************************************************************************
* 名 称:UartInit()
* 功 能:初始化串口。设置波特率等
* 入口参数:
* baud: 波特率 (300~115200)
parity: 奇偶校验位 ('n'=无校验 'p'=偶校验 'o'=奇校验)
datsBits: 数据位位数 (7或8)
stopBits: 停止位位数 (1或2)
* 出口参数:返回值为1时表初化成功,为0表示参数有错误
* 范 例: UartInit(9600,'n',8,1) //设成9600bps,无校验,8位数据,1位停止位
UartInit(2400,'p',7,2) //设成2400bps,偶校验,7位数据,2位停止位
****************************************************************************/
char UartInit(long baud,char parity,char dataBits,char stopBits)
{
long int brclk; //波特率发生器时钟频率
UxCTL |= SWRST; //初始
//时钟源设置
UxTCTL &=~ (SSEL0+SSEL1); //清除之前的时钟设置
if(baud<=9600) //
{
UxTCTL |= SSEL0; //ACLK,降低功耗
brclk = 32768; //波特率发生器时钟频率=ACLK(32768)
}
else
{
UxTCTL |= SSEL1; //SMCLK,保证速度
brclk = 1000000; //波特率发生器时钟频率=SMCLK(1MHz)
}
//------------------------设置波特率-------------------------
if(baud < 300||baud > 115200) //波特率超出范围
{
return 0;
}
SetBaudRateRegisters(brclk,baud); //设置波特率寄存器
//------------------------设置校验位-------------------------
switch(parity)
{
case 'n':case'N': UxCTL &=~ PENA; break; //无校验
case 'p':case'P': UxCTL |= PENA + PEV; break; //偶校验
case 'o':case'O': UxCTL |= PENA; UxCTL &=~ PEV; break; //奇校验
default : return(0); //参数错误
}
//------------------------设置数据位-------------------------
switch(dataBits)
{
case 7:case'7': UxCTL &=~ CHAR; break; //7位数据
case 8:case'8': UxCTL |= CHAR; break; //8位数据
default : return(0); //参数错误
}
//------------------------设置停止位-------------------------
switch(stopBits)
{
case 1:case'1': UxCTL &= ~SPB; break; //1位停止位
case 2:case'2': UxCTL |= SPB; break; //2位停止位
default : return(0); //参数错误
}
UARTON; //端口使能
UxME |= UTXEx + URXEx; //发送 接收使能
UCTL0 &= ~SWRST; // Initialize USART state machine
UxIE |= URXIEx + UTXIEx; // Enable USART0 RX interrupt
return(1); //设置成功
}
/****************************************************************************
* 名 称:UartLpm
* 功 能:串口收/发等待过程中,将时钟系统的部分时钟该关掉,休眠省电
* 入口参数:无
* 出口参数:无
* 说 明: 若与其他外设的时钟冲突,可注释掉该函数,但会增加功耗。
****************************************************************************/
void UartLpm()
{
if(UxTCTL&SSEL0) LPM3; //若以ACLK 作时钟,进入LPM3休眠(仅打开ACLK)
else LPM0; //若以SMCLK作时钟,进入LPM0休眠(不关闭SMCLK)
}
/****************************************************************************
* 名 称:UartWriteChar
* 功 能:向串口写一个字节数据
* 入口参数:c: 待发送的一字节数据
* 出口参数:无
* 说 明: 在等待发送完毕的过程中,CPU会休眠
****************************************************************************/
void UartWriteChar(char c)
{
while (TxFlag==0) UartLpm(); // 等待上一字节发完,并休眠
TxFlag=0; //
UxTXBUF=c;
}
/****************************************************************************
* 名 称:UartReadChar
* 功 能:从串口读取1字节数据
* 入口参数:无
* 出口参数:收到的一字节数据
* 说 明: 如果串口没有数据,会一直等待。等待过程中,CPU会休眠
****************************************************************************/
char UartReadChar()
{
while (RxFlag==0) UartLpm(); // 收到一字节?
RxFlag=0;
return(UxRXBUF);
}
/****************************************************************************
* 名 称:UartWriteStr
* 功 能:向串口写一个字符串
* 入口参数:s:要写入的字符串
* 出口参数:无
* 说 明: 如果没有到 NULL 继续写入字符
****************************************************************************/
void UartWriteStr(char *s)
{
while(*s)
{
UartWriteChar(*s++);
}
}
/****************************************************************************
* 名 称:UartRx
* 功 能:串口接收中断,每接收到1字节会发生一次中断
****************************************************************************/
#pragma vector=UARTxRX_VECTOR
__interrupt void UartRx()
{
RxFlag=1;
__low_power_mode_off_on_exit();
}
/****************************************************************************
* 名 称:UartTx
* 功 能:串口发送中断,每发完1字节会发生一次中断
****************************************************************************/
#pragma vector=UARTxTX_VECTOR
__interrupt void UartTx ()
{
TxFlag=1;
__low_power_mode_off_on_exit();
}
#ifndef __UART_H
#define __UART_H
char UartInit(long baud,char parity,char dataBits,char stopBits);
void UartWriteChar(char c);
void UartWriteStr(char *s);
char UartReadChar();
#endif /* __UART_H */
《MSP430 系列超低功耗16位单片机原理与应用》北航的,写的挺好的,我比较欣赏,内容深入浅出,不错,是入门的好教材,我就是看这本书
以前一直听说msp430单片机,而且是以超低功耗著称,自己真正接触是在参加TI竞赛,废话不多说,分享一下对自己有非常帮助的学习资料,特别是对初学者。有的来自TI官网,有的来自论坛,再次附上链接和附件,相互分享自己的资料非常好,大家一起进步,共同探讨,希望对大家有所帮助。
http://www.ti.com.cn/product/cn/msp430f149?247SEM
从入门到进阶的都有
MSP430 系列Flash型超低功耗16位单片机
我貌似一次只能发一个附件,打包上传试了好几次都失败了,所以才一次一次的传,值得欣慰的是总算传好了,希望管理员不要把我的当做刷屏垃圾贴删了。
最后一天了,再来分享些文档吧,这几天一边要用飞思卡尔的单片机HCS08又要学MSP430,准备做些项目,所以在看关于电机的方面的,今天也先分享个官方的电机驱动的教程吧:http://www.ti.com.cn/ww/motor_drive_and_control_solutions/motor_control_controller_msp430_16_bit_mcu.htm
然后是自己写的些程序啊什么的,有兴趣可以下来看下~东西在附件里。
今天最后一天了,应该还来得及吧。
只能上传一个附件,我就打包一起发了。这里把里面的文件列出来供大家参考。
CCS教程.doc
G2实验板指导.pdf
MSP430系列单片机实用C语言.pdf
G2452.rar —— 这是G2452的datasheet等
MSP430G2xx2 Code Examples.rar —— 实验例程
MSP430G2xx3 Code Examples.rar —— 实验例程
通过最后的实验例程,可以很快上手,做流水灯之类的小程序,可以根据例程自己编写所需的程序。
一直一直都用邮箱关注着呢,这个活动很好,也下载了几个文档,308楼的很好呢,我也发几个近来看到的资料,非常希望能获得这次的开发板,希望能用开发板上面的仿真器做些和电脑通讯的实验,以后也说不定能用在项目上面,第二次发了请管理员多多关照~!
初学者,希望获得套件。
TI 官方网站MSP430资料的链接:
这里有套件的芯片所有资料,入门、开发必备查询资料。
文档对我设计的帮助:
在入门时,需要看这里,找芯片性能、引脚定义、片上资源等信息;
希望在学会后,能在这里找到对我设计有用的支持,谢谢!
感谢大家踊跃的参与!由于此次活动参与人数近700人,我们需要时间进行评选,请大家耐心等待。我们尽快在9月23号那周公布结果。
再次感谢大家对TI官方论坛的关注!