详细解读:MSP430G2553单片机串口通信

发布者:SparklingStar最新更新时间:2020-10-09 来源: elecfans关键字:MSP430G2553  单片机  串口通信 手机看文章 扫描二维码
随时随地手机看文章

  MSP430的不同型号,其串行通讯工作模式是一样的。以MSP430G2553为例进行说明。MSP430G2553是20个引脚的16位单片机。具有内置的16位定时器、16k的FLASH和512B的RAM,以及一个通用型模拟比较器以及采用通用串行通信接口的内置通信能力。此外还具有一个10位的模数(A/D)转换器。这里我们详细说明MSP430G2553串口通信。其引脚排布如图1.1所示。其功能表如表1.1所示。


  串行通讯模块主要由三个部分组成:波特率生成部分、发送控制器以及接收控制器。如图1.2所示。

  MSP430G2553,MSP430G2553串口通信

  MSP430G2553,MSP430G2553串口通信

  MSP430G2553,MSP430G2553串口通信

  一、UART模式

  在异步模式下,接收器自身实现帧的同步,外部的通讯设备并不使用这一时钟。波特率的产生是在本地完成的。异步帧格式由1个起始位、7或8个数据位、校验位(奇/偶/无)、1个地址位、和1或2个停止位。一般最小帧为9个位,最大为13位。


  (一)UART的初始化

  单片机工作的时钟源来自内部三个时钟或者外部输入时钟,由SSEL1、SSEL0,以决定最终进入模块的时钟信号BRCLK的频率。所以配置串行通讯的第一步就是选择时钟。

  通过选择时钟源和波特率寄存器的数据来确定位周期。所以波特率的配置是串行通讯中最重要的一部分。波特率设置用三个寄存器实现:UxBR0(选择控制器0):波特率发生器分频系数低8位。UxBR1(选择控制器1):波特率发生器分频系数高8位。UxMCTL数据传输的格式,以及数据传输的模式是通过配置控制寄存器UCTL来进行设置。


  接收控制部分和发送控制部分。首先需要串行口进行配置、使能以及开启中断。串口接收数据一般采用中断方式,发送数据采用主动发送。当接收到一个完整的数据,产生一个信号:URXIFG0=1(类似于51单片机的接收中断标志位),表示接收完整的数据。当数据正在发送中,UTXIFG0=1,此时不能再发送数据,必须等当前数据发送完毕(UTXIFG0=0)才能进行发送。


  二、SPI模式

  USTAR下的SPI模式有如下特点:

  1、SPI模式支持3线和4线模式;

  2、支持主机与从机模式;

  3、接受和发送有各自独立的发送移位寄存器和缓冲器;

  4、接受和发送都有独立的中断能力;

  5、移位时钟的极性和相位可编程;

  6、字符长度可以是7位或者8位。


  SPI工作在全双工下,即主机发送的同时也接收数据,传输的速率由编程决定。4线SPI模式用附加数据线,允许从机数据的发送和接收。其信号如下: SIMO:从进主出,主机模式下,数据输出;从机模式下,数据输入。SOMI:从出主进,主机模式下,数据输入,从机模式下,数据输出。UCLK:USART SPI模式时钟,信号有主机输出,从机输入。CLK时钟只能由主机提供。STE:从机模式发送接收允许控制脚,用于4线模式。


  (一)SPI初始化

  SPI当中不需要波特率调整,所以UxMCTL=0x0000,SPI的初始化及其复位和UART公用一套寄存器。


  在初始化或者重新配置USART的SPI时,必须按照以下顺序进行:

  1、UxCTL寄存器的第0位SWRST置位;

  2、在SWRST置位的条件下,初始化所有的SPI寄存器,包括UxCTL寄存器;

  3、通过置位模块使能寄存器MEx的URXEx和UTXEx位使能SPI的接受和发送使能模块;

  4、通过软件复位UxCTL寄存器的第0位SWRST;

  5、通过中断使能寄存器IEx的URXIEx和UTXIEx来使能发送和接受中断。


  三、寄存器及其功能

  MSP430G2553,MSP430G2553串口通信

  (1)控制寄存器UxCTL

  控制寄存器内的信息决定了USART的基本操作。如:选择通信协议、通信模式和校验位。在SWRST复位使USART复位操作禁止前,各位应根据选择的模式进行编程。

  MSP430G2553,MSP430G2553串口通信

  (2)发送控制寄存器UxTCTL(未作说明的位未用)

  寄存器UxTCTL控制与发送操作相关的USART硬件。

  MSP430G2553,MSP430G2553串口通信

  (3)接收控制寄存器URCTL

  URCTL 控制与接收操作相关的USART硬件并保存由最新写入URXBUF的字符引起的出错状况和唤醒条件。若FE、PE、OE、BRK、RXERR 或 RXWake 中的任何一位置位,通过接收下一个字符不能使其复位。它们的复位要通过访问接收缓存URXBUF、USART的软件复位SWRST、系统复位PUC或用指令修改。

  MSP430G2553,MSP430G2553串口通信

  MSP430G2553,MSP430G2553串口通信

  (4)波特率选择寄存器和调制控制寄存器

  波特率产生器利用波特率选择寄存器UxBR1和UxBR0,以及调整控制寄存器UxMCTL,来产生串行数据流的位定时。UxBR0、UxBR1这两个寄存器是用于存放波特率分频因子的整数部分,若波特率发生器的输入频率BRCLK不是所需波特率的整数倍,带有小数,则整数部分写入UxBR寄存器,小数部分则由调整寄存器UxMCT的内容反映。波特率由以下公式计算:

  波特率=BRCLK/(UBR+(M7+M6+ …M0)/8)

  MSP430G2553,MSP430G2553串口通信

  接收缓存存放移位寄存器最后接收的字符,可由用户访问,读接收缓存可以复位接收时产生的各种错误标志、RXWAKE位和URXIFGx位。如果传输7位数据,接收缓存内容右对齐,最高位为0。当收接和控制条件为真时,接收缓存装入当前接收到的字符。

  MSP430G2553,MSP430G2553串口通信

  发送缓存含有当前要由发送器发送的数据。UTXIFG 标志表示UTXBUF已准备好接收下一个要发送的字符。将数据写入UTXBUF初始化发送功能。如果发送移位寄存器为空或即将为空,数据的发送立即开始。只有当UTXBUF为空时,数据才能写入缓存,否则可能发送不可预料的字符。

  例子:

  #include“msp430G2553.h”

  #include “in430.h”

  void UartPutchar(unsigned char c);

  unsigned char UartGetchar();

  unsigned char temp=0;

  unsigned char number[2]={0};

  void main( void )

  {

  WDTCTL = WDTPW + WDTHOLD; // Stop WDT

  BCSCTL1 = CALBC1_1MHZ; // Set DCO

  DCOCTL = CALDCO_1MHZ;

  P1DIR|=BIT6;

  P1OUT&=~BIT6;

  P1SEL = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXD

  P1SEL2 = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXD

  UCA0CTL1 |= UCSSEL_2; // 选择时钟BRCLK

  UCA0BR0 = 106; // 1MHz 9600

  UCA0BR1 = 0; // 1MHz 9600

  UCA0MCTL = UCBRS2 + UCBRS0; // 波特率=BRCLK/(UBR+(M7+.。.0)/8)

  UCA0CTL1 &= ~UCSWRST;

  // 初始化顺序:SWRST=1设置串口,然后设置SWRST=0,最后设置相应中断

  IE2 |= UCA0RXIE; // 使能接收中断

  while(1)

  {

  //UartPutchar(9);

  // display_int(temp,0);

  __delay_cycles(10000);

  }

  }

  /**********************************UART接收中断*************************/

  #pragma vector=USCIAB0RX_VECTOR

  __interrupt void USCI0RX_ISR(void)

  {

  //while (!(IFG2&UCA0TXIFG)); // 等待发送完成

  //UCA0TXBUF = UCA0RXBUF; // TX -》 RXed character

  temp=UCA0RXBUF;

  }

  /******************************UART发送字节函数*************************/

  void UartPutchar(unsigned char c)

  {

  while(!(IFG2 & UCA0TXIFG)); //待发送为空

  UCA0TXBUF=c;

  IFG2 &=~UCA0RXIFG;

  }

  /*********************************UART接收字节数据******************/

  unsigned char UartGetchar()

  {

  unsigned char c;

  while(!(IFG2 & UCA0RXIFG)); //等待接收完成

  c=UCA0RXBUF;

  IFG2 &=~UCA0TXIFG;

  return c;

  }

  /******智能控制工作室*******/

