异步串行通信(UART) 的特点如下:

●传输7位或8位数据,可采用奇校验、偶校验或者无校验;

●具有独立的发送和接收移位寄存器;

●具有独立的发送和接收缓冲寄存器;

●支持最低位优先或最高位优先的数据发送和接收方式;

●内置多处理器系统,包括线路空闲和地址位通信协议;

●通过有效的起始位检测将MSP430单片机从低功耗模式下唤醒;

●可编程实现分频因子为整数或小数的波特率;

●具有用于检测错误或排除错误的状态标志位;

●具有用于地址检测的状态标志位;

●具有独立的发送和接收中断能力。

MSP430 UART的结构

寄存器功能:

UCABEN:用于使能或者禁用波特率发生器;

UC0BRx:16总线控制位,用于设置分频系数;

UCBRFx,UCBRSx:一级,二级调制,用于小数分频;

UCOS16:用于设置波特率发生器工作在低频模式还是高频模式;

UCLISTEN:用于设置UART发送端口与接受端口是否连接,连接可以实现自发自收;

UCREN:用于使能或禁用IrDA编码器;

UCPEN:奇偶校验使能控制位;

UCPAR:用于选择奇校验或者偶校验;

UCMSB:用于设定发送或接收高位在前或低位在前;

UC7BIT:定义数据位数为7位还是8位;

UCMODEx:模式选择控制位;

UCSPB:停止位个数设置;

UCDORM:休眠模式控制位;

Set UCRXIFG:当接收缓冲寄存器溢出时会置位UCRXIFG,从而CPU读取数据;

USCl初始化和复位:

通过产生一个PUC复位信号或者置位UCSWRST控制位可以使USCI模块复位。在产生一个PUC复位信号之后,系统可自动置位UCSWRST控制位,保持USCI模块在复位状态。若UCSWRST控制位置位,将重置UCRXIE、UCTXIE、UCRXIFG、UCRXERR、UCBRK、UCPE、UCOE、UCFE、UCSTOE和UCBTOE寄存器,并置位UCTXIFG中断标志位。清除UCSWRST控制位,USCI模块才可进行工作。

因此,可按照以下步骤进行初始化或重新配置USCI模块:

①置位UCSWRST控制位;

②在UCSWRST=1时,初始化所有的USCI寄存器(包括UCTxCTL1) ;

③将相应的引脚端口配置为UART通信功能;

④软件清除UCSWRST控制位;

⑤通过设置接收或发送中断使能控制寄存器UCRXIE和UCTXIE或两者之一,使能中断。

异步通信字符格式:

异步通信字符格式由5个部分组成: -一个起始位、7位或8位数据位、-一个奇/偶/无校验位、-一个地址位和一一个或两个停止位。其中,用户可以通过软件设置数据位、停止位的位数,还可以设置奇偶校验位的有无。通过选择时钟源和波特率寄存器的数据来确定传输速率。UCMSB控制位用来设置传输的方向和选择最低位还是最高位先发送。一般情况下,对于UART通信选择先发送最低位。

异步多机通信模式:

当两个设备异步通信时,不需要多机通信协议。当3个或更多的设备通信时,USCI支持两种多机通信模式,即线路空闲和地址位多机模式。

信息以一个多帧数据块,从一个指定的源传送到一个或多个目的位置。在同一个串行链路上,多个处理机之间可以用这些格式来交换信息,实现在多处理机通信系统间的有效数据传输。

控制寄存器的UCMODEx控制位可用来确定这两种模式,这两种模式具有唤醒发送、地址特征和激活等功能。在两种多处理机模式下,USCI数据交换过程可以用数据查询方式,也可以用中断方式来实现。

(1)线路空闲多机模式

当UCMODEx控制位被配置为01时,USCI就选择了线路空闲多机模式,如下图所示。在这种模式下,发送和接收数据线上的数据块被空闲时间分割。下 图(a) 为数据块传输的总体示意,图(b) 为每个数据块中字符的传输示意。 在图(a) 中,在字符的一个或两个停止位之后,若收到10个以上的1,则表示检测到接收线路空闲。在识别到线路空闲后,波特率发生器就会被关断,直到检测到下一个起始位才会重新被启动。当检测到空闲线路后,将置位UCIDLE标志位。在图(b)中,每两个数据块之间的线路空闲时间应少于10个空闲周期这样数据才能正确、正常地传输。

