学习MSP430G2553总结

2020-03-09来源: eefocus关键字:MSP430G2553

个人感觉TI做的这块430就是一坨屎,内部时钟根本不稳,而且连datesheet都没有,但作为比赛指定的东西我们还是学了,这个连51都不如的16位单片机费了我四天时间把内部的模块给调了一遍,但是我调IIC时一直调不出来连时钟都没有,估计是做这块垃圾是连这个模块都没有吧,而且还写的那么复杂,连份像样的技术文档都没有,看的是别的技术文档,真是蛋疼无比,好了牢骚就发这么多,下面开始讲讲这块片子。


首先介绍下MSP430G2553的时钟,这块芯片的时钟源是四个,时钟线是4个;时钟源我们就不说了,一般都是默认的选择内部的DCO作为时钟源,然后通过一系列的嫁接到MCLK SMCLK上,至于为什么这块芯片上不用锁相环的问题我深表不解,这个解释看来只有TI知道,是要低功耗呢,还是因为成本呢?建议大家以后学就学M3内核的STM32吧,低功耗而成本低还很稳。


至于MSP430的时钟寄存器的配置呢,看看内部的时钟图后我们就理解,其实只要配置两个寄存器DCOCTL BCSCTL1

这两个配置的值我还是在一份不知道什么时候的文档里面找到的,DCOCTL中的7-5位是频率选择,后面5位是调节器;BCSCTL1的低4位是频率范围的选择。下面贴出来时钟的配置贴图,如图1

图1 时钟选择图


这块芯片上的时钟你只能配置4M左右,大了都不稳,时钟的信号就是正弦了,你可以通过P1.4脚配置成时钟观察。


时钟介绍结束。


下面说说这块芯片的IO功能,这块芯片管脚只有20个,但是为了实现复杂的功能,所以这块芯片有芯片引脚功能选择寄存器(以P1口为例,P2是一样的,只是里面的P1改为P2),P1SEL P1SEL2;和其他芯片一样这块也有芯片的方向寄存器P1DIR,输入寄存器P1IN,输出寄存器P1OUT,上拉下拉使能寄存器P1REN,寄存器就这些,但是要注意的是输出寄存器P1OUT,这个寄存器在管脚配置成输入时是用于选择上拉下拉电阻的极性的。下面介绍功能:

P1DIR :每位对应一个管脚

        0  输入

        1  输出

P1OUT : 每位对应一个管脚

        0   输出低电平   下拉

        1   输出高电平   上拉

注意:这里的上拉下拉功能,如果你设置成输出,记住千万要关闭上拉下拉使能寄存器,因为资料明确说在P1REN使能时,P1OUT为上拉下拉极性选择,并没有说这些在选择输出时无效,千万要注意噢。

P1IN :每位对应一个管脚

       0  输入时低电平

       1  输入为高电平

注意:这个管脚在输出的时候然后反应管脚的IO电平,这个我测试过,而且这个寄存器的写时是会增加电流消耗的。

P1REN :每位对应一个管脚

      0  禁用

      1  使能

P1SEL P1SEL2的功能选择如图2.


图2

注意:这些里面的选择一定要正确,不然是出不来想要的结果的。



下面介绍串口,因为串口是经常使用的,所以调试串口是很重要的,MSP430这块芯片把spi uart集成一块了,命名曰USCI,虽然我不知道为什么,但我感觉真是很不舒服。对于这个所谓的USCI模块我要说说的是它里面说有B模块,但我们都没有调出来,估计是TI没做这个,也就是说只有A,所以你要是使用uart 就不能再使用spi了,呵呵,也就是调试方法也要改一改了。前面是闲话,下面不介绍寄存器,然后贴出来,uart的程序。

void uart_init(void)

