您的位置 首页 元件

具体解读:MSP430G2553单片机串口通讯

详细解读:MSP430G2553单片机串口通信-以MSP430G2553来说,具有内置的16位定时器、16k的FLASH和512B的RAM,以及一个通用型模拟比较器以及采用通用串行通信接口的内置通信能

  MSP430的不同类型,其串行通讯作业形式是相同的。以MSP430G2553为例进行阐明。MSP430G2553是20个引脚的16位单片机。具有内置的16位守时器、16k的FLASH和512B的RAM,以及一个通用型模仿比较器以及选用通用串行通讯接口的内置通讯才干。此外还具有一个10位的模数(A/D)转换器。这儿咱们具体阐明MSP430G2553串口通讯。其引脚排布如图1.1所示。其功用表如表1.1所示。

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

  

  

  

  一、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来使能发送和承受中止。

  三、寄存器及其功用

  

  (1)操控寄存器UxCTL

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

  

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

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

  

  (3)接纳操控寄存器URCTL

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

  

  

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

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

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

  

  接纳缓存寄存移位寄存器最终接纳的字符,可由用户拜访,读接纳缓存能够复位接纳时发生的各种过错标志、RXWAKE位和URXIFGx位。假如传输7位数据,接纳缓存内容右对齐,最高位为0。当收接和操控条件为真时,接纳缓存装入当时接纳到的字符。

  

  发送缓存含有当时要由发送器发送的数据。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 (!(IFG2UCA0TXIFG)); // 等候发送完结

  //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;

  }

  /******智能操控作业室*******/

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/179181.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部