MSP430G2553串行通信UART和SPI
- 格式:ppt
- 大小:1.78 MB
- 文档页数:37
#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。
串行通信接口是处理器与外界进行数据传输最常用的方式之一。
顾名思义,串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。
与并行通信相比,串行通信速度较慢,但占用更少的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学习笔记——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单片机串口通信详解#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 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多处理器之间的通信方式主要有以下几种:
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个人总结说明:本手册是个人总结,内部并不完整,内部总结仅供参考。
详情请下载详细数据手册查看总结者: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 输入分频器。