{

  UCA0CTL1_bit.UCSWRST = 1;/*禁止*/

  

  P1DIR_bit.P1 = 0;/*配置接受管脚为输入,上拉*/

  P1OUT_bit.P1 = 1;

  P1REN_bit.P1 = 1;

  P1SEL_bit.P1 = 1;/*配置为第二功能*/

  P1SEL2_bit.P1 = 1;

  

  P1DIR_bit.P2 = 1;/*配置发送管脚为输出*/

  P1SEL_bit.P2 = 1;/* 配置为第二功能*/

  P1SEL2_bit.P2 = 1;

  

  UCA0CTL1_bit.UCSSEL0 = 1;/*选择时钟为SMCLK*/

  UCA0CTL1_bit.UCSSEL1 = 1;

  

  /* 波特率为9600*/

  /* UCABR=BRCLK/baud*/

  UCA0BR0 = 114;

  UCA0BR1 = 0;

  

  UCA0CTL1_bit.UCSWRST = 0;/*复位*/

  

  return;

}


这段是初始化代码。

注意:在文档里面说明了初始化时必须先把UCA0CTL1的UCSWRST位置位,这个是为什么呢?原来是UCSWRST这个位是初始化和复位的,这个时候uart是不工作的,所以我们可以认为我们在操作这个模块时需要控制寄存器失效,所以这个时候写入控制寄存器是安全的,不会出现乱码什么的!



void uart_write(unsigned char uart_w_date)

{

  /*发送数据,并等待发送完成*/

  UCA0TXBUF = uart_w_date;

  //while(UCA0STAT_bit.UCBUSY);

}


这段是写代码。

如果你写代码时下面的那个语句不屏蔽的话,那么程序也会运行。这就是为什么我没删掉的原因,嘿嘿,见谅,但是最好还是不用的好,因为在调试其他代码是它在这条语句上死循环过。


void uart_read(unsigned char *uart_r_date)

{

  /*接受完成,并接受数据*/

  while(UCA0STAT_bit.UCBUSY);

  *uart_r_date = UCA0RXBUF; 

}


这段是读代码。

首先判断下UART的设备是否忙碌,如果忙碌说明这个设备在执行读或者写,这时的读写是错误的,所以要等待下。当然这时因为我是在扫描查询来的,如果是中断就可以不用了,对了这里提一下,上面的初始化没有初始化接受中断,代码在下面

/*

*       中断的方式接受初始化

*/

void uart_enable_interrupt(void)

{

  /*接受中断使能*/

  IE2_bit.UCA0RXIE = 1;

  /*接收中断标志清零*/

  IFG2_bit.UCA0RXIFG = 0;

}

这是中断使能代码。

uart很简单,就不多介绍了,上面的程序是验证过的。


下面介绍下定时,也就是传说中的timer模块,在这块芯片中由于感觉资料不对,所以内部的就不说了,直接说说自己的理解,如果觉得有理大家就这样理解,如果感觉没道理,希望大家多多指教。


这个模块的基础构成是定时器单元也就是计数单元,然后才是输入捕捉,输出比较;既然定时器计数单元是基础,那就先说这个单元,定时器单元首先要有时钟了,时钟可以配置的,所以就有个寄存器的某些位是做这个工作的, 这就是TA0CTL中的TASSEL0  TASSEL1 ,时钟的分频也是在这个寄存器中,分频比是是由ID0 ID1决定的,时钟确定后就要记时钟的数了,但是计数是数值加一还是减一呢,这是由这个寄存器的MC0 MC1决定的;然后时钟数对应着时间了,所以就是定时器了;计数的数值也是存储在寄存器中,这个寄存器就是TA寄存器,这是个16位的寄存器,这就是基础单元------计数单元,剩下的工作都是在这个单元上建立的。


首先是定时单元,这个功能就是比较CCR0的数值和TA的数值,如果相等了,说明定时时间到了,TAIFG就会置位的,如果中断使能了,就发生中断。

然后是输出比较,这个主要是产生PWM波了,产生PWM波是通过CCR0,CCRx设定的,这个模块和计数的方向有关的,具体和计数模式有关;增模式时,如图3.连续模式如图4.up/down模式如图5.

图3 增模式

图4 连续模式

图 5 up/down模式


这些功能是通过寄存器TACCTLx中的CAP位决定的。

关键字:MSP430G2553 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic490849.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:msp430 timerA interrupt
下一篇:msp430g2553单片机学习心得

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

