MSP430g2553串口通信

MSP430g2553串口通信
MSP430g2553串口通信

MSP430g2553串口通信

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

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

一、UART 模式

在异步模式下,接收器自身实现帧的同步,外部的通讯设备并不使用这一时钟。波特率的产生是在本地完成的。异步帧格式由1个起始

位、7或8个数据位、校验位(奇/偶/无)、1个地址位、和1或2个停止位。一般最小帧为9个位,最大为13位。

图1.2 串行通讯模块内部结构图

图1.1 MSP430G2553引脚图

(一)UART的初始化

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

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

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

Void UART_init()

{

WDTCTL = WDTPW + WDTHOLD;

P1SEL|= 0x06;//I/O口的功能寄存器配置。为1时作为模块输出或者输出,0

为端口输入或者输出。配置P1.1,P1.2为串行口。

P2DIR=0x04;//串口发送端为输出,串口接收端为输入。0为输入,1为输出

U0CTL |= CHAR; // 配置控制寄存器,数据类型为8位。

U0TCTL |= SSEL0; // 选择时钟UCLK= ACLK。

U0BR0 = 0x45; // 分频系数的高8位,8MHz 时钟下波特率为115200

U0BR1 = 0x00; // 分频系数的低8位。

U0MCTL = 0x00; // 波特率的调整。

U0CTL&= ~SWRST;//系统复位。只有对SWRST 复位,USART 才能重新被允许。

而接收和发送允许标志URXE和UTXE不会因SWRST 而

更改。

ME1 |= UTXE0 + URXE0; //使能USART0 TXD/RXD模块USART中特有的使能配置。

IE1 |= URXIE0;//使能USART0 接收中断

_EINT();//开启全部中断。

_BIS_SR(LPM0_bits + GIE); // 初始化完毕,进入睡眠状态。等待工作。该程序直接调用。

}

发送数据函数:

__interrupt void usart0_rx (void)

{

while (!(IFG1 & UTXIFG0)); // 判断发送缓冲区是否为空。

TXBUF0 = RXBUF0; // 将数据发送到串口。

}

二、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来使能发送和接受中断。void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗。

P1SEL |= 0x07; // 配置P1.0、P1.1、P1.2模块输出。

UCTL = CHAR + SYNC + MM; // 工作模式以及数据格式的设置,CHAR为1时为

8-bit,0时为7位,SYNC控制通讯模式,1为

SPI模式,0为UART模式。

UTCTL = CKPL + STC+ SSEL0+ SSEL1; // 置位SSEL0与SSEL1时钟的类型,11则

为SMCLK;CKPL为时钟极性控制位,0时UCLKI信号

与UCLK信号极性相同,1时UCLKI信号与UCLK信号极性相反。

UBR0 = 0x02; // SPICLK = SMCLK/2,2分频。波特率的设置。

UBR1 = 0x00;

UMCTL = 0x00;//SPI通讯中,不需要使用波特率调整器。

UCTL &= ~SWRST; // 复位。

ME1 |= USPIE0; // SIP模块接收与发送允许使能

IE1 |= URXIE0 + UTXIE0; //接收与发送中断使能

_BIS_SR(LPM4_bits + GIE); // 初始化完毕,进入睡眠模式

}

__interrupt void SPI0_rx (void)

{

P1OUT = RXBUF0; // 向P1OUT送入数据

}

__interrupt void SPI0_tx (void)

{

unsigned int i;

i = P1IN;

i = i >> 4;

TXBUF0 = i; // 数据发送。

}

三、寄存器及其功能

通信模块寄存器如下:

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

表3.2 发送控制寄存器UxCTL

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

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

表3.3 发送控制寄存器UxTCTL

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

表3.4 接收控制寄存器URCTL

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

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

寄存器各位如下:

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