关键字:MSP430G2553  单片机  串口通信 引用地址:详细解读:MSP430G2553单片机串口通信

上一篇:msp430头文件分析
下一篇:基于MSP430F42x的工业信号产生与测量仪表的设计

推荐阅读最新更新时间:2024-11-13 10:14

基于MSP430F149单片机的直流电子负载设计
摘要鉴于电子负载在电源设备测试中的广泛应用,研制了一台以MSP430F149单片机为核心处理器的直流电子负载。单片机MSP430F149内设ADC12模块对负载电压、电流信号实时采样,并外设10位D/A转换芯片TLC5615输出模拟电压信号驱动MOS管,内部控制采用BP神经网络算法,实现定电流、定电压、定电阻和定功率4种工作模式。经安装测试,系统调整时间 3 s,电压电流测量误差均 ±0.5%,且跟踪速度快、测量精度高,并具有一定的经济实用价值。 在电子、通信、能源等领域中,需要对电源稳压器、蓄电池和功率电子元件等设备进行测试。在进行传统的负载测试时,需要用电阻、电容和电感或是其串并联组合来模拟实际负载情况,该测试方法其负载调
[单片机]
基于MSP430F149<font color='red'>单片机</font>的直流电子负载设计
单片机开发板是什么?
单片机开发板是什么呢?简单来说,它是指集成了许多单片的外围器件,如LED 灯,数码管,按键,行列式按键,步进电机,伺服电机,液晶显示等等用来学习,实验,开发等使用的板子,是一种实验设备(单片机编程)。 单片机开发板是在正式批量生产产品前,对产品进行设计和开发时使用的单片机,当我们对理论知识的学习有了一定的基础,单片机开发板就是我们实践的工具(pic单片机),通过单片机开发板我们可以做一些实验,从而掌握所学的知识。实际应用中,单片机开发板有以下优势: (1)利用一个单片机开发板就可以编制不同的程序实现各种各样的功能,不用为了一个实验焊一块电路板了. (2)在开单片机发板上设计,调试好程序,就能方便地移植到产品上,只是有时要作适
[单片机]
安森美扩展蓝牙低功耗微控制器(MCU)系列到汽车无线应用
安森美扩展蓝牙低功耗微控制器(MCU)系列到汽车无线应用 NCV-RSL15结合行业最低功耗以及最新安全加密技术,用于车辆接入、胎压监测等 2023 年 3 月15 日—领先于智能电源和智能感知技术的安森美 推出采用蓝牙低功耗联接的超低功耗车规级无线微控制器。随着传感器数量和车载通信的增加,汽车制造商越来越倾向于使用无线连接技术,以减少布线成本和重量,NCV-RSL15是其理想选择 。另一方面,传感器部署数量上升可能会导致网络攻击次数随之增加,加剧安全问题。使用这款新型微控制器可解决这类安全隐患。 虽然胎压监测系统(TMS)和其他感知应用中的传感器和一般功能清单不断增长,但功耗预算却没有增加。同时,现在有些应用要求
[汽车电子]
安森美扩展蓝牙低功耗<font color='red'>微控制器</font>(<font color='red'>MCU</font>)系列到汽车无线应用
Atmel推出全新8位mega168 AVR MCU
加快低功耗应用的开发速度,新一代megaAVR为各级设计人员开发的智能联网设计提供低功耗特性、更多模拟功能和引脚兼容性 全球微控制器(MCU)及触控技术解决方案商Atmel公司 (NASDAQ:ATML)近日在2014慕尼黑国际电子展上推出了新一代8位megaAVR® MCU系列,配备4KB至16KB闪存,并提供新一代增强特性,其中包括更多模拟功能以及面向最新的低功耗消费、工业、白色家电和物联网应用的特性。 自mega168系列于2002年推出以来,Atmel已售出了近10亿件该系列MCU,该系列已成为当今市场上最受欢迎的Atmel 8位AVR MCU。8位megaAVR MCU适用于从爱好者、DIY和创
[单片机]
ST汽车微控制器Stellar系列产品细节公布,架构升级
半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)公布了其创新的汽车微控制器Stellar(恒星)系列的进一步产品细节,介绍了新微控制器如何确保多个独立实时应用软件的运行可靠性和确定性,这是当今汽车行业面临的最严峻挑战之一,因为新汽车架构的复杂性需要把多个独立应用系统整合到一个功能强大的高集成度MCU上,并且通常涉及确定性和虚拟化二选一的问题。而Stellar可以做到两者兼备。 作为这种新型控制器的先驱产品,Stellar高集成度MCU具有卓越的计算能力,可大幅简化多源软件并行确定性运行,同时确保最高的安全性和处理性能。这些功能符合下一代网联汽车的电气/电子(E/E)体系
[嵌入式]
ST汽车<font color='red'>微控制器</font>Stellar系列产品细节公布,架构升级
单片机快速启动的实现
嵌入式系统对功能、可靠性、成本、体积、功耗等均有严格要求,以ARM体系结构为基础的各种RISC微处理器具有灵活的特性和强大的性能,在嵌入式系统中得到了广泛的应用。---S3C2410是三星公司基于ARM920T设计的一款处理器,在开发基于S3C2410的系统的过程中,如何让系统快速稳定地启动是一个重要问题。嵌入式系统的资源有限,程序通常都是固化在ROM中运行。但在实际应用中,为提高系统的实时性,加快代码的执行速度,系统启动后程序往往要被搬移到RAM中,因为RAM的存取速度要比ROM快得多,这样大大提升系统的性能。启动程序要完成的任务包括:硬件初始化,系统存储系统的配置,复制二级中断向量表。 启动程序过程 系统硬件初始化 系统
[单片机]
<font color='red'>单片机</font>快速启动的实现
iSupply公布2012 MCU市场排名,瑞萨榜首
根据研调机构iSuppli统计资料,2012年MCU全球市场排名中,车用电子大厂瑞萨(Renesas)以4.05亿美元稳坐MCU市场第一名宝座,飞思卡尔(Freescale)则以2.34亿美元位居第二,至于以8位元MCU为主的MicroChip,2012年营收达2.10亿元,名列第三,意法半导体MCU营收则达1.32亿美元,晋升全球第四大MCU厂,而触控厂爱特梅尔(Atmel)则列居第五位,营收达到1.20亿美元。 而英飞凌(Infineon)、恩智浦(NXP)、德州仪器(TI)、东芝(Toshiba)及三星电子(Samsung Electronics)则分别盘据全球MCU厂排行榜中的六到十名。
[单片机]
单片机软件SPI和硬件SPI读写SD卡,TF卡测试程序
软件SPI和硬件SPI读写SD卡,TF卡测试程序 SD卡模块和SD卡 软件SPI读写SD卡程序 测试平台:STC89C516和STC12C5A60S2 内存卡大小:128MB和2GB 晶振:均为12MHz 硬件SPI读写SD卡程序 测试平台:STC12C5A60S2 内存卡大小:128MB和2GB 晶振:12MHz (89C52没有硬件SPI) 为了尽可能的不给后来者留坑,这些代码我在发出来之前反复测试过,确保无误, 还有就是关于SD卡程序的读写我在程序中写的很清楚,这里不再赘述 单片机源程序如下: #include public.h #include SD.h //测试平台:STC89C516和STC12C
[单片机]
<font color='red'>单片机</font>软件SPI和硬件SPI读写SD卡,TF卡测试程序
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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