MSP430G2553串行通信UART和SPI

合集下载

msp430g2553_UART

msp430g2553_UART

#include "msp430g2553.h"#include "UART.h"#include "N5110.h"#define TXRX_FIFO 1#define AddressUse 1#ifndef uchar#define uchar unsigned char#endif#ifndef uint#define uint unsigned int#endifuchar get_bug = 0;/****************************************************************延时***************************************************************/ void UART_delay(uint x){uint a, b;for(a=x; a>0; a--)for(b=110; b>0; b--);}/***************************************************************** *名称:UART_Set()*功能:UART串口设置*入口参数:baud: 波特率1200 2400 4800 9600(默认) 19200 38400 57600 * mctl: 波特率修整* data: 数据位,8:8位,7:7位,默认8位* jiouwei: 奇偶位,'n':无(默认),'o':奇校验,'e':偶校验* stop: 停止位,2:2位停止位,其他均为默认的1位* R_T: 收发模式,1:收;2:发;3:收发*出口参数:无*使用范例:UART_Set(9600,2,8,'n',1,3)*****************************************************************/ void UART_Set(uint baud,uchar mctl,uchar data,char jiouwei,uchar stop,uchar R_T) {UCA0CTL1 |=UCSWRST; //软件复位if(baud<=9600){UCA0CTL1 |= UCSSEL_1; //ACLK}{UCA0CTL1 |= UCSSEL_2; //SMCLK}switch(baud){case 1200: UCA0BR0 = 0X1B;//1200波特率//波特率计算UCA0BR1 = 0X6B; //波特率=BRCLK/N=(UBR+(M7+M6+M5+M4+M3+M2+M1+M0)/8)break; //例如:BRCLK=8MHz,要产生BITCLK=115200Hz,分频器的分频系数为8000 / 115.2 =69.44444444case 2400: UCA0BR0 = 0X0D;//2400波特率//所以设置分频器的计数值为69。

MSP430串口通信讲解

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、数据传输格式本次实验数据格式设置为:1位起始位8位数据位无奇偶校验1为停止位需要设置的寄存器:UCA0CTL0(P94页)3、设置波特率,以9600为例。

需要设置的寄存器:UCA0BR0,UCA0BR1,UCA0MCTL。

MSP430G2553串口程序

MSP430G2553串口程序
P1SEL |= 0X6;
P1SEL2 |= 0X6;//P1.1,1.2 UART selected
UCA0CTL1 &= ~UCSWRST; // clear UCSWRST
IE2 = UCA0RXIE+UCA0TXIE; // enable interupts
***********************************/
/******************************************************************
*串口测试程序,使用aclk作为usci模块时钟源
*波特率为9600@32768Hz(外部晶振)
*目前该代码能正常运行
*******************************************************************/
while(i)
{
i--;
j=65535;
while(j) j--;
}
UartSend(k);
UartSend(' ');
P1OUT ^= BIT6+BIT0;
k+=0x01;
if(k >= 0x7e){
//BCSCTL3 晶振外壳已接地,相当于有电容接入
}
void UartSend(char ch)
{
UCA0TXBUF=ch;
while(!TxFlag) LPM0;
TxFlag = 0;
}
#pragma vector = USCIAB0TX_VECTOR
__interrupt void UARTTX (void)
IFG2 &=~ UCA0RXIFG;

电设工作小结之——MSP430G2553学习笔记—2

电设工作小结之——MSP430G2553学习笔记—2

电设工作小结之——MSP430G2553学习笔记——2接上一篇:(四),ADC101,ADC10是十位的AD,在g2553上有A0~A7八个可以外接的AD通道,A10接到片上的温度传感器上,其他的通道都接在内部的VCC或GND上。

因为是10为的AD所以计算公式如下:2 ,ADC参考电压的选择:ADC的参考电压可以为:由ADC控制寄存器0 ADC10CTL0控制。

但是要提高ADC的精度的话,尽量不要用内部的参考电压,最好外接一个比较稳定的电压作为参考电压,因为内部的产生的参考电压不是特别稳定或精度不是特别的高。

例如我在使用时遇到的情况如下:Vref设为2.5V 但实际的值大概为2.475V,选择VCC VSS作为参考,用电压表测得大概为3.58V 还是不小的偏差的。

另外,在有可能的情况下,尽量采用较大的VR+和VR-,以减小纹波对采样结果的影响。

3,ADC10的采样方式有:单通道单次采样,单通道多次采样,多通道单次采样,多通道多次采样。

4,DTC:因为ADC10只有一个采样结果存储寄存器ADC10MEM,所以除了在单通道单次采样的模式下,其他的三个模式都必须使用DCT,否则转换结果会不停地被新的结果给覆盖。

DTC是转换结果传送控制,也就是转换结果可以不用CPU的干预,就可以自动地存储在指定的存储空间内。

使用这种方式转换速度快,访问方便,适用于高速采样模式中。

