MSP430 UART(一)

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

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

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

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

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

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

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

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

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

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

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

MSP430 UART的结构

68a8d4e81f0e40a2a55cf6e85f9458e9.png

 

寄存器功能:

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通信选择先发送最低位。

26e7c2501cd94dfe9385516234ef0379.png

异步多机通信模式:

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

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

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

(1)线路空闲多机模式

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

 0805ea0c80224ca5adfa086ba4841e80.png

(2)地址位多机模式

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

 

e526ec95f9a64e189fc89bd917f60b1d.png

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,计算公式为:

43902b5ffea540cb8ce1eaf604b86212.png

 分频因子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控制位。

 1547e740b3464cab8f26483d5dd1b013.png

(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控制位。

 fba35e4c53914b8787afb7368a67afe6.png

 

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

 

cc5fb40c290b4c84a301d226920bba77.png

 

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

2a12465f1a1b4746a66a15fff355869b.png

 

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值