(2)地址位多机模式

当UCMODEx控制位被配置为10时,USCI就选择了地址位多机模式。在N这种模式下,字符包含一个附加的位作为地址标志。地址位多机模式的格式如下图所示。数据块的第1个字符带有一个置位的地址位,用以表明该字符是一个地址。当接收到的字符地址位置位且被传送到UCAxRXBUF接收缓冲寄存器中,USCI模块将置位UCADDR标志位。

USCI波特率发生器可以从非标准的时钟源频率中产生标准的波特率,可以通过UCOS16控制位选择系统提供的两种操作模式,分别为:产生低频波特率模式 (UCOS16=0)和产生高频波特率模式(UCOS16=1) 。

低频波特率模式:

(1) 产生低频波特率模式

当UCOS16=0时,选择低频波特率模式。该模式允许从低频时钟源产生标准 的波特率(例如,从32768Hz晶振产 生9600bps的波特率)。通过使用较低的输入频率,可以降低系统的功耗。

在低频模式下,波特率发生器使用1个预分频器和1个调制器产生时钟时序。在这种组合下,产生的波特率支持小数分频。在这种模式下,最大的USCI波特率是UART源时钟频率BRCLK的1/3。

高频波特率模式:

(2)产生高频波特率模式

当UCOS16=1时,选择高频波特率模式。该模式支持在较高的输入参考时钟频率下,产生较高的UART波特率。该模式的参考时钟为经预分频器和调制器产生的BITCLK16时钟,该时钟频率为BITCLK的1/16。

这种模式支持BITCLK 16和BITCLK产生不是整数倍的波特率,在这种情况下,最大的USCI波特率是UART源时钟频率的1/16。

UART波特率的设置:

设置方法:设置波特率时,首先要选择合适的时钟源。对于较低的波特率 (9600bps以下),可以选择ACLK作 为时钟源,这使得在LPM3模式下仍然能够使用串口。由于串口接收过程中有一个三取二表决逻辑,这需要至少3个时钟周期,因此要求分频系数必须大于3。所以,在波特率高于9600bps的情况下,应选择频率较高的SMCLK作为时钟源。在某些特殊应用中,也可以使用外部的时钟输入作为波特率发生器的时钟源。

对于给定的BRCLK时钟源,所使用的波特率将决定分频因子N,计算公式为:

分频因子N通常不是一个整数值,因此至少需要-一个分频器和一个调制器来尽可能接近分频因子。如果N等于或大于16,可以通过置位UCOS16选择高频波特率产生模式。

(I)低频波特率设置

在低频模式下,分频因子的整数部分通过预分频器实现,配置方式为(其中INT为取整)UCBRx=INT(N)

小数部分由调制器实现,配置方式为(round为取附近整数)

UCBRSx=round((N - INT(N))x8)

[例1]在MSP430单片机中,使用ACLK作为串口时钟源,波特率设为4800bps.

分析:在ACLK=32768Hz时 产生4800bps波特率,需要的分频系数是32768/4800=6.83。整数部分为6,小数部分为0.83。将整数部分赋给UCA0BR寄存器,调制器分频余数为0.83乘以8,为6.64,取最接近的整数7,因此将7赋给UCBRS控制位。

(2)高频波特率设置

在高频波特率产生模式下,预分频设置为: UCBRx= =INT(N/16)

调制器设置为:UCBRFx-round(((N/16)- INT(N/16))x16)

[例2]在MSP430单片机中,使用SMCLK作为串口时钟源,波特率设置为9600bps。

分析:在SMCLK=1048576Hz时产生9600bps波特率,需要的分频系数N=1048576/9600=109.23,大于16分频,因此应选择高频波特率产生模式,预分频UCBR应设置为INT(N/16)=INT(6.83)=6。调制器UCBRF应设置为0.83x16=13.28取最接近的整数13,因此将13赋给UCBRF控制位。

表1波特率设置速查表(UCOS16=0) 

表2波特率设置速查表(UCOS16=1) 