msp430g2553硬件IIC
#include "msp430g2553.h"#include "uart.h"unsigned char RX_Data;void I2C_Init(unsigned char SA);//I2C初始化,SA为从器件地址void I2C_ReadData(unsigned char address);//I2C读出某一地址的数据unsigned char I2C_WriteData(unsigned char address,unsigned char data);//I2C向某一地址写入数据void delay(void);void I2C_Init(unsigned char SA
发表于 2020-04-29
MSP430G2553的时钟设置简析
基本时钟系统的寄存器DCOCTL-DCO控制寄存器DCOxDCO频率选择控制1MODxDCO频率校正选择,通常令MODx=0注意:在MSP430G2553上电复位后,默认RSEL=7,DCO=3,通过数据手册查得DCO频率大概在0.8~1.5MHz之间。BCSCTL1-基本时钟控制寄存器1XT2OFF不用管,因为MSP430G2553内部没有XT2提供的HF时钟XTS不用管,默认复位后的0值即可DIVAx设置ACLK的分频数00 /101 /210 /411 /8RSELxDCO频率选择控制2BCSCTL2-基本时钟控制寄存器2SELMxMCLK的选择控制位00 DCOCLK01 DCOCLK10 LFXT1CLK
发表于 2020-04-28
MSP430G2553的时钟设置简析
MSP430G2553电子时钟实验
用msp430g2553控制1602液晶显示时间,并可以通过按键设置时间,我做了正计时和倒计时两种模式/*********************************************************************msp430g2553与1602引脚连接情况* PIN1 --> 地* PIN2 --> VCC(一定要接+5V)* PIN3 -->仿真时悬空,实际电路 2K电阻-->地 (电阻可以是500-2k的,改变电阻可以改变字符显示的亮度,电阻接不好会导致什么都不显示)* PIN4 --> RS --> P1.6* PIN5 --> R/W -->
发表于 2020-04-28
launchpad MSP430G2553 软件UART和硬件UART及跳帽的设置
缘起在使用launchpad MSP430G2553的板子之前,我用了launchpad MSP430G2452的板子。令我感到头疼的是,本来我想用launchpad串口通信做一个简单地可以通过超级终端和电脑交互的项目,但结果是launchpad MSP430G2452 并没有完整的UART模块,所谓的串口通信是通过定时器A和软件代码配合所产生的软件UART,于是恼火的我放弃了launchpad MSP430G2452 又拿来了一块launchpad MSP430G2553 因为之后我知道它具有完整的硬件UART。问题的产生拿到launchpad MSP430G2553 后我发现板子的P1.1和P1.2 引脚并没有标注TXD
发表于 2020-04-19
launchpad MSP430G2553 软件UART和硬件UART及跳帽的设置
MSP430G2553与MSP430F5336系列单片机总结[2]
在研究定时器与捕捉比较器之前,我们可以先讨论一下,他们能做什么?1.定时,产生固定频率的波形,或者使LED等按照固定时间闪亮2.产生Timer0定时中断,在一定的时间间隔执行某些功能,例如超声波传感器的使用,可以设置超声波测量距离的测量频率3.可以测量脉冲或PWM波的的高低电平时间或频率4.脉冲计数5.捕捉比较模式可以产生PWM波6.可以产生PPM波7.可以测量PPM波的各通道占空比 所以定时器是单片机中使用频率很高的资源,不要随便使用定时器的IO口直接做输入输出使用,这样有点浪费。先对MSP430G2553进行分析,通过用户手册和Datasheet,我们可以知道G2553只有定时器A,没有定时器B,并且没有定时器A2
发表于 2020-04-14
MSP430G2553与MSP430F5336系列单片机总结[0]——概述
最近用了MSP430系列的两款单片机,一块是MSP430G2553,市面上有卖,管脚和功能比较少,但是网上的例程和资料很多,比较适合MSP430系列的单片机上手;另一块F5336系列有引脚和功能都较多,是我们自己买芯片做的,外部时钟XT1接了32768HZ的晶振,XT2接了20Mhz的晶振,因为项目需要先后接触了这两块板子,对于MSP430系列的编程也有了一定的了解,所以简单总结一下。先简单说一下我对MSP430系列单片机的理解,不同的单片机各有其特色,51适用范围比较广泛,Arduino容易上手编程简单,而MSP430最大的特点就是低功耗,适用于一些有特定要求的工业领域,它的内部有不同的时钟源选择,与其对应也有不同的低功耗模式
发表于 2020-04-14
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved