MSP430第三十六章:通用异步收发通信模块 – UART Mode

文章浏览阅读1.2k次。1.通用串行通信接口——USCI总览USCI模块支持多种串行通信方式,不同的USCI模块支持不同的模式,每个不同的USCI模块都用不同的字母命名。例如,USCI_A和USCI_B是不同的。如果在一个设备上配备了多个相

1. 通用串行通信接口——USCI总览

USCI模块支持多种串行通信方式,不同的USCI模块支持不同的模式,每个不同的USCI模块都用不同的字母命名。例如,USCI_A和USCI_B是不同的。如果在一个设备上配备了多个相同的USCI模块,那么这些模块的名称将以递增的数字命名。例如,如果一个设备有两个USCI_A模块,它们被命名为USCI_A0和USCI_A1。
USCI_Ax模块支持:

  • UART模式
  • 用于IrDA通信的脉冲整形
  • 用于LIN通信的波特率自动检测
  • SPI模式

USCI_Bx模块支持:

  • I2C模式
  • SPI模式

2. UART模式

在异步模式下,USCI_Ax模块通过两个外部引脚UCAxRXD和UCAxTXD连接外部系统。置零UCSYNC位时选择UART模式。
UART模式的特点包括:

  • 奇数、偶数或没有校验的7位或8位数据
  • 独立的发射和接收移位寄存器
  • 独立的发送和接收缓冲区寄存器
  • 低位在前或者高位在前的数据传输格式
  • 用于多处理器系统的内置空闲线路和地址位通信协议
  • 从LPMx模式自动唤醒的接收机开始边缘检测(不支持从LPMx.5模式唤醒)
  • 带小数的可编程波特率
  • 错误检测和抑制的状态标志
  • 地址检测的状态标志
  • 接收和发送的独立中断能力

在这里插入图片描述

3. UART操作

在UART模式下,USCI以异步的比特率传送和接收字符。每个字符的时序是基于所选的USCI波特率,发送和接收使用相同的波特率频率。
3.1 USCI初始化和重置
USCI由PUC或通过置一UCSWRST位复位。在PUC之后,UCSWRST位被自动置一,使USCI处于复位状态。当UCSWRT置一时,UCRXIE,UCTXIE、UCRXIFG、UCRXERR、UCBRK、UCPE、UCOE、UCFE、UCSTOE、UCBTOE位将复位,UCTXIFG位将置一。置零UCSWRST将释放USCI进行操作。为了避免不可预知的动作,只有置一了UCSWRST后才能配置或重新配置USCI_A模块。

推荐的初始化或重新配置USCI模块流程:

  1. 置一UCSWRST位
  2. 用UCSWRST = 1初始化的所有USCI寄存器(包括UCAxCTL1)
  3. 配置端口
  4. 通过软件清除UCSWRST
  5. 通过UCRXIE或UCTXIE启用中断(可选)

3.2 帧格式
UART帧格式由一个起始位、7或8个数据位、一个奇/偶/无奇偶校验位、一个地址位(地址位模式)和一个或两个停止位组成。UCMSB位控制传输的方向,并选择LSB或MSB。
在这里插入图片描述
3.3 异步通信格式
当两个设备异步通信时,协议不需要多处理器格式。当三个或更多的设备通信时,USCI支持空闲线和地址位多处理器通信格式。

3.3.1 空线多处理器的格式
当UCMODEx = 01时,空闲行多处理器格式被选择。在传输线上数据块被空闲时间分开,当在一个字符的停止位之后接收到10个或更多连续的1(标记)时,检测到传输线上空闲。接收到空闲线路后,波特率发生器关闭,直到检测到下一个开始边缘,UCIDLE位也会 置一。在空闲时间之后收到的第一个字符是地址字符,UCIDLE位被用作每个字符块的地址标签。在空闲行多处理器格式中,当接收到的字符是一个地址时,该位被置一。
在这里插入图片描述
UCDORM位用于控制空闲线多处理器格数据的接收,当UCDORM = 1,所有的非地址字符都被组装,但是不被传送到UCAxRXBUF中,并且不会产生中断。当接收到一个地址帧时,该字符被传送到UCAxRXBUF, UCRXIFG被置一,当UCRXEIE = 1时任何错误标志置一。当UCRXEIE= 0并且一个地址帧被接收,但是有帧错误或奇偶校验错误,字符不会被转移到UCAxRXBUF,UCRXIFG也不会置一。
如果接收到一个地址,用户软件可以验证该地址,并且必须置一UCDORM以继续接收数据。如果UCDORM仍然置一,则只接收地址字符。当UCDORM在接收字符期间被清除时,接收中断标志在接收完成后被置一。UCDORM位不会被USCI硬件自动修改。
对于空闲线多处理器格式的地址传输,一个精确的空闲时间可以由在UCAxTXD上生成地址字符标识符。双缓冲UCTXADDR标志指示加载到UCAxTXBUF的下一个字符之前是否有11位的空闲行。UCTXADDR在开始位生成时自动清除。
发送空闲帧