DTC的使用可以从下面的例子中很容易看明白:#include <msp430g2553.h>#include "ser_12864.h"uchar s1[]={"DTC:"};uchar s2[]={"2_cha_2_time_DTC"};void ADC_init(){ADC10CTL1 = CONSEQ_3 + INCH_1; // 2通道多次转换, 最大转换通道为A1ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE; // ADC10ON, interrupt enabl 参考电压选默认值VCC和VSS//采样保持时间为16 x ADC10CLKs,ADC内核开,中断使能 MSC多次转换选择开//如果MSC置位,则第一次开始转换时需要触发源触发一次,以后的转换会自动进行中断使能//使用DTC时,当一个块传送结束,产生中断//数据传送控制寄存器0 ADC10DTC0设置为默认模式:单传送块模式,单块传送完停止 ADC10DTC1 = 0x04; //数据传送控制寄存器1 4 conversions 定义在每块的传送数目一共采样4次所以单块传送4次//以后就停止了传送因为是两通道的,所以是每个通道采样数据传送2次ADC10AE0 |= BIT0+BIT1; // P1.0 P1.1 ADC option select 使能模拟输入脚A0 A1//不知道为什么,当P10 P11都悬空时,采样值不同,用电压表测得悬空电压不同,但是当都接上采样源的时候,//采样是相同的}void main(void){uint adc_sample[8]={0}; //存储ADC序列采样结果WDTCTL = WDTPW+WDTHOLD;BCSCTL1 = CALBC1_12MHZ; //设定cpu时钟DCO频率为12MHzDCOCTL = CALDCO_12MHZ;P2DIR |=BIT3+BIT4; //液晶的两条线init_lcd();ADC_init();wr_string(0,0,s1);wr_string(0,3,s2);for (;;){ADC10CTL0 &= ~ENC; //ADC不使能其实这句话可以放在紧接着CPU唤醒之后的,因为CPU唤醒了,说明我们想要的//转换数据传送完成了,如果ADC继续转换,那么转换结果也不再传输,是无用的。

MSP430单片机串口通信详解

MSP430单片机串口通信详解

MSP430单片机串口通信详解#include&quot;msp430G2553.h&quot;#include &quot;in430.h&quot;void UartPutchar(unsigned char c);unsigned char UartGetchar();unsigned char temp=0;unsigned char number[2]={0};void main( void ){WDTCTL = WDTPW + WDTHOLD; // Stop WDTBCSCTL1 = CALBC1_1MHZ; // Set DCODCOCTL = CALDCO_1MHZ;P1DIR|=BIT6;P1OUT&=~BIT6;P1SEL = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXD P1SEL2 = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXDUCA0CTL1 |= UCSSEL_2; // 选择时钟BRCLKUCA0BR0 = 106; // 1MHz 9600UCA0BR1 = 0; // 1MHz 9600UCA0MCTL = 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 charactertemp=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串口通信MSP430的不同型号,其串行通讯工作模式是一样的。

msp430多处理器之间的通信方式及协议

msp430多处理器之间的通信方式及协议

msp430多处理器之间的通信方式及协议
MSP430多处理器之间的通信方式主要有以下几种:
1.
串行通信:MSP430多处理器之间可以使用串行通信,如UART、I2C 、SPI等。

2.
并行通信:MSP430多处理器之间可以使用并行通信,如GPIO、DM A等。

3.
无线通信:MSP430多处理器之间可以使用无线通信,如ZigBee、Blu etooth等。

MSP430多处理器之间的通信协议主要有以下几种:
1. CAN:Controller Area
Network(控制器区域网络)是一种局域网技术,用于在汽车、工业控制和其他应用中连接多个设备。

2.
Modbus:Modbus是一种串行通信协议,用于在工业控制系统中连接多个设备。

3.
Ethernet:以太网是一种局域网技术,用于在局域网中连接多个设备。

4.
TCP/IP:TCP/IP是一种网络协议,用于在互联网上连接多个设备。

msp430g2553数据手册中文版

msp430g2553数据手册中文版

28 引脚
24 TSSOP 封
LF,

-
1
DCO,
VLO
20 引脚
16 TSSOP 封

16
20 引脚 PDIP 封装
24
32 引脚 QFN 封装
28 引脚
24 TSSOP 封
LF,

-
1
DCO,
VLO
20 引脚
16 TSSOP 封

16
20 引脚 PDIP 封装
24
32 引脚 QFN 封装
28 引脚
3
MSP430G2x53 MSP430G2x13
ZHCS178E – APRIL 2011 – REVISED JANUARY 2012

器件引出脚配置、MSP430G2x13 和 MSP430G2x53、20 引脚器件、 TSSOP 和 PDIP 封装
DVCC 1 P1.0/TA0CLK/ACLK/A0/CA0 2 P1.1/TA0.0/UCA0RXD/UCA0SOMI/A1/CA1 3 P1.2/TA0.1/UCA0TXD/PUCA0SIMO/A2/CA2 4 P1.3/ADC10CLK/CAOUT/VREF-/VEREF-/A3/CA3 5 P1.4/SMCLK/UCB0STE/UCA0CLK/VREF+/VEREF+/A4/CA4/TCK 6 P1.5/TA0.0/UCB0CLK/UCA0STE/A5/CA5/TMS 7
P2.0/TA1.0 8 P2.1/TA1.1 9 P2.2/TA1.1 10
N20 PW20 (TOP VIEW)
20 DVSS 19 XIN/P2.6/TA0.1 18 XOUT/P2.7 17 TEST/SBWTCK 16 RST/NMI/SBWTDIO 15 P1.7/CAOUT/UCB0SIMO/UCB0SDA/A7/CA7/TDO/TDI 14 P1.6/TA0.1/UCB0SOMI/UCB0SCL/A6/CA6/TDI/TCLK 13 P2.5/TA1.2 12 P2.4/TA1.2 11 P2.3/TA1.0

mps430G2553中文资料

mps430G2553中文资料

时钟
I/O 封装类型
16
512 2x TA3
8
8
512 2x TA3
8
4
256 2x TA3
8
2
256 2x TA3
8
1
256 2x TA3
8
24
32 引脚 QFN 封装
28 引脚
24 TSSOP 封
LF,

-
1
DCO,
VLO
20 引脚
16 TSSOP 封

16
20 引脚 PDIP 封装
24
32 引脚 QFN 封装
引导加 载器 (BSL)
嵌入式 仿真模
块 (EEM)
1
1
1
1
1
1
1
1
1
1
表 1. 提供的选项(1)(2) (接下页)
ZHCS178E – APRIL 2011 – REVISED JANUARY 2012
闪存 (KB)
RAM (B)
Timer_A
COMP_A+ 通道
10 通道 ADC
USCI A0/B0
典型应用包括低成本传感器系统,此类系统负责捕获模拟信号、将之转换为数字值、随后对数据进行处理以进行显 示或传送至主机系统。
1
Please be aware that an important notice concerning availability, standard warranty, and use in critical applications of Texas Instruments semiconductor products and disclaimers thereto appears at the end of this data sheet.

G2553SPI的使用

G2553SPI的使用

Version 1.0
桂电二院科协 斌彬
2013-5-20 11:02:56
while ((IFG2 & UCA0TXIFG) ==0); IFG2 &= ~UCA0TXIFG; UCA0TXBUF = MST_Data;
// Stop watchdog timer // Initialize data values
// 如果未准备好,则等待 // Transmit first character
// MCLK = VLO/8, SMCLK = DCO/8,
BCSCTL1 |= DIVM_3 + DIVA_0 + DIVS_1;// ACLK/4
WDTCTL = WDTPW + WDTHOLD; SPI_Init(); MST_Data = 0x01; SLV_Data = 0x00; While(1) {
中断寄存器和中断标志位
模式选择 1 主机模式 2 从机模式
三线还是 四线模式
时钟和相 位的选择
先发送高位 还是低位
四种时钟源 的选择
初始化 UCSWRST UCSWRST
模式选择 1 UCMST = 1 2 UCMST = 0
MODE_X 1,2,3,4
UCCKPH =0,1 UCCKPL = 0,1
UC7BIT = 0,1
UCSSEL_X 0,1,2,3
UCA0CTL1&= ~UCSWRST
接下来看下 SPI 的初始化吧
void SPI_Init(void)
{
//打开IO口的第二功能
P1SEL |= BIT1 + BIT2 + BIT4;
P1SEL2 |= BIT1 + BIT2 + BIT4;

msp430G2553个人总结

msp430G2553个人总结

MSP430G2553个人总结说明:本手册是个人总结,内部并不完整,内部总结仅供参考。

详情请下载详细数据手册查看总结者:meiger(勿删)一混合信号微处理器:1)特性:*低电源电压范围:1.8—3.6V*运行模式:230Ua(1Mhz,2.2V)*待机模式:0.5Ua*关闭模式:0.1UA*5种节能模式*1UA超快时间从待机模式唤醒*基本时钟模块~具有四种校准频率并高到16Mhz的内部频率~ 内部超低功耗(lf)震荡器~32Khz晶振~外部数字时钟源*两个16位Timer_A,分别即有三个捕捉/比较器寄存器*多达24个支持触摸感的io引脚*通用串口通信接口(USCI)~(uart)~lrda~spi~i2C*用于模拟信号比较或斜列模拟(A/D)比较器*带内部基准、采样与保持的自动扫面的10位AD采样器*欠压检测器*无需外部编译的电压二:MSP430G25553设备有引导加载器(1个)、嵌入式仿真器模块(1个)、闪存)(16)、RAM(512)、Tomer_A(2*TA3)、COMP_A通道(8)、10通道ADC(8)USCI A0/B0(1 )、时钟(LF DOC VLO) 、I/O(24)三:引脚图四:功能图五:端子功能看引脚图,图上标的的比价清楚,表格的看上去是比较难记住的,看引脚如不叫明朗。

六:CPU属性丛約操作模式:有六种操模式,一个运行模式及五种低功耗内模。

