第5章 通用同步、异步收发器USART

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 5章
通用同步/异步收发器USART
第5章 通用同步/异步收发器USART
USART(Universal Synchronous / Asynchronous Receive / Transmit)是MSP430单片机的重要外围串行通信接口。 MSP430F449有2个USART:USART0和USART1。 USART可以工作于异步模式,即通用异步收发(UART), USART也可以工作于同步模式,即SPI(Serial Peripheral Interface串行外设接口)。
URXSE = 1时,串行口检测到UART起始位是就产生接收中断,退出低 功耗模式。中断程序通过查询URXIFGx可以判断是起始中断还是结束中断。
b5~4:SSEL1,SSEL0: 时钟源选择。时钟源是计算波特率字的主要依据。
SSEL1-0 00 01 10,11
时钟源 UCLKI ACLK SMCLK
起始中断 URXSEx = 1 URXIFGx = 0
接收中断 URXSEx = 0 URXIFGx = 1
S
D0
D1
D2
D3
D4
D5
D6
D7
P
S
正常情况下,UART的接收中断应该是接收到一个有效的UART帧时发 生,此时RXBUFx是收到的数据,其它时间RXBUFx数据无效(或是前一帧 的数据)。 MSP430单片机有多种低功耗运行模式,例如在LM3模式下,MCLK、 SMCLK都是关闭。如果UART使用的是SMCLK,在正式接收UART数据前 就必须启动SMCLK。任何中断都会自动退出低功耗模,启动SMCLK。
32768 =3.413 计算: 9600
注意:UBRx ≥ 3,如果UBRx < 3, 波特率将会出现不可预见的错误。
整数:3 ;UBR11=00h,UBR01=03h 调整:0.413×8=3.304≈3 ;UMTCL1有3个比特为1, ;取UMTCL1=01001001b=49h 波特率误差:
USART控制寄存器UCTL: UCTL0(070h),UCTL1(078h) 7 6 5 4 3
PENA PEV SP CHAR LISTEN
2
SYNC
1
MM
0
SWRST
b0:SWRST:软件复位USART状态机。 0:USART正常运行 1:初始化USART的状态机,运行标志初始化成初始状态 b1:MM:多处理器模式选择。 0:线路空闲多处理机协议(常规的异步协议) 1:地址位多处理机协议 b2:SYNC:同步模式使能。 0:UART模式 1:SPI模式

m = 2,
i 0
11000000b、01100000b、00110000b、……10001000b、 01000100b、00100001b、00010001b等。 UMTCLx的作用是对波特率误差进行插补修正,因此 UMTCLx中的“1”应该均匀分布。例如 如
m = 2时,
i 0 i
S D0 D2 D4 D5 D6 D7 S
D1
D3
P
5.1.3 异步通信模式 线路空闲多处理机模式: 在这种模式下,数据块被一段空 闲时间分隔。在字符的第一个停止位之后接收到10个以上 的”1”,则表示检测到接收线路空闲。
地址位格式:在这种模式下,字符包含一额外的位作为 地址标识。数据块的第一个字符携带一个置位的地址位,以 表明该字符是一地址。当接收字符是地址时RXWake位置位, 并且被送入接收缓存URXBUF(允许接收时)。 正常情况下,如果USART的URXWIE位置位,数据字符按 通常方式在接收器拼装,但是它们不会送入接收缓存URXBUF, 也不会产生中断。只有当接收到一个地址位置位的字符,接 收器暂时被激活,字符送入URXBUF,同时URXIFG置位。相应 的错误状态标志将置位。应用软件按有效利用资源、降低功 耗的原则作后续操作。应用软件可验证接收到的地址。如果 匹配,处理机将读取数据块的后续数据;如果地址不匹配, 处理机将等待下一地址字符的到来。
随着单片机计算能力的增强,大多数UART通信都采用可 靠性更高的校验方法,如累加和法、CRC校验法等。 采用累 加和法或CRC校验法通信时,奇偶校验位PA将被省略。
6、停止位P: UART可选的停止位包括1,1.5,2。 停止位是UART帧的最后信息元,单片机在收到停止位后必 须进行相应的处理,如存储RXD的数据,根据通信协议进行 数据串处理。 过去由于处理器的处理能力(速度)有限,1位停止位的时间 可能不够进行处理,所以希望发送端在发送完1帧数据后能够 多留时间给接受端处理数据。 目前由于单片机的处理速度足够快,所以绝大多数UART通 信只采用一个停止位。 目前常用的UART的帧格式为:(1,8,n,1),即1个起 始位;8个数据位;无校验位;1个停止位。
b3:URXEIE:接收错误字符中断使能 0:只要有错误字符都不改变URXIFG 1:所有字符都使URXIFG置位
b4:BRK:数据链断裂标志。 当RXD连续10bit(一帧UART)都是0,BRK被置位 0:数据链链断裂 1:数据链断裂 b5:OE:URXBUF溢出标志。 当接收到的字符送进URXBUF时,前一个字符还没有读走 0:无溢出 1:URXBUF溢出 b6:PE:奇偶校验出错。 当校验允许PENA = 0时, PE总是0。 0:无错误 1:奇偶校验出错 b7:FE:停止位错误。 没有停止位,或停止位不完整。 0:停止位正常 1:停止位错误
4、地址位AD: MSP430单片机的UART模块支持多机通信(类似于Bitbus总 线 )。
多机通信的各个节点都有自己的独立编号,即地址。以便 所有收到数据的节点可以判断是否相应该串数据。
多机通信数据串的第一个帧总是节点地址,即AD = 1;数 据串的其余帧都是数据,即AD = 0。 有些多机通信可以靠数据串协议识别地址,可以不用AD地 址位。所以AD是可选项,不是必选项。
7
UMTCLx = 10001000b、01000100b、 001000010b、00010001b就比较合理
举例:1、串行口1: 波特率时钟采用子系统时钟:BRCLK=SMCLK=1048576Hz 波特率:9600。
1048576 计算: =109.227 9600
整数:109 = 006Dh ;UBR11=00h,UBR01=6Dh 调整:0.227×8=1.816≈2 ;UMTCL1有2个比特为1, ;取UMTCL1=00100010b=22h 波特率误差:
发送控制寄存器UTCTL: UTCTL0(071h),UTCTL1(079h) 7 6 5 4 3
未用 CKPL SSEL1,SSEL0 URXSE
2
TXWAKE
1
未用
0
TXEPT
b0:TXEPT:发送缓冲器空闲标志。 0:发送缓冲器忙,有数据正在发送 1:发送缓冲器空,可以发送新数据 b2:TXWAKE:传送唤醒。 0:下一帧发送的是数据 1:下一帧发送的是地址 b3:URXSE:UART接收起始沿中断选择。 0:禁止接收沿中断 1:允许接收沿中断
b3:LISTEN:侦听使能。 0:不侦听 1:RXD侦听由TXD发送出的数据,即自发自收。 b4:CHAR:字符长度选择。 0:7位有效数据,Bit7填0 1:8位有效数据。 b5:SP:停止位长度选择。 0:1位停止位 1:2停止位。 b6:PEV:奇偶校验选择(PENA = 1时有效) 0:奇校验 1:偶校验。 b7:PENA:校验允许。 0:无校验位 1:奇偶校验(位)允许。
5.1.4 UART的波特率 波特率:通信速率,单位bps(bit/s)。UART的标准波特率包括300、600、 1200、2400、4800、9600、19200……。 UART的收发双方的波特率必须是一致的。 5.1.5 异步模式下的寄存器 控制和状态寄存器:USART模块的硬件是字节结构的,必须用字节指令 访问(后缀“B”)。 寄存器 USART控制寄存器 发送控制寄存器 接收控制寄存器 波特率调整寄存器 波特率寄存器0 波特率寄存器1 接收缓存 发送缓存 符号 CTL UTCTL URCTL UMCTL UBR0 UBR1 URXBUF UTXBUF 说明 设置串行口模块的工作方式,查询状态 选择串行口时钟源,查询发送状态等 选择纠错方式,查询接收状态等 对波特率误差进行插补修正 波特率字低位 波特率字高位 接收到的数据从URXBUF中读出 准备发送的数据送入UTXBUF
波特率选择和调制控制寄存器: UBR00(074h)、UBR01(07Ch): 波特率低位; UBR10(075h)、UBR11(07Dh): 波特率高位; UMTCL0(073h)、UMTCL1(07Bh):波特调整(小数)寄存器;
波特率时钟 Baud rate = 波特率字 波特率调整
ΔB= 标准波特率 - 实际波特率 标准波特率字 ×100%
9600 =
B R C LK 1048576 9600 1 7 2 U BR x+ m i 109 + 8 i= 0 8 ×100% 0. ×100% = 02% 9600 9600
2、串行口0: 波特率时钟采用辅助时钟:BRCLK = ACLK = 32768Hz 波特率:9600。
5.1 通用异步串行接口UART 在异步模式下,接收器实现自身帧同步,及收发双方单 片机不使用同一个时钟源。 波特率由收发双方的单片机各自产生。
5.1.1 串口操作的基本步骤 略,见后面的编程举例
5.1.2 通用异步串行口的数据格式 异步帧格式由以下几部分组成: 1个起始位; 7或8个数据位; 奇/偶/无校验位(可选); 1个地址位(地址位模式,可选) 1或2个停止位组成。
5、校验位PA: 标准的UART帧可以包括奇偶校验位PA。是奇校验就计算 前7位(或8位)的1的个数。是奇数,则在第八位填0,是 偶数,则在第八位填1。偶校验类推。接收方以此为判断传 输的正确性。 偶校验只能检验一位码元的错误,如果出现两位同时出错, 就会出现校验错误。在通信背景噪声严重的系统中通信,出 现一位码元以上的错误啊常有的,所以奇偶校验并不十分可 靠。
2
1
RXWAKE
0
RXERR
URXWIE
b0:RXERR:接收错误标志。详见BRK、OE、PE、FE。 0:没有错误 1:接收错误 b1:RXWAKE:接收唤醒检测。地址位多处理机协议时使用 0:收到的字符是数据 1:收到的字符是地址 b2:URXWIE:接收中断类型选择 0:收到所有字符都产生中断URXIFGx 1:只有收到地址字符才产生中断URXIFGx
S
D0
D1
D2
D3D4Biblioteka D5D6D7 AD
PA
P1
P2
S
1、UART的空闲: 在没有串行数据收发时,串行口的发送端TXD始终保持高 电平。
2、起始位S: UART的每一帧数据都是由一个从高电平到低电平的跳变开 始。 接收端收到的第一个负跳变沿就当做一个新的接受帧的开始, 并且用这个负跳变沿校准接受端的帧同步时钟。 3、数据位Dx: UART的数据发送总是先方式低位,再发送高位即: D0,D1,D2……D6,D7。 UART的数据位可以是7位(此时D7 ≡ 0),也可以是8位。 7位数据主要是为发送ASCII码设计的(数据范围00h~7Fh), 但仍然是发送8个数据位,仅仅是D7 ≡ 0。 8位数据可以发送00h~0FFh的任何数据,所以8位数模式可 以发送包括ASCII码在内的任何数据。
说明 外部时钟源 辅助时钟 子系统时钟
b6:CKPL:时钟极性。 CKPL位控制外部时钟UCLKI信号的极性 0: UCLKI UCLK 1: UCLKI UCLK
接收控制寄存器URCTL:
URCTL0(072h),URCTL1(07Ah) 7 6 5 4 3
FE PE OE BRK URXEIE
其中
m
i 0
7
BRCLK 1 7 UBRx mi 8 i 0
i
表示UMTCLx中, “1”的个数:
7 mi 0 i 0 min
7 mi 8 i 0 max
相同的
7
m
i 0 i
7
i
值可以有不同的UMTCLx。 UMTCLx可选的数为:
相关文档
最新文档