3.4 波特率自动检测
当UCMODEx = 11时,选择自动波特率检测的UART模式。为了自动检测波特率,数据帧之前有一个由中断和同步字段组成的同步序列。当接收到11个或更多连续的零时检测到中断。如果中断的长度超过21位,则中断超时错误标志UCBTOE位置一。USCI在接收到break/sync字段时不能发送数据。
在这里插入图片描述
为了符合LIN协议,字符格式应该设置为8个数据位,低位在前,没有奇偶校验,一个停止位,没有地址位。
同步字段由字节字段内的数据055h组成。同步基于模第一个下降边缘和最后一个下降边缘之间的时间测量。如果通过置一UCABDEN使能波特率自动检测功能,则使用发送波特率发生器进行测量。否则,波形将接收但不进行测量。测量结果被传输到波特率控制寄存器(UCAxBR0、UCAxBR1和UCAxMCTL)。如果同步字段的长度超过了可测量的时间,则置一同步超时错误标志位UCSTOE。
在这里插入图片描述
UCDORM位用于控制该模式下的数据接收。当UCDORM被置一后,所有的字符都被接收但是不会被转移到UCAxRXBUF,并且产生中断。当一个中断/同步字段被检测到,UCBRK标志被置一。中断/同步字段后面的字符被转移到UCAxRXBUF和UCRXIFG中断标志被设置。还设置了任何适用的错误标记。如果UCBRKIE位被置一,接收中断/同步设置UCRXIFG。UCBRK位由用户软件或读取接收缓冲区UCAxRXBUF复位。
当接收到中断/同步字段时,用户软件必须重置UCDORM以继续接收数据。如果UCDORM保持置一,只有接收到下一个break/synch字段后的字符才被接收。UCDORM位不会被USCI硬件自动修改。
当UCDORM = 0时,所有接收到的字符都置一接收中断标志UCRXIFG。如果UCDORM在接收字符期间被清除,接收中断标志将在接收完成后置一。用于检测波特率的计数器限制为07FFFh(32767)计数。这意味着采样模式下可检测的最小波特率为488波特,低频模式下为30波特。波特率自动检测模式适用于全双工通信系统,但有一定的限制。USCI在接收break/sync字段时不能传输数据,如果接收到帧错误的0h字节,在此期间传输的任何数据都会被损坏。后一种情况可以通过检查接收到的数据和UCFE位来发现。

3.4.1发送Break/ sync字段

  1. 设置UCTXBRK为UMODEx = 11
  2. 写入055h到UCAxTXBUF。UCAxTXBUF必须准备好接收新数据(UCTXIFG = 1)
    这会生成一个13位的中断字段,后面跟着一个中断分隔符和同步字符。分隔符的长度由UCDELIMx位控制。当同步字符从UCAxTXBUF转移到移位寄存器时,UCTXBRK自动复位
  3. 将需要的数据字符写入UCAxTXBUF。UCAxTXBUF必须准备好接收新数据(UCTXIFG = 1)
    写入UCAxTXBUF的数据被转移到移位寄存器并在移位后立即传输

3.5 IrDA编码和解码
当置一UCIREN时,IrDA编码器和解码器被启用并提供硬件位整形

3.5.1 IrDA编码
编码器为来自UART的发送比特流中的每一个零位发送一个脉冲,脉冲持续时间由UCIRTXPLx位定义,该位指定了由UCIRTXCLK选择的时钟的一半时钟周期的数目。在这里插入图片描述
为了设置IrDA标准要求的3/16位周期的脉冲时间,选择BITCLK16时钟UCIRTXCLK = 1,将脉冲长度设置为6个半时钟周期,UCIRTXPLx = 6 – 1 = 5。
当UCIRTXCLK = 0时,脉冲长度tPULSE基于BRCLK,计算公式为:
在这里插入图片描述
当UCIRTXCLK = 0时,前置器UCBRx必须设置为大于或等于5的值。
3.5.2 IrDA解码
当UCIRRXPL = 0时,解码器检测高脉冲。否则,它会检测到低脉冲。除了模拟抗尖峰脉冲滤波器,还可以通过设置UCIRRXFE来启用额外的可编程数字滤波器。当UCIRRXFE被置一,只有长于编程滤波器长度的脉冲被通过,短的脉冲被丢弃。编写滤波器长度UCIRRXFLx的公式为:
在这里插入图片描述
其中:tPULSE=最小接收脉冲宽度
tWAKE =从任何低功率模式唤醒时间,当设备处于活动模式时为零。

3.6自动检错
故障抑制防止USCI意外启动。UCAxRXD上任何小于故障时间tt的脉冲(大约150 ns)将被忽略。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88348.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注