异步串行通信(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串口通信(入门级)
下一篇:msp430 f5529寄存器 串口发送接收
推荐阅读最新更新时间:2024-11-08 21:45
设计资源 培训 开发板 精华推荐
- Follow me第2期来袭,与得捷一起解锁开源硬件 Adafruit ESP32-S3 TFT Feather!
- 2019最新门极驱动芯片选型指南抢先下
- 非凡富士通FRAM,仅需微小电源即可高速写入数据!看视频答题有礼!
- 有奖直播:市场环境不确定,为物联网设备保驾护航英飞凌很确定
- EEWORLD芯积分上线,加分规则公示~关系到每一个EE网友
- ADI 系统方案精选【用于多路抽头输出隔离电源的简易解决方案】
- 【EEWORLD大学堂】玩转LaunchPad及TI MSP430G2XX系列超值单片机!!!
- 希望一月 爱上EEWORLD——论坛推广月(恩智浦全程赞助)
- 省钱、省心的购买租赁方案,让您不再为预算烦恼!