MSP430学习笔记:UART

MSP430学习笔记很好http://blog.csdn.net/liu__ke/article/details/36893099

串通可以两种方法其现

一、USART硬件直接实现

二、通过定时器软件实现

 

该模块可现现:

UART异步串行通讯

SPI同步串行通讯

I2C同步串行通讯

  

 

UxCTL控制寄存器

7:PENA

6:PEV

5:SPB

4:CHAR

3:LISTEN

2:SYNC

1:MM

0:SWRST

PENA 校验允许位

校验禁止

校验允许

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

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

奇校验

偶校验

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

0 1位停止位

1 2位停止位

CHAR 字符长度

0 7

1 8

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

无反馈

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

SYNC USART模块的模式选择

0 UART模式[异步]

1 SPI模式[同步]

MM 多机模式选择位

线路空闲多机协议

地址位多机协议

SWRST 控制位

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

SWRST位会使URXIEUTXIEURXIFGRXWAKETXWAKERXERRBRKPEOEFE等复位。

在串行口使用设置时,这一位起重要的作用。一次正确的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信号极性相反

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

外部时钟UCLKI

辅助时钟ACLK

子系统时钟SMCLK

子系统时钟SMCLK

URXSE 接收触发沿控制位

没有接收触发沿检测

有接收触发沿检测

TXWAKE 传输唤醒控制

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

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

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

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

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

URCTL接收控制寄存器

7:FE

6:PE

5:OE

4:BRK

3:URXEIE

2:URXWIE

1:RXWAKE

0:RXERR

FE 帧错误标志位

没有帧错误

帧错误

PE 校验错误标志位

校验正确

校验错误

OE 溢出标志位

无溢出

有溢出

BRK 打断检测位

没有被打断

被打断

URXEIE 接收出错中断允许位

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

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

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

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

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

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

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

唤醒,接收的字符是地址

RXERR 接收错误标志位

没有接收错误

有接收到错误

UxBR0UxBR1波特率选择寄存器

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

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/波特率

 

UBRUXBR0 16位数据

MX为调整数据

 

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

 

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

32768/2400=13.65

UXBR013

调整是8位的:0.65x8=5,所以有5130写时最好差开 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();
  }
}

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴您对MSP430F149感兴趣!MSP430F149是德州仪器(Texas Instruments)推出的一款低功耗、高性能的16位微控制器。以下是一些MSP430F149的学习笔记: 1. 架构和特性:MSP430F149采用了精简指令集(RISC)架构,具有低功耗特性和较高的运算性能。它具有16位数据总线和16位地址总线,支持多种外设和通信接口。 2. 开发环境:在开始学习MSP430F149之前,您需要安装MSP430开发环境。您可以使用MSP430 LaunchPad开发板,以及TI的MSP430编译器和调试工具。 3. 编程语言:MSP430F149可以使用C语言或汇编语言进行编程。C语言是更常用的编程语言,可以提高开发效率和可移植性。 4. GPIO控制:MSP430F149具有多个通用输入输出引脚(GPIO),可以用于连接外部设备或传感器。您可以使用编程方法来控制这些引脚的输入和输出。 5. 定时器和计数器:MSP430F149内置了多个定时器和计数器模块,用于定时、计数和产生脉冲。您可以使用这些模块来实现定时任务和测量时间间隔。 6. 串口通信MSP430F149支持多种串行通信接口,如UART、SPI和I2C。您可以使用这些接口与其他设备进行数据交换和通信。 7. 中断处理:MSP430F149具有强大的中断系统,可以响应外部事件和优先级处理。您可以使用中断来处理实时事件和提高系统的响应性能。 这些是关于MSP430F149的一些学习笔记,希望对您有所帮助!如果您有任何具体的问题,欢迎继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值