一个中断事件能够将器件从任一低功耗模式唤醒、处理请求、并在接收到来自中断程序的返回信号时恢复至低功耗模式•激活模式(AM)–所有时钟处于激活状态•低功耗模式0 (LPM0)–CPU 被禁用–ACLK 和SMCLK 仍然有效,MCLK 被禁用•低功耗模式1 (LPM1)–CPU 被禁用–ACLK 和SMCLK 仍然有效,MCLK 被禁用–如果DCO 不是在激活模式下被使用,则DCO 的dc 生成器被禁用•低功耗模式2 (LPM2)–CPU 被禁用–MCLK 和SMCLK 被禁用–DCO 的dc 生成器保持启用–ACLK 保持激活•低功耗模式3 (LPM3)–CPU 被禁用–MCLK 和SMCLK 被禁用–DCO 的dc 生成器保持启用–ACLK 保持激活•低功耗模式4 (LPM4)–CPU 被禁用–ACLK 被禁用–MCLK 和SMCLK 被禁用–DCO 的dc 生成器保持启用–晶体振荡器被停止七:外间文件映射(寄存器说明寄存器名称)1)ADC10(仅限MSP4320G2X53)ADC数据传输起始地址ADC10SAADC内存ADC10MEMADC控制寄存器1 ADC10CTL1ADC控制寄存器0 ADC10CTL02)Timer1_A3捕捉/比较寄存器TA1CCR2捕捉/比较寄存器TA1CCR1捕捉/比较寄存器TA1CCR0Timer_A寄存器TA1R捕捉/比较控制TA1CCTL2捕捉/比较控制TA1CCTL1捕捉/比较控制TA1CCTL0Timer_A控制TA1CTLTimer_A中断矢量TA1IV3)Timer0_A3捕捉/比较寄存器TA0CCR2捕捉/比较寄存器TA0CCR1捕捉/比较寄存器TA0CCR0Timer_A寄存器TA0R捕捉/比较控制TA0CCTL2捕捉/比较控制TA0CCTL1捕捉/比较控制TA0CCTL0 Timer_A控制TA0CTLTimer_A中断矢量TA0IV4)闪存闪存控制3 FCTL3闪存控制2 FCTL2闪存控制1 FCTL15)看门狗定时器+看门狗定时器控制位WDTTCL 6)USCI_B0USCI_B0发送缓冲器UCB0TXBUF USCI_B0接收缓冲器UCB0RXBUF USCI_B0状态UCB0STATUSCI_B0 I2C中断启动UCB0CIEUSCI_B0位速控制1 UCB0BR1USCI_B0位速控制0 UCB0BR0USCI_B0控制1 UCB0CTL1USCI_B0控制0 UCB0CTL0USCI_B0 I2C从地址UCB0SAUSCI_B0 I2C自由地址UCB0SA 7)USCI_A0USCI_A0发送缓冲器UCA0TXBUF USCI_A0接收缓冲器UCA0RXBUF USCI_A0状态UCA0STATUSCI_A0 I2C中断启动UCA0CIEUSCI_A0位速控制1 UCA0BR1USCI_A0位速控制0 UCA0BR0USCI_A0控制1 UCA0CTL1USCI_A0控制0 UCA0CTL0USCI_A0 I2C从地址UCA0SAUSCI_A0 I2C自由地址UCA0SA 8)ADC10ADC模拟启动1 ADC10AE1ADC模拟启动0 ADC10AE0ADC数据传输控制寄存器1 ADC10DTC1 ADC数据传输控制寄存器0 ADC10DTC0 9)Comparator_A+Comparator_A+端口禁用CAPDComparator_A+控制1 CACTL2Comparator_A+控制0 CACTL1 10)基础时钟系统+基本时钟控制3 BCSCTL3基本时钟控制2 BCSCTL2基本时钟控制1 BCSCTL1DCO时钟频率控制DCOCTL 11)端口P2端口P2选择2 P2SEL2端口P2电阻器使能P2REN端口P2选择P2SEL端口P2中断启动P2IE端口P2中断边沿选择P2IES端口P2中断标志P2IFG端口P2方向P2DIR端口P2输出P2OUT端口P2输入P2IN12)端口P1端口P1择2 P1EL2端口P1阻器使能P1REN端口P1选择P1SEL端口P1断启动P1IE端口P1边沿选择P1IES端口P1断标志P1IFG端口P1向P1DIR端口P1出P1OUT端口P1入P1IN13)特殊功能SFR中断标志2 IFG2SFR中断标志1 IFG1SFR 中断启动2 IE2SFR 中断启动1 IE1八、寄存器控制说明1):Timer_01):TACTLBITS 15----10没有用到BITS 9—8 时钟选择TASSELx00TACLK01ACLK10 SMCLK11 INCLK 是特定于设备的,通常是分配给倒TBCLKIDxBITS 7---6 输入分频器。

msp430g2553串口通信

msp430g2553串口通信

