串通可以两种方法其现

一、USART硬件直接实现

二、通过定时器软件实现

该模块可现现:

UART异步串行通讯

SPI同步串行通讯

I2C同步串行通讯

UxCTL控制寄存器

7:PENA

6:PEV

5:SPB

4:CHAR

3:LISTEN

2:SYNC

1:MM

0:SWRST

PENA 校验允许位

0 校验禁止

1 校验允许

校验允许时,发送端发送校验,接收端接收该校验,地址位多机模式中,地址位包含校验操作.

PEV 奇偶校验位,该位在校验允许时有效

0 奇校验

1 偶校验

SPB 停止位选择.决定发送的停止位数,但接收时接收器只检测1位停止位.

0 1位停止位

1 2位停止位

CHAR 字符长度

0 7位

1 8位

LISTEN 反馈选择.选择是否发送数据由内部反馈给接收器

0 无反馈

1 有反馈,发送信号由内部反馈给接收器

SYNC USART模块的模式选择

0 UART模式[异步]

1 SPI模式[同步]

MM 多机模式选择位

0 线路空闲多机协议

1 地址位多机协议

SWRST 控制位

上电时该位置位,此时USART状态机和运行标志初始化成复状态(URXIFG=0,URXIE=0,UTXIE=0,UTXIFG=1)。所有受影响的逻辑保持在复位状态,直至SWRST复位。也就是说一次系统复位后,只有对SWRST复位,USART才能重新被允许。而接收和发送允许标志URXE和UTXE不会因SWRST而更改。

SWRST位会使URXIE、UTXIE、URXIFG、RXWAKE、TXWAKE、RXERR、BRK、PE、OE及FE等复位。

在串行口使用设置时,这一位起重要的作用。一次正确的USART模块初始化应该是这样设置过程的:先在SWRST=1时设置,设置完串口后再设置SWRST=0;最后如需要中断,则设置相应的中断使能。

UxTCTL发送控制寄存器

6:CKPL

5:SSEL1

4:SSEL0

3:URXSE

2:TXWAKE

0:TXEPT

CKPL时钟极性控制位

0 UCLKI信号与UCLK信号极性相同

1 UCLKI信号与UCLK信号极性相反

SSEL1、SSEL0时钟源选择,此两位确定波特率发生器的时钟源

0 外部时钟UCLKI;

1 辅助时钟ACLK

2 子系统时钟SMCLK

3 子系统时钟SMCLK

URXSE 接收触发沿控制位

0 没有接收触发沿检测

1 有接收触发沿检测

TXWAKE 传输唤醒控制

0 下一个要传输的字符为数据

1 下一个要传输的字符是地址

TXEPT 发送器空标志,在异步模式与同步模式时是不一样的。

0 正在传输数据或者发送缓冲器(UTXBUF)有数据

1 表示发送移位寄存器和UTXBUF空或者SWRST=1

URCTL接收控制寄存器

7:FE

6:PE

5:OE

4:BRK

3:URXEIE

2:URXWIE

1:RXWAKE

0:RXERR

FE 帧错误标志位

0 没有帧错误

1 帧错误

PE 校验错误标志位

0 校验正确

1 校验错误

OE 溢出标志位

0 无溢出

1 有溢出

BRK 打断检测位

0 没有被打断

1 被打断

URXEIE 接收出错中断允许位

0 不允许中断,不接收出错字符并且不改变URXIFG标志

1 允许中断,出错字符接收并且能够置位URXIFG

URXWIE 接收唤醒中断允许位,当接收到地址字符时,该位能够置位URXIFG,当URXEIE=0,如果接收内容有错误,该位不能置位URXIFG。

0 所有接收的字符都能够置位URXIFG

1 只能接收到地址字符才能置位URXIFG

RXWAKE 接收唤醒检测位。在地址位多机模式,接收字符地址位置位时,该机被唤醒,在线路空闲多机模式,在接收到字符前检测到URXD线路空闲时,该机被唤起,RXWAKE置位。

0 没有被唤醒,接收到的字符是数据

1 唤醒,接收的字符是地址

RXERR 接收错误标志位

0 没有接收错误

1 有接收到错误

UxBR0、UxBR1波特率选择寄存器

这两个寄存器是用于存放波特率分频因子的整数部分。

UxBR0波特率选择寄存器0

UxBR1波特率选择寄存器1

UxMCTL波特率调整控制寄存器

M7

M6

M5

M4

M3

M2

M1

M0

若波特率发生器的输入频率BRCLK不是所需波特率的整数倍,带有一小数,则整数部分写UBR寄存器,小数部分由调整寄存器UxMCTL的内容反映。波特率由以下公式计算:

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

URXBUF接收数据缓存

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

当收接和控制条件为真时,接收缓存装入当前接收到的字符。

当接收和控制条件为真时接收数据缓存结果

UTXBUF发送数据缓存

发送缓存内容可以传至发送移位寄存器,然后由UTXDx传输。对发送缓存进行写操作可以复位UTXIFGx。如果传输出7位数据,发送缓存内容最高为0。

关于波特率:

分频因子N分频计数器时钟BRCLK

N= BRCLK/波特率

UBR为UXBR0 中16位数据

MX为调整数据

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

如:BRCLK = 32.768KHZ   要产生2400HZ波特

32768/2400=13.65

则UXBR0为13

调整是8位的:0.65x8=5,所以有5个1,3个0写时最好差开 01101011

简单例子:

#include  <msp430f2274.h>

volatile char Temp_Size;

void DisplayCharacter(char array[], char size);

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // 停止看门狗

BCSCTL1 |= XTS;