MSP430 UART(一)相关推荐

  1. MSP430——UART(四)

    最近由于在做去年送药小车国赛题,需要使用到MSP430和OPENMV之间的通信,故着手看看MSP430的串口模式. 第一步:IO口配置 我使用的这款芯片是MSP430F5529,他的TX端设置在P3. ...

  2. 【MSP430F5529基于库函数的学习】电赛速学及小车实战

    文章目录 前言 一.void SystemClock_Init(void)//系统初始化 时钟系统结构 二.void Counter_Left_Init (void) //编码器计数 设置外部中断 三 ...

  3. MSP430程序库二UART异步串口

    串行通信接口是处理器与其他设备进行数据通信最常用的方式之一.我的这个程序库是针对MSP430f14系列和MSP430f16系列的,我常用的单片机是这两款:msp430f149,msp430f169.这 ...

  4. 【USCI】UART、IrDA、SPI、I2C MSP430学习经

    2010-06-28 18:40 SPI.IIC.UART区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BU ...

  5. MSP430单片机各种寄存器总结(7)——USCI_A in UART mode

    作者:BerenCamlost 本文针对于MSP430单片机原理与应用课程,请在复习时使用. 参考资料: PPT MSP430F6638用户手册 实验教程 本章最新更新日期:2018.12.23 第七 ...

  6. MSP430 苦逼学习日志

    Internet上 msp430f5419/38学习笔记之USCI:UART模式 http://blog.sina.com.cn/s/blog_8927ef7d0100zf3x.html 读后感  还 ...

  7. MSP430程序库五SPI同步串行通信

    SPI总线系统是一种同步串行外设接口:是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越 ...

  8. 无人机飞控开发平台培训理论课程——MSP430最小系统

    一.MSP430简介 ·MSP430系列单片机是德州仪器(TI)生产的16位超低功耗.精简指令集(RISC)的混合信号处理器. ·之所以成为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模 ...

  9. MSP430F5529 DriverLib 库函数学习笔记(四)UART通信

    目录 硬知识 USCI通信模块 USCI的UART模式 1. USCI初始化和复位 2. 异步通信字符格式 3. 异步多机通信模式 4. 自动波特率检测 5. IrDA编码和解码 6. 自动错误检测 ...

最新文章

  1. 如何在Linux上从命令行嗅探HTTP流量
  2. 如何验证c++代码线程安全性_Python3基础:如何验证你的代码
  3. python单行注释和多行注释
  4. matlab fftshift_数字信号处理没有Matlab?用Python一样很爽
  5. 利用jsonp、iframe和location.hash解决跨域问题
  6. netflix linux_Netflix如何处理故障转移,Anaconda,Linux命令行技巧,Python日期时间库,GDPR,微服务等
  7. (八)2005年我的第一次软件行业创业,烧掉30万、2年时间打水漂的惨痛教训
  8. 04_zookeeper客户端使用及常用命令
  9. 十、Oracle学习笔记:基本查询语句各子句用法
  10. 【心电信号】基于matlab自适应滤波算法胎儿心电信号提取【含Matlab源码 953期】
  11. adminLTE模态框弹出页面样例
  12. 计算机忘记网络,忘记密码后如何查看电脑无线网络密码
  13. matlab 求特征值的命令,MATLAB自学笔记(九):稀疏矩阵、特征值与特征向量
  14. 网页游戏防外挂策略。
  15. 【拼多多】新手卖家的启蒙贴 ,如何快乐的做图,快乐的开店
  16. lol无限乱斗服务器,LOL无线乱斗时间2019
  17. vm14下centos7配置NAT模式
  18. 《基础微积分教材中译版》--序言
  19. linux如何添加360网站卫士ip,使用加速乐、360网站卫士PHP无法获取用户IP的解决方法...
  20. MTK平台 Android11 支持exFat格式T卡

热门文章

  1. java识别整段地址
  2. slf4j.Logger的全面讲解及e.getMessage()为何为空
  3. (知乎)你是如何变的自律的
  4. cocos2dx 物理引擎chipmunk
  5. 大一下Java大作业——双人联机小游戏森林冰火人
  6. 用 DELPHI 为 MQL5 编写 DLL 指南
  7. webpack4.0 CheatSheet
  8. 2.yolov5目标监测-实践部分
  9. 详谈软件测试工程师的分级
  10. vue.js 两个等号 == 和三个等号 ===的区别