__interrupt void USCI0TX_ISR(void)
{
uint TxByte=0;
if (P1IN & BIT3)
TxByte |= BIT6;
// 如 果 P1.3 输 入 高 电
平,P1.6输出高电平
if (P1IN & BIT4)
TxByte |= BIT0; 平,P1.0输出高电平
#define uint unsigned int
/*******************************************
函数名称:uart_init
功 能:初始化USCI模块
参 数:无
返回值 :无
********************************************/
void uart_init()
{
UCA0CTL1 |= UCSWRST;
//(1)默认为1,可有可

UCA0CTL1 |= UCSSEL_2;
//(2)选择时钟
源CLK = SMCLK
UCA0BR0 = 0x6d;
//(3)设置波特
率32kHz/9600 = 3.41
UCA0BR1 = 0x00; UCA0MCTL = UCBRS1 + UCBRS0; UCBRSx = 3 P1SEL |= BIT1 + BIT2 ; P1.2=TXD P1SEL2 |= BIT1 + BIT2; UCA0CTL1 &= ~UCSWRST; IE2 |= UCA0RXIE + UCA0TXIE; RXD中断 }
void main(void) {
WDTCTL = WDTPW + WDTHOLD;

MSP430G2553寄存器资料讲解

MSP430G2553寄存器资料讲解

MSP430G2553学习笔记常用赋值运算符:清除:&=~ ,置位:|= ,测试:&= ,取反:^= ,看门狗模块:WDT(看门狗)WDTCTL 看门狗定时器控制寄存器15--8 7 6 5 4 3 2 1 0口令HOLD NMIES NMI TMSEL CNTCL SSEL IS1 IS0IS1,IS0 选择看门狗定时器的定时输出,T是WDTCNT的输入时钟源周期0 T x 2(15)1 T x 2(13)2 T x 2(9)3 T x 2(6)SSEL 选择WDTCNT的时钟源0 SMCLK1 ACLKIS0、IS1、SSEL可确定WDT定时时间,WDT只能定时8种和时钟源相关的时间WDT可选的定时时间(晶体为32768HZ,SMCLK=1MHZ)SSEL IS1 IS0 定时时间/ms0 1 1 0.056 Tsmclk x 2(6)0 1 0 0.5 Tsmclk x 2(9)1 1 1 1.9 Taclk x 2(6)0 0 1 8 Tsmclk x 2(13)1 1 0 16 Taclk x 2(9)0 0 0 32 Tsmclk x 2(15)(PUC复位后的值)1 0 1 250 Taclk x 2(13)1 0 0 1000 Taclk x 2(15)CNTCL当该位为1时,清除WDTCNTTMSEL 工作模式选择0 看门狗模式1 定时器模式NMI 选择RST/NMI引脚功能,在PUC后被复位0 RST/NMI引脚为复位端1 RST/NMI引脚为边沿触发的非屏蔽中断输入NMIES 选择中断的边沿触发方式0 上升沿触发NMI中断1 下降沿触发NMI中断HOLD 停止看门狗定时器工作,降低功耗0 WDT功能激活1 时钟禁止输入,计数停止WDT(看门狗)配置语句WDTCTL=WDTPW+WDTHOLD;//将WDTPW+WDTHOLD赋值给WDTCTL,关闭看门狗定时器控制寄存器(Stop watchdogtimer)IE1 |= WDTIE;//使能WDT中断WDTCTL = WDT_ADL Y_1000;//WDT 1 s / 4间隔计时器WDTCTL = WDTPW + WDTHOLD + WDTNMI + WDTNMIES;//WDTCTL 由高8位口令和低8位控制命令组成,要写入操作WDT的控制命令,出于安全原因必须先正确写入高字节看门狗口令。

MSP430G2553的UART与SPI应用

MSP430G2553的UART与SPI应用

MSP430G2553的UART 与SPI 编程MSP430的不同型号,其串行通讯工作模式是一样的。

以MSP430G2553为例进行说明。

MSP430G2553是20个引脚的16位单片机。

具有内置的16位定时器、16k 的FLASH 和512B的RAM ,以及一个通用型模拟比较器以及采用通用串行通信接口的内置通信能力。

此外还具有一个10位的模数(A/D)转换器。

其引脚排布如图1.1所示。

其功能表如表1.1所示。

表1.1 MSP430G2553引脚功能表图1.1 MSP430G2553引脚图串行通讯模块主要由三个部分组成:波特率生成部分、发送控制器以及接收控制器。

如图1.2所示。

图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)才能进行发送。

MSP430_g2553

MSP430_g2553

时钟模块的控制寄存器
Power Up Clear,复位信号
// Setting the DCO to 1MHz if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF) while(1); BCSCTL1 = CALBC1_1MHZ; // Erased calibration data? Trap! // Set range
Agenda
1、Value Line 简介 2、Code Composer Studio 3、CPU及基本时钟系统 4、中断及通用IO 5、定时器及增强型WDT 6、低功耗优化设计 7、ADC10 及 Comparator_A+ 8、串行通信 9、Grace 10、电容式触摸按键解决方案
3.1 MSP430G2xx 结构
4.2 Vector Table
4.3 中断处理函数编程
#pragma vector=WDT_VECTOR __interrupt void WDT_ISR(void) { IE1 &= ~WDTIE; IFG1 &= ~WDTIFG; BUTTON_IE |= BUTTON; } //disable interrupt //clear interrupt flag //Debouncing complete
DCOCTL
= CALDCO_1MHZ;
// Set DCO step + modulation
3.6 VLO校准



在运行期间对VLO进行校准 定时器 Timer_A 时钟源采用校准的1MHz DCO 采用由VLO提供的ACLK/8进行上升沿捕获 fVLO = 8MHz/Counts 参考例程 (SLAA340)

MSP430G2553数据手册

MSP430G2553数据手册

8
512 2x TA3
8
8
256 2x TA3
8
8
256 2x TA3
8
8
256 2x TA3
8
8
512 2x TA3
8
-

USCI A0/B0
时钟
I/O 封装类型
24 32-QFN
28 引脚
24 TSSOP 封
LF,DC

1
O,VL
20 引脚
O
16 TSSOP 封

16
20 引脚 PDIP 封装
LF,DC

1
O,VL
20 引脚
O
16 TSSOP 封

16
20 引脚 PDIP 封装
24 32-QFN
28 引脚
24 TSSOP 封
LF,DC

1
O,VL
20 引脚
O
16 TSSOP 封

16
20 引脚 PDIP 封装
24 32-QFN
28 引脚
24 TSSOP 封
LF,DC

1
O,VL
20 引脚
3
MSP430G2x53 MSP430G2x13
ZHCS178D – APRIL 2011 – REVISED NOVEMBER 2011

器件引出脚配置、MSP430G2x13 和 MSP430G2x53、20 引脚器件、 TSSOP 和 PDIP 封装
DVCC 1 P1.0/TA0CLK/ACLK/A0/CA0 2 P1.1/TA0.0/UCA0RXD/UCA0SOMI/A1/CA1 3 P1.2/TA0.1/UCA0TXD/PUCA0SIMO/A2/CA2 4 P1.3/ADC10CLK/CAOUT/VREF-/VEREF-/A3/CA3 5 P1.4/SMCLK/UCB0STE/UCA0CLK/VREF+/VEREF+/A4/CA4/TCK 6 P1.5/TA0.0/UCB0CLK/UCA0STE/A5/CA5/TMS 7

基于MSP430G2553的SPI串行协议

基于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 大小的数据被交换了.一个Slave 设备要想能够接收到Master 发过来的控制信号, 必须在此之前能够被Master 设备进行访问(Access). 所以, Master 设备必须首先通过SS/CS pin 对Slave 设备进行片选, 把想要访问的Slave 设备选上.在数据传输的过程中, 每次接收到的数据必须在下一次数据传输之前被采样. 如果之前接收到的数据没有被读取, 那么这些已经接收完成的数据将有可能会被丢弃, 导致SPI 物理模块最终失效.因此, 在程序中一般都会在SPI 传输完数据后, 去读取SPI 设备里的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的.三、工作机制1. 概述上图只是对SPI 设备间通信的一个简单的描述, 下面就来解释一下图中所示的几个组件(Module):SSPBUF, Synchronous Serial Port Buffer, 泛指SPI 设备里面的内部缓冲区, 一般在物理上是以FIFO 的形式, 保存传输过程中的临时数据;SSPSR, Synchronous Serial Port Register, 泛指SPI 设备里面的移位寄存器(Shift Regitser), 它的作用是根据设置好的数据位宽(bit-width) 把数据移入或者移出SSPBUF;Controller, 泛指SPI 设备里面的控制寄存器, 可以通过配置它们来设置SPI 总线的传输模式.通常情况下, 我们只需要对上图所描述的四个管脚(pin) 进行编程即可控制整个SPI 设备之间的数据通信:SCK, Serial Clock, 主要的作用是Master 设备往Slave 设备传输时钟信号, 控制数据交换的时机以及速率;SS/CS, Slave Select/Chip Select, 用于Master 设备片选Slave 设备, 使被选中的Slave 设备能够被Master 设备所访问;SDO/MOSI, Serial Data Output/Master Out Slave In, 在Master 上面也被称为Tx-Channel, 作为数据的出口, 主要用于SPI 设备发送数据;SDI/MISO, Serial Data Input/Master In Slave Out, 在Master 上面也被称为Rx-Channel, 作为数据的入口, 主要用于SPI 设备接收数据;SPI 设备在进行通信的过程中, Master 设备和Slave 设备之间会产生一个数据链路回环(Data Loop), 就像上图所画的那样, 通过SDO 和SDI 管脚, SSPSR 控制数据移入移出SSPBUF, Controller 确定SPI 总线的通信模式, SCK 传输时钟信号.2. Timing.上图通过Master 设备与Slave 设备之间交换1 Byte 数据来说明SPI 协议的工作机制.首先, 在这里解释一下两个概念:CPOL: 时钟极性, 表示SPI 在空闲时, 时钟信号是高电平还是低电平. 若CPOL 被设为1, 那么该设备在空闲时SCK 管脚下的时钟信号为高电平. 当CPOL 被设为0 时则正好相反.CPHA: 时钟相位, 表示SPI 设备是在SCK 管脚上的时钟信号变为上升沿时触发数据采样, 还是在时钟信号变为下降沿时触发数据采样.若CPHA 被设置为1, 则SPI 设备在时钟信号变为下降沿时触发数据采样, 在上升沿时发送数据. 当CPHA 被设为0 时也正好相反.上图里的"Mode 1, 1" 说明了本例所使用的SPI 数据传输模式被设置成CPOL = 1, CPHA = 1. 这样, 在一个Clock 周期内, 每个单独的SPI 设备都能以全双工(Full-Duplex) 的方式, 同时发送和接收1 bit 数据, 即相当于交换了1 bit 大小的数据. 如果SPI 总线的Channel-Width 被设置成Byte, 表示SPI 总线上每次数据传输的最小单位为Byte, 那么挂载在该SPI 总线的设备每次数据传输的过程至少需要8 个Clock 周期(忽略设备的物理延迟). 因此, SPI 总线的频率越快, Clock 周期越短, 则SPI 设备间数据交换的速率就越快.3. SSPSR.SSPSR 是SPI 设备内部的移位寄存器(Shift Register).它的主要作用是根据SPI 时钟信号状态, 往SSPBUF 里移入或者移出数据, 每次移动的数据大小由Bus-Width 以及Channel-Width 所决定.Bus-Width 的作用是指定地址总线到Master 设备之间数据传输的单位.例如, 我们想要往Master 设备里面的SSPBUF 写入16 Byte 大小的数据: 首先, 给Master 设备的配置寄存器设置Bus-Width 为Byte; 然后往Master 设备的Tx-Data 移位寄存器在地址总线的入口写入数据, 每次写入1 Byte 大小的数据(使用writeb 函数); 写完1 Byte 数据之后, Master 设备里面的Tx-Data 移位寄存器会自动把从地址总线传来的1 Byte 数据移入SSPBUF 里; 上述动作一共需要重复执行16 次.Channel-Width 的作用是指定Master 设备与Slave 设备之间数据传输的单位. 与Bus-Width 相似, Master 设备内部的移位寄存器会依据Channel-Width 自动地把数据从Master-SSPBUF 里通过Master-SDO 管脚搬运到Slave 设备里的Slave-SDI 引脚, Slave-SSPSR 再把每次接收的数据移入Slave-SSPBUF里.通常情况下, Bus-Width 总是会大于或等于Channel-Width, 这样能保证不会出现因Master 与Slave 之间数据交换的频率比地址总线与Master 之间的数据交换频率要快, 导致SSPBUF 里面存放的数据为无效数据这样的情况.4. SSPBUF.我们知道, 在每个时钟周期内, Master 与Slave 之间交换的数据其实都是SPI 内部移位寄存器从SSPBUF 里面拷贝的. 我们可以通过往SSPBUF 对应的寄存器(Tx-Data / Rx-Data register) 里读写数据, 间接地操控SPI 设备内部的SSPBUF.例如, 在发送数据之前, 我们应该先往Master 的Tx-Data 寄存器写入将要发送出去的数据, 这些数据会被Master-SSPSR 移位寄存器根据Bus-Width 自动移入Master-SSPBUF 里, 然后这些数据又会被Master-SSPSR 根据Channel-Width 从Master-SSPBUF 中移出, 通过Master-SDO 管脚传给Slave-SDI 管脚, Slave-SSPSR 则把从 Slave-SDI 接收到的数据移入Slave-SSPBUF 里. 与此同时, Slave-SSPBUF 里面的数据根据每次接收数据的大小(Channel-Width), 通过Slave-SDO 发往Master-SDI, Master-SSPSR 再把从Master-SDI 接收的数据移入Master-SSPBUF.在单次数据传输完成之后, 用户程序可以通过从Master 设备的Rx-Data 寄存器读取Master 设备数据交换得到的数据.Void UART_init(){WDTCTL = WDTPW + WDTHOLD;P1SEL|= 0x06;//I/O口的功能寄存器配置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 首先是一个起始位,然后是 7-8 位可选的数据 位,0-1 位可选的地址判别位、 0-1 位可选的 奇偶判别位、1-2 位可选的高电平停止位。
UART 原理
• UART 多机通信
– UART 可以 1 主多从进行通信,主机的 Tx 连 上全部从机的 Rx,主机的Rx 连上所有从机的 Tx。
UART 原理
Bit时钟后沿采样 2 Bit 3 Bit 4 Bit 5 Bit 2 Bit 3 Bit 4 Bit 5
SPI 原理
• 传输模式
‒ 根据时钟极性(CPOL)及相位(CPHA)不同可以 组合成 4种工作模式:SPI0,SPI1,SPI2, SPI3.
(1)SPI0:CPOL=0,CPHA=0 (2)SPI1:CPOL=0,CPHA=1 (3)SPI2:CPOL=1,CPHA=0 (4)SPI3:CPOL=1,CPHA=1
SPI 原理
– SPI 共分为 4 种工作模式:三线制主模式、三 线制从模式、四线制主模式、四线制从模式。
SPI 原理
– SPI 协议时序图
• 数据传输格式
– 通常是高位(MSB)在前,低位(LSB)在后。一些增强型 MCU中可以通过软件设置高位在前或低位在前。
• 两个概念
–时钟极性:K)的起始沿采样还是在 SCK(CLK)的结束沿采样。
USCI 模块
• 通用串行通信接口(USCI)模块支持多种串行通信 模式。不同的USCI 模块支持不同的模式 • USCI_Ax 模块支持:
– – – – UART 模式 IrDA 通信的脉冲整形 LIN 通信的自动波特率检测 SPI 模式
• USCI_Bx 模块支持:
– I2C 模式 – SPI 模式
0000h
00h 00h 00h 0000h 0000h 0200h 00h 02h 0000h

字节 字节 字节 字 字 字 字节 字节 字
UCB控制寄存器 UCBxCTL1(USCI_Bx control register)
00: NA 01: ACLK 10:SMCLK 11:SMCLK
0: 不允许软件复位 1: 允许软件复位
通信原理
• 并行通信
通信原理
• 串行通信
– 1 线通信
• 在真正传输“有用信号前”,需要先确定信号的流 向(读还是写)。 • 由于没有同步时钟,每 1 位数据的间隔必须足够大 以容忍时钟的频差和相差。
通信原理
– 2 线通信
• 增加同步时钟线。 这样一来,虽然也得麻烦的判断 信号流向,但是每位数据的间隔可以很小(波特率 高)。(左图) • 增加数据线。 一根负责收,一根负责发,构成全双 工通信,这样也能成倍提高效率。(右图)
USCI_Bx波特率控制字
USCI_Bx调制器控制 USCI_Bx状态寄存器 USCI_Bx接收缓存 USCI_Bx发送缓存 USCI_Bx I2C本机地址 USCI_Bx I2C从机地址 USCI_Bx中断控制 USCI_Bx中断使能 USCI_Bx中断标志 USCI_Bx中断向量
读 /写
读 /写 读 /写 读 /写 读 /写 读 /写 读 /写 读 /写 读 /写 读
SPI模式下可用的USCI寄存器
USCI_Ax和USCI_Bx都有SPI模块,下面以USCI_Bx为例,介绍相关寄存器
名称 描述 访问 读 /写 复位值 0001h 寄存器访问 字 UCBxCTLW0 USCI_Bx控制字0
UCBxBRW
UCBxMCTL UCBxSTAT UCBxRXBUF UCBxTXBUF UCBxI2COA UCBxI2CSA UCBxICTL UCBxIE UCBxIFG UCBxIV
SPI 原理
时钟信号 极性0 极性1
SCK (CPOL = 0) SCK (CPOL = 1) SSEL CPHA = 0 Cycle # CPHA = 0 MOSI (CPHA = 0) MISO (CPHA = 0) CPHA = 1 Cycle # CPHA = 1 MOSI (CPHA = 1) MISO (CPHA = 1) 1 Bit 1 Bit 1 1 Bit 1 Bit 1 2 时钟前沿采样 3 4 Bit 2 Bit 2 5 6 Bit 6 Bit 6 7 Bit 7 Bit 7 8 Bit 8 Bit 8
-波特率设置寄存器
UART下相关的寄存器
-中断使能寄存器
UART下相关的寄存器
-接收和发送缓冲寄存器
UART下相关的寄存器
-中断标志位寄存器
SPI
SPI 原理
• SPI 的数据接口
– SPI( Serial Peripheral Interface)串行外设接 口的简称,它是一种同步全双工通信协议。 Motorola首先提出的有 3 根或者 4 根数据线组 成,包括 CLK、SOMI、SIMO、STE:
UCRXBUFx: 接收缓冲器 UCTXBUFx: 发送缓冲器
• SOMI 是 Slave output Master input 的缩写,如果 设备被设定为主机,那么这就是输入口。如果设备 被设定为从机,这个口就是输出口。这与 UART 的 Tx 和 Rx 方向恒定相不同。 • SIMO 是 Slave input Master Output 的缩写。 • STE 是 Slave Transmit Enable 的缩写。
– 地址位模式多机通信
• 在每帧中插入了一个地址位 Address Bit。
UART 原理
– 空闲帧模式多机通信
• 对于每次对同一从机都发送很多数据的情况下,采 用空闲帧模式的效率更高。
UART下相关的寄存器
-功能选择寄存器
UART下相关的寄存器
-UCAxCTL1控制寄存器
UART下相关的寄存器
UCB控制寄存器 UCBxCTL0(USCI_Bx control register)
0: 从机模式 1: 主机模式 0: 8-bit data 1: 7-bit data
0: LSB first 1: MSB first 0: 时钟空闲状态为低电平 1: 时钟空闲状态为高电平 0: 前沿采样,后沿输出 1: 前沿输出,后沿采样
通信原理
– 3 线通信
• 有了 3 根线,就可以有 1 根时钟线, 1 根数据发送 线, 1 根数据接收线了。这样的速度又可以加快了。 • 需规定主机从机,同步时钟由主机控制。
通信原理
– 具体应用
• 全双工时,往往不宜多机对等的通信,最多是 1 主 多从(除非给每个主机增加使能控制线)。 • 而半双工时,则很容易“并联”成多机通信, 通过 总线仲裁和地址广播等办法来实现任意设备之间的 通信。
通信原理
• 通信协议
– 简单说,就是通信的双方要约定 1、0 序列代 表什么含义,就像可以用“三长两短”代表危 险一样。如果我们是自己使用两片单片机进行 通信,那么我们爱怎么规定数据流的含义就怎 么规定,谁也管不着。但是,自定义的通讯协 议有几个缺点。
通信原理
• 自编通讯协议的效率不高,会有 bug。成熟的通讯 协议都是人类集体智慧的结晶。 • 不是通用协议,不能与“别人”进行通信。协议这 个东西,和霸王条款差不多。 • 成熟的通信协议有相应的硬件支持,可以在通信时 减轻 CPU 的负担,增强性能。
从机选择
时钟相位 控制为0 时钟前沿 数据采样 时钟后沿 数据输出
Bit 3 Bit 4 Bit 5 时钟后沿输出 Bit 3 Bit 4 Bit 5
时钟相位为 1
时钟前沿数 据输出 时钟后沿数 据采样
时钟前沿输出 2 3 4
5
6 Bit 6 Bit 6
7 Bit 7 Bit 7
8 Bit 8 Bit 8
河南工业大学
MSP430串行通信
UART、SPI
陈文根 刘磊 2016/6/26
通信原理
• 单工、全双工、半双工
– 能同时收发就是全双工,比如打电话,双方可 以“对吼”。 – 数据能收能发,但要分时进行就是半双工,比 如对讲机。一方按下按键,只能说话(发送数 据),另一方只能收听。当一个人说完必须加 一句“ over ”,然后就得松开按键(接收数据), 对方听到“ over ”知道对方讲完了,这时才能按 下按键说话(发送数据)。 – 只能单向通信就是单工了,比如广播,播音员 播音时(发送数据),听众永远只能是听众。
0: 异步通信 1: 同步通信
00:三线制 01:四线制,UCxSTE=1选择从机 10:四线制,UCxSTE=0选择从机 11:I2C模式
比特率控制寄存器 UCBxBR0和UCBxBR1
UCBxBR0是比特率发生器的低8位; UCBxBR1是比特率发生器的高8位。 计算是UCBR0 + UCBR1×256
UART
UART 原理
• UART
– UART( Universal Asynchronous Receiver/ Transmitter)是通用异步收发器的缩写,一般 称为串口。由于不需要时钟线,且为全双工工 作,所以 UART 有两根数据线,发送 Tx 和接 收Rx。
UART 原理
• UART 通信协议
串口中断允许寄存器IE2
0: 发送中断禁止 1: 发送中断允许
0: 接收中断禁止 1: 接收中断允许
串口中断标志寄存器 UCBxIFG
1: 发送缓冲器为空
0: 接收缓冲器不满
串口状态寄存器 UCBxSTAT
总线冲突标 志,用于4线
环回模式, 发立即到收
USCI忙 收发 跑飞标志
串口中断缓冲器 UCBxRXBUF和UCBxTXBUF
相关文档
最新文档