// 设置时基寄存器1,使ACLK = LFXT1 = HF XTAL,也就是高频模式.

P3DIR |= 0x1F; // 设置P3.4方向寄存器为输出

char array[]= "dddddddddddd"; // Connection Established, display msg to hyperterminal

while(1)

  {

    Temp_Size = sizeof(array);

    DisplayCharacter(array, Temp_Size);

  }

}

void DisplayCharacter(char array[], char size){

  

  _DINT();

  P3SEL |= 0x30;                             // P3.4,5 = USCI_A0 TXD/RXD

  UCA0CTL1 |= UCSSEL_2;                     // SMCLK

  UCA0BR0 = 0x41;                            // 8MHz 9600

  UCA0BR1 = 0x03;                              // 8MHz 9600

  UCA0MCTL = UCBRS1;                        // Modulation UCBRSx = 2

  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**

  for(int count=0; count<size; count++){

  while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?

  UCA0TXBUF = array[count];                    // TX -> RXed character

  _EINT();

  }

}

MSP430学习笔记:UART的更多相关文章

  1. msp430学习笔记-msp430g2553

    C语言例程:http://wenku.baidu.com/link?url=49JzNSvt3m0fRuf8SWTEM8yEw1yzqr4lBR-QbX8FddcmjTVYnDhuR97wB60HNf ...

  2. [SAM4N学习笔记]UART的使用

    一.准备工作:      将上一节搭建的工程复制一份,命名为"3.uart".这一节主要讲如何使用SAM4N的UART功能,实现串口的收发. 二.程序编写: 细心看数据手册的朋友也 ...

  3. msp430学习笔记-实现开方log等计算及FFT算法(待续)

    MSP430 FFT算法实现 http://bbs.21ic.com/icview-391532-1-1.html http://blog.sina.com.cn/s/blog_6cd2030b010 ...

  4. msp430学习笔记-USART

    本文引用:http://bbs.ednchina.com/BLOG_ARTICLE_3013784.HTM MSP430F149有两个USART通讯端口,其性能完全一样,每个通讯口可通过RS232和R ...

  5. msp430学习笔记-ADC12

    本文引用:http://bbs.ednchina.com/BLOG_ARTICLE_3013748.HTM MSP430单片机的ADC12模块是一个12位精度的A/D转换模块,它具有高速度,通用性等特 ...

  6. msp430学习笔记-时钟及延时函数

    引用:http://blog.chinaunix.net/uid-24343357-id-3271380.html MCLK默认时钟源是DCOCLK,SMCLK默认时钟源也是DCOCLK,DCOCLK ...

  7. msp430学习笔记-IO及低功耗

    引用:http://bbs.ednchina.com/BLOG_ARTICLE_3013511.HTM MSP430F149有6个8位的IO口,其中P1,P2口占两个中断向量,共可以接16个中断源.还 ...

  8. msp430学习笔记-DAC12

    MSP430F169 的DAC12 模块有2 个DAC 通道,并且可以用DAC12GRP控制位将多个DAC12通道组合起来,实现同步更新,硬件还能确保同步更新独立于任何中断或者NMI事件. DAC12 ...

  9. msp430学习笔记-TA

    定时器,CCR2,CCR1三者共用一个中断向量 定时器A是一个16位的定时/计数器.它有3个捕获/比较寄存器:能支持多个时序控制.多个捕获/比较功能和多个PWM输出:有广泛的中断功能,中断可由计数器溢 ...

随机推荐

  1. ios 模拟器不显示系统版本了,后边都是 uuid 了,怎么弄回来?系统升级xcode6.4,模拟器找不到选择了?

    当我用El Capitan Beta 下 Xcode6.4版本时候出现了问题 常用的Scheme 选择版本不见了 而在Xcode 7.0 beta 6中显示有 简直就是坑,经过查资料其实是一个bug ...

  2. 原!!jar包 --可执行exe文件--安装包

    这几天由于部门统计名单,都是一边报,一边统计,感觉麻烦,写了个小工具,做成安装包.其他不多说,网上都有,我就自己按照网上操作,碰到了一些问题,对这些问题说下. ----------废话少说------ ...

  3. 如何浏览并管理 Outlook 邮件?

    当你的邮件多起来的时候你就不得不考虑这个问题了,如何处理各种邮件? 如何浏览并管理 Outlook 邮件? 待续~

  4. 支持向量机(SVM)算法

  5. div被object覆盖的解决办法

    代码: <div id="contextmenu" style="width: 120px; height:120px;DISPLAY: none; top: 26 ...

  6. 用Gen8服务器来学习虚拟化ESXI

    虚拟化和云计算是这几年的热门技术,VMware公司是虚拟化的领头羊,小坦克我有幸在VMware从事这方面的测试工作. 本系列将会讲述我学习虚拟化的一些经历. 将会覆盖一些虚拟化产品: 比如:VMwar ...

  7. Windows下Apache的优化

    (1)首选查看apache的工作模式 windows下的查看apache的工作模式命令: httpd -l 如果列出mod_win32.c,则表示是 win32.c 工作方式. 列出的全部内容如下所示 ...

  8. log4net.redis+logstash+kibana+elasticsearch+redis 实现日志系统

    前端时间写了个随笔 log4net.NoSql +ElasticSearch 实现日志记录 ,因项目原因需要把日志根java平台的同事集成采用logstash+kibana+elasticsearch ...

  9. docker 会这些也够

    $ sudo systemctl start docker $ sudo systemctl stop docker $ sudo systemctl restart docker If you wa ...

  10. Node.js 全局对象

    JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可 以在程序的任何地方访问,即全局变量. 在浏览器JavaScript 中,通常window 是全 ...