USART模块寄存器使用说明.doc

上传人:啊飒飒 文档编号:11504728 上传时间:2021-08-10 格式:DOC 页数:5 大小:285.50KB
返回 下载 相关 举报
USART模块寄存器使用说明.doc_第1页
第1页 / 共5页
USART模块寄存器使用说明.doc_第2页
第2页 / 共5页
USART模块寄存器使用说明.doc_第3页
第3页 / 共5页
USART模块寄存器使用说明.doc_第4页
第4页 / 共5页
USART模块寄存器使用说明.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《USART模块寄存器使用说明.doc》由会员分享,可在线阅读,更多相关《USART模块寄存器使用说明.doc(5页珍藏版)》请在三一文库上搜索。

1、 UART是通用异步串行接口的简称。串行通信接口是用来与单片机外界系统进行通信桥梁,比如可以吧单片机ADC转换的数据通过串口发送给PC机(上位机),经上位机处理之后在发回给单片,达到通信的目的。TI公司的MSP430系列单片机均具有UART功能,其中大部分还和SPI,I2C功能复用,通过相关寄存器的配置,可以很轻松地就实现了UART,SPI,I2C的通信功能。在此以MSP430x149为例介绍UART功能及其实现过程。1.异步通信的结构:2.UART数据格式(数据协议): 异步通信再不发送数据的时候,通信线路上总是呈现高电平状态,称为空闲状态。当有数据发送是,信号线变成低电平,并持续一位的时间

2、用于表示发送字符的开始,该为称为起始位。起始位之后在信号线上依次出现发送的数据。起始位,数据位由高到低7/8位,地址位 0/1位,奇偶校验位 奇偶或无,停止位1/2位。数据位位数、地址位、奇偶校验位、停止位均可由单片机内部寄存器控制;这款单片机都有两个USART模块,有两套独立的寄存器组;以下寄存器命中出现x代表0或是1,0代表对应0模块的寄存器,1代表对应1模块的寄存器;其中,与串口模式设置相关的控制位都位于UxCTL寄存器,与接收相关的控制位都位于UxRCTL寄存器,与发送相关的控制位都位于UxTCTL寄存器;波特率设置用UxBR0、UxBR1、UxMCTL三个寄存器;接收与发送有独立的缓

3、存UxRXBUF、UxTXBUF,并具有独立的移位寄存器和独立的中断;中断允许控制位位于IE1/2寄存器,中断标志位位于IFG1/2寄存器。3.波特率设置:430的波特率设置用三个寄存器实现:UxBR0:波特率发生器分频系数低8位。UxBR1:波特率发生器分频系数高8位。UxMCTL:波特率发生器分频系数的小数部分实现。设置波特率时,首先要选择合适的时钟源:USART模块可以设置的时钟源有UCLK引脚、ACLK、SMCLK;对于较低的波特率(9600以下),可选ACLK作为时钟源,这样,在LPM3(低功耗3)模式下,串口仍能正常发送接收数据;另外,由于串口接收过程有一个三取二判决逻辑,这至少需

4、要三个时钟周期,因此分频系数必须大于3;波特率高于9600时,将不能使用ACLK作为时钟源,要调为频率较高的SMCLK作为时钟源;另外还可以外部输入UCLK时钟。分频系数计算公式如下:小数分频是MSP430单片机的串口特色之一,UxMCTL寄存器的作用就是控制小数的分频,控制方法如下:对应位是1,则分频系数加一,0则分频系数减一;小数分频器会自动依次取出每一位来调整分频系数。其计算方法:可以先计算小数部分一的个数,然后把1均匀的放入UxMCTL的8位中,这样计算比较简单,分频系数的小数部分乘以8即得到1的位数,查表得到对应的UxMCTL值;另外一种通过计算每一位的错误率,交互计算,直到得到最小

5、错误率的UxMCTL值,这种方法比较复杂,但得到的小数分频误差更小。4.UART的初始化及复位 在初始化或者重新配置UART时,必须按照以下顺序进行:(1)UxCTL寄存器的第0位SWRST置位;(2)在SWRST置位的条件下,初始化所有的UART寄存器,包括UxCTL寄存器;(3)通过置位模块使能寄存器MEx的URXEx和UTXEx位使能UART的接受和发送模块;(4)通过软件复位UxCTL寄存器的第0位SWRST;(5)通过中断使能寄存器IEx的URXIEx和UTXIEx来使能发送和接受中断。5.UART的中断(1)发送中断:当发送缓冲寄存器UxTXBUF被写入需要发送的数据的时候,UTX

6、IFGx的中断标志位被置位;如果发送中断被允许,并且总中断被使能的话,则会向CPU发出中断请求。当响应中断请求之后,中断标志位被自动置0,在中断函数里边不需要手动清除标志位。(2)接收中断:当有数据被装载到发送缓冲寄存器UxRXBUF时,UTXIFGx的中断标志位被置位;如果接受中断被允许,并且总中断被使能的话,则会向CPU发出中断请求。当响应中断请求之后,中断标志位被自动置0,在中断函数里边不需要手动清除标志位。6.UART的相关寄存器:UART的相关寄存器的每位功能参考TI公司提供的数据手册进行查看!7.简单例程:/将将接收到数据再发送回去;可以通过串口调试助手,观察单片机发送的数据#in

7、clude void main(void) volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; / Stop WDT P3SEL |= 0x30; / P3.4,5 = USART0 TXD/RXD P3.4 P3.5 选择为发送接收功能 /使用低功耗模式 BCSCTL1 |= XTS; /BCSCTL1系统时钟控制寄存器1 (XTS是 LFXT1工作模式控制位 0为 低频模式 1为高频模式 )ACLK= LFXT1= HF XTAL do IFG1 &= OFIFG; / Clear OSCFault flag 清除振荡器出错中断标志 for

8、 (i = 0xFF; i 0; i-); / Time for flag to set while (IFG1 & OFIFG); / OSCFault flag still set? BCSCTL2 |= SELM_3; /BCSCTL1系统时钟控制寄存器2 MCLK = LFXT1 (safe) /配置UART的功能 UCTL0 |= CHAR; / 8-bit character 8为数据位 UTCTL0 |= SSEL0; / UCLK= ACLK 选择辅助时钟 UBR00 = 0x45; / 8MHz 115200 波特率控制寄存器 UBR10 = 0x00; / 8MHz 115

9、200 波特率控制寄存器 UMCTL0 = 0x00; / 8MHz 115200 modulation 波特率控制寄存器 UCTL0 &= SWRST; / Initialize USART state machine UART控制寄存器/发送和接受使能及其中断使能 ME1 |= UTXE0 + URXE0; / Enable USART0 TXD/RXD IE1 |= URXIE0; / Enable USART0 RX interrupt启用USART0 RX中断 _BIS_SR(LPM0_bits + GIE); / Enter LPM0 w/ interrupt#pragma vector=UART0RX_VECTOR_interrupt void usart0_rx (void) while (!(IFG1 & UTXIFG0); / USART0 TX buffer ready? TXBUF0 = RXBUF0; / RXBUF0 to TXBUF0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1