(6

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

表1.1 MSP430G2553引脚功能表

串口通信UART(msp430g2553)

#include "io430.h" #include "in430.h" #include "shumaguan.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(); } } /**********************************UART接收中断********************************/ #pragma vector=USCIAB0RX_VECTOR __interrupt void USCI0RX_ISR(void) { //while (!(IFG2&UCA0TXIFG)); // 等待发送完成

MSP430串口通信讲解

串行通信接口是处理器与外界进行数据传输最常用的方式之一。顾名思义,串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。与并行通信相比,串行通信速度较慢,但占用更少的I/O 资源,只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。 串行通信可以分为同步通信和异步通信两种类型。如果带有同步时钟,则称为同步串行 通信,如常用的 SPI 和 I2C 接口就属于同步串行通信接口。如果没有同步时钟,依靠严格的时间间隔来传输每一比特,则称为异步串行通信。MSP430 系列单片机有两种串行通信接口,较早的 USART 模块和较新的 USCI 模块。 同步通信方式,是把许多字符组成一个信息组,这样,字符可以一个接一个地传输。但是,在每组信息(通常称为信息帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。同步方式下,发送方除了发送数据,还要传输同步时钟信号,信息传输的双方用同一个时钟信号确定传输过程中每1位的位置。 在异步通信方式中,两个数据字符之间的传输间隔是任意的,所以,每个数据字符的前后都要用一些数位来作为分隔位。

MSP430G2553单片机USCI模块原理图 串口通信所需配置: 1、时钟选择——以SMCLK时钟频率为1MHz为例。 ①选择SMCLK为串口通信频率。(P95页) ②设置SMCLK时钟频率为1MHz。 需要设置的寄存器:UCA0CTL1;(P95页)。

2、IO口定义为第二功能,即串口发送接收端口。 需要设置的寄存器:P1SEL|=BIT1+BIT2;,P1SEL2|=BIT1+BIT2;(中文P44页)。 2、数据传输格式

MSP430g2553串口通信

MSP430g2553串口通信 MSP430的不同型号,其串行通讯工作模式是一样的。以MSP430G2553为例进行说明。MSP430G2553是20个引脚的16位单片机。具有内置的16位定时器、16k 的FLASH 和512B 的RAM ,以及一个通用型模拟比较器以及采用通用串行通信接口的内置通信能力。此外还具有一个10位的模数(A/D)转换器。其引脚排布如图1.1所示。其功能表如表1.1所示。 串行通讯模块主要由三个部分组成:波特率生成部分、发送控制器以及接收控制器。如图1.2所示。 一、UART 模式 在异步模式下,接收器自身实现帧的同步,外部的通讯设备并不使用这一时钟。波特率的产生是在本地完成的。异步帧格式由1个起始 位、7或8个数据位、校验位(奇/偶/无)、1个地址位、和1或2个停止位。一般最小帧为9个位,最大为13位。 图1.2 串行通讯模块内部结构图 图1.1 MSP430G2553引脚图

(一)UART的初始化 单片机工作的时钟源来自内部三个时钟或者外部输入时钟,由SSEL1、SSEL0,以决定最终进入模块的时钟信号BRCLK的频率。所以配置串行通讯的第一步就是选择时钟。 通过选择时钟源和波特率寄存器的数据来确定位周期。所以波特率的配置是串行通讯中最重要的一部分。波特率设置用三个寄存器实现:UxBR0(选择控制器0):波特率发生器分频系数低8位。UxBR1(选择控制器1):波特率发生器分频系数高8位。UxMCTL 数据传输的格式,以及数据传输的模式是通过配置控制寄存器UCTL来进行设置。 接收控制部分和发送控制部分。首先需要串行口进行配置、使能以及开启中断。串口接收数据一般采用中断方式,发送数据采用主动发送。当接收到一个完整的数据,产生一个信号:URXIFG0=1(类似于51单片机的接收中断标志位),表示接收完整的数据。当数据正在发送中,UTXIFG0=1,此时不能再发送数据,必须等当前数据发送完毕(UTXIFG0=0)才能进行发送。程序实例如下: Void UART_init() { WDTCTL = WDTPW + WDTHOLD; P1SEL|= 0x06;//I/O口的功能寄存器配置。为1时作为模块输出或者输出,0 为端口输入或者输出。配置P1.1,P1.2为串行口。 P2DIR=0x04;//串口发送端为输出,串口接收端为输入。0为输入,1为输出 U0CTL |= CHAR; // 配置控制寄存器,数据类型为8位。 U0TCTL |= SSEL0; // 选择时钟UCLK= ACLK。 U0BR0 = 0x45; // 分频系数的高8位,8MHz 时钟下波特率为115200 U0BR1 = 0x00; // 分频系数的低8位。 U0MCTL = 0x00; // 波特率的调整。 U0CTL&= ~SWRST;//系统复位。只有对SWRST 复位,USART 才能重新被允许。 而接收和发送允许标志URXE和UTXE不会因SWRST 而 更改。 ME1 |= UTXE0 + URXE0; //使能USART0 TXD/RXD模块USART中特有的使能配置。 IE1 |= URXIE0;//使能USART0 接收中断 _EINT();//开启全部中断。 _BIS_SR(LPM0_bits + GIE); // 初始化完毕,进入睡眠状态。等待工作。该程序直接调用。 } 发送数据函数: __interrupt void usart0_rx (void) { while (!(IFG1 & UTXIFG0)); // 判断发送缓冲区是否为空。 TXBUF0 = RXBUF0; // 将数据发送到串口。 }

MSP430单片机串口通信详解

MSP430单片机串口通信详解 #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; }

msp430串行通讯

MSP430串行通讯 MSP430的不同型号,其串行通讯工作模式是一样的。以MSP430G2553为例进行说明。MSP430G2553是20个引脚的16位单片机。具有内置的16位定时器、16k 的FLASH 和512B 的RAM ,以及一个通用型模拟比较器以及采用通用串行通信接口的内置通信能力。此外还具有一个10位的模数(A/D)转换器。其引脚排布如图1.1所示。其功能表如表1.1所示。 串行通讯模块主要由三个部分组成:波特率生成部分、发送控制器以及接收控制器。如图1.2所示。 一、UART 模式 在异步模式下,接收器自身实现帧的同步,外部的通讯设备并不使用这一时钟。波特率的产生是在本地完成的。异步帧格式由1个起始 位、7或8个数据位、校验位(奇/偶/无)、1个地址位、和1或2个停止位。一般最小帧为9个位,最大为13位。 图1.2 串行通讯模块内部结构图 图1.1 MSP430G2553引脚图

(一)UART的初始化 单片机工作的时钟源来自内部三个时钟或者外部输入时钟,由SSEL1、SSEL0,以决定最终进入模块的时钟信号BRCLK的频率。所以配置串行通讯的第一步就是选择时钟。 通过选择时钟源和波特率寄存器的数据来确定位周期。所以波特率的配置是串行通讯中最重要的一部分。波特率设置用三个寄存器实现:UxBR0(选择控制器0):波特率发生器分频系数低8位。UxBR1(选择控制器1):波特率发生器分频系数高8位。UxMCTL 数据传输的格式,以及数据传输的模式是通过配置控制寄存器UCTL来进行设置。 接收控制部分和发送控制部分。首先需要串行口进行配置、使能以及开启中断。串口接收数据一般采用中断方式,发送数据采用主动发送。当接收到一个完整的数据,产生一个信号:URXIFG0=1(类似于51单片机的接收中断标志位),表示接收完整的数据。当数据正在发送中,UTXIFG0=1,此时不能再发送数据,必须等当前数据发送完毕(UTXIFG0=0)才能进行发送。程序实例如下: Void UART_init() { WDTCTL = WDTPW + WDTHOLD; P1SEL|= 0x06;//I/O口的功能寄存器配置。为1时作为模块输出或者输出,0 为端口输入或者输出。配置P1.1,P1.2为串行口。 P2DIR=0x04;//串口发送端为输出,串口接收端为输入。0为输入,1为输出U0CTL |= CHAR; // 配置控制寄存器,数据类型为8位。 U0TCTL |= SSEL0; // 选择时钟UCLK= ACLK。 U0BR0 = 0x45; // 分频系数的高8位,8MHz 时钟下波特率为115200 U0BR1 = 0x00; // 分频系数的低8位。 U0MCTL = 0x00; // 波特率的调整。 U0CTL&= ~SWRST;//系统复位。只有对SWRST 复位,USART 才能重新被允许。 而接收和发送允许标志URXE和UTXE不会因SWRST 而 更改。 ME1 |= UTXE0 + URXE0; //使能USART0 TXD/RXD模块USART中特有的使能配置。 IE1 |= URXIE0;//使能USART0 接收中断 _EINT();//开启全部中断。 _BIS_SR(LPM0_bits + GIE); // 初始化完毕,进入睡眠状态。等待工作。该程序直接调用。 } 发送数据函数: __interrupt void usart0_rx (void) { while (!(IFG1 & UTXIFG0)); // 判断发送缓冲区是否为空。 TXBUF0 = RXBUF0; // 将数据发送到串口。 }

串行通信技术实验报告

串行通信技术实验报告 姓名学号实验班号实验机位号50 一、实验目的 1.了解异步串行通信原理 2.掌握MSP430异步串行通信模块及其编程方法 二、必做实验任务 1.了解MSP430G2553实验板USB转串口的通信功能,掌握串口助手的使用 拆下单片机的功能拓展板,将主板上的eZ430-FET板载仿真器的BRXD,BTXD收发信号端口连接,通过串口调试助手即可实现串口的自发自收功能。接线如下图: 思考:异步串行通信接口的收/发双方是怎样建立起通信的? 答:异步串行通信的收发双方进行通信,在硬件与软件方面都有要求。 ①在硬件方面需要两条线,分别从一方的发送端口到另一方的接收端口,从而实现“异步”; ②需要一个通信协议,确保通信正确;

③在这个实验中由于是自发自收,因此收发两方均为PC机,所以两条线其实是同一条线,而且由于是自发自收所以信号格式也是统一的,因此可以实现自发自收功能。 2.查询方式控制单片机通过板载USB转串口与PC机实现串行通信 本实验通过编程实现单片机和PC机之间的通信,信号格式为波特率9600bps,无校验,8位数据,先低后高,1个停止位,字符串以@结尾,单片机将接收到的字符保存在RAM 中,收到@字符之后再将所储存的字符发给PC机。 连线方式如下图: 实验程序如下: #include "io430.h" unsigned char string[]; int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; void USCIA0_int() { UCA0CTL1|=UCSWRST; //swrst=1; //置P1.1、P1.2为USCI_A0的收发引脚 P1SEL|=BIT1+BIT2; P1SEL2|=BIT1+BIT2; //时钟SMCLK选择为1.0MHz if (CALBC1_1MHz!=0xff) {BCSCTL1=CALBC1_1MHZ; DCOCTL=CALDCO_1MHZ;} //设置控制寄存器 UCA0CTL1|=UCSSEL_2+UCRXEIE; //设置波特率寄存器,采用低频波特率方式 UCA0BR1=0; UCA0BR0=104; UCA0MCTL=UCBRS_1; UCA0CTL1&=~UCSWRST; //swrst=0 } While(1) { unsigned int j;

基于MSP430G2553的SPI串行协议

基于MSP430G2553的SPI串行协议 一、概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元(MCU) 上叫作同步串行端口(Synchronous Serial Port) 的模块(Module)来实现的, 它允许MCU 以全双工的同步串行方式, 与各种外围设备进行高速数据通信. SPI 主要应用在EEPROM, Flash, 实时时钟(RTC), 数模转换器(ADC), 数字信号处理器(DSP) 以及数字信号解码器之间. 它在芯片中只占用四根管脚(Pin) 用来控制以及数据传输, 节约了芯片的pin 数目, 同时为PCB 在布局上节省了空间. 正是出于这种简单易用的特性, 现在越来越多的芯片上都集成了SPI技术.

二、特点 1. 采用主-从模式(Master-Slave) 的控制方式 SPI 规定了两个SPI 设备之间通信必须由主设备(Master) 来控制次设备(Slave). 一个Master 设备可以通过提供Clock 以及对Slave 设备进行片选(Slave Select) 来控制多个Slave 设备, SPI 协议还规定Slave 设备的Clock 由Master 设备通过SCK 管脚提供给Slave 设备, Slave 设备本身不能产生或控制Clock, 没有Clock 则Slave 设备不能正常工作. 2. 采用同步方式(Synchronous)传输数据 Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性(CPOL) 和时钟相位(CPHA) 控制着两个SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的. 3. 数据交换(Data Exchanges) SPI 设备间的数据传输之所以又被称为数据交换, 是因为SPI 协议规定一个SPI 设备不能在数据通信过程中仅仅只充当一个"发送者(Transmitter)" 或者"接收者(Receiver)". 在每个Clock 周期内, SPI 设备都会发送并接收一个bit 大小的数据, 相 当于该设备有一个bit 大小的数据被交换了.

msp430g2553-串口调试测试程序-寡人-发送与接收

/****************************************************************************** 本程序是单片机MSP430G2553 P1.2----------------------------UCA0TXD 串口发送端 P1.1----------------------------UCA0RXD 串口接受端 P1.0----------------------------红灯指示 P1.6----------------------------绿灯指示 利用主辅时钟为1MHZ,串口波特率9600, 波特率:1000000/9600=104 UCA0BR0 = 104; // 1MHz 9600 UCA0BR1 = 0; // 1MHz 9600 现象: 功能(1)看到P1.0---红灯指示;P1.6---绿灯指示循环闪烁。 同时电脑串口调试助手(设置波特率:9600,无校验,8位数据位,1位停止位) 不断显示,0x00,0x01,0x40,0x41。 功能(2)打开电脑串口调试助手,发送区有数据待发送时,在接受区将看到相应的数据。 ******************************************************************************/ #include "msp430g2553.h" #define uint unsigned int #define uchar unsigned char void Delay_us(uint us) // 延时us 前提是f=1MHZ(不建议用该延时,不是很精确) { uint i; for(i=0;i

msp430g2553串口终端实现标准化输出函数Printf函数

/ ******************************************************************** * Function : 该文件可用作模块儿化编程作为MSP430G2553的调试文件,该文* 件实现 * 了在串口终端实现标准化输出函数Printf函数。 * ********************************************************************/ #include #include #include #include "uart.h" / ******************************************************************** *静态函数声明 * ********************************************************************/ static void Vs_Printf(char *s,char *format,va_list arg); static void IntToString(int temp,char *pchar); / ******************************************************************** * 函数名: UartInit * 函数功能:初始化msp430g2553的USCI寄存器,使其工作在UART模式 * 形参:无 * 返回值:无 * ********************************************************************/ void UartInit() {

msp430g2553例程大全

MSPG2553 例程 1. //************************************************************************* ***** // LaunchPad Lab2 - Software Toggle P1.0, // // MSP430G2xx2 // ----------------- // /|\| XIN|- // | | | // --|RST XOUT|- // | | // | P1.0|-->LED // //************************************************************************* ***** #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF) { while(1); // If calibration constants erased, trap CPU!! } // Configure Basic Clock BCSCTL1 = CALBC1_1MHZ; // Set range DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation BCSCTL3 |= LFXT1S_2; // Set LFXT1 P1DIR = BIT6; // P1.6 output (green LED) P1OUT = 0; // LED off IFG1 &= ~OFIFG; // Clear OSCFault flag

基于MSP430G2553的简易信号发生器(DOC)

基于MSP430G2553的简易信号发生器 浙江工业大学 摘要:本作品基于TI的LaunchPad设计了一款简易信号发生器,选用TI的MSP430G2553单片机。通过单片机加外围LCD12864、DAC0832及TL082放大电路,实现了可产生正弦波、锯齿波、三角波、方波的简易信号发生器,且频率可调。 关键词:MSP430G2553 DAC0832 正弦波锯齿波三角波 一、作品基本功能介绍

2 在信号产生和处理方面。通过MSP430G2553内部的TA 定时器,外加DAC0832产生四种波形,在DA 输出后,通过一个由运算放大器TL082和精密可调电位器组成的运算放大电路,以实现信号的增益控制。最后在 50负载电阻上输出电压。系统总体框图如图1.1所示。 图1.1 系统总体框图 3 人机交互方面。本作品使用三个独立按键来控制菜单选项,其功能如表1.2所表1.2 按键功能说明 二、系统硬件和软件说明 1 硬件构成 本作品使用LCD12864作为人机交互模块,由于MSP430G2553的I/O 口很少,所以通过对LCD 的进行串行数据输入,以节约I/O 口。其连接如图1.2所示。 +5V 图1.2 LCD12864硬件连接 由于是通过MSP430G2553输出数字量的信号来产生波形,因此需要用到

DA将数字量转换为模拟量。考虑到单片机的I/O口数量,选用8位的DA来进行数模转换。硬件如图1.3所示,DAC0832采用直通工作方式,节省I/O口控制引脚。 +5V P1.0-P1.3 P1.4-P1.7 +5V I OUT 图1.3 DAC0832 直通方式硬件连接 由DAC输出模拟量后,由于波形的幅值太小,因此还需要进行幅值的放大。其中R3是精密可调电位器,方便用户对信号的幅度进行调节。50Ω的电阻可以保证整个信号发生器的输出阻抗为50Ω。信号幅度调节和输出部分电路如图1.4所示。 图1.4 幅值放大的硬件电路 2 软件系统 整个系统的软件主要有主函数、定时器TA中断函数、按键中断函数三个大

MSP430G2串口通信

#include"msp430G2553.h" #include "in430.h" voidUartPutchar(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)); // 等待发送完成

相关文档
最新文档