4.1-4.3异步(UART)通信全解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
同步、异步的概念
异步通信:处理器之间不使用公共的参考时钟,通信双方 分别有自己的时钟源,但必须使用相同的波特率。例 如UART就是属于串行异步通信。 同步通信:由主机提供时钟与数据,从机使用该时钟接收 数据或发送数据,即通信双方公用时钟源。例如:SPI 和I2C就属于串行同步通信。
4.2 USCI模块概述
– 自动波特率检测; – 灵活的时钟源。
• RX干扰抑制; • 使能DMA; • 错误检测。
USCI_Ax模块框图—— UART模式
在异步模式下, USCI_Ax模块通过两个 外部引脚UCAxRXD和 UCAxTXD将芯片连接 到外部系统。
当UCSYNC = 0时, 选择UART模式。
初始化USCI模块
• 使用USCI模块之前,要先对其进行初始化配置。
建议采用以下步骤初始化或重配置USCI模块:
– 置位UCAxCTL1的UCSWRST;
– 初始化USCI寄存器;
– 配置相应引脚端口;
– 软件清零UCSWRST;
– 使能UCxRXIE和/或UCxTXIE中断。
波特率生成
• 对于一个特定的时钟源 的频率,分频值下列公 式给出:
• 通常情况下,N不是一 个整数,因此,需要使 用调制器。
低频波特率生成
• 当UCOS16 = 0时即选择为“低频波特率生成”模式。由 于该模式使用低频时钟信号(32.768 kHz晶振),故其非常 适合低功耗应用。 • 波特率是由分频器和调制器中获得。 • 寄存器将通过下面公式得出的值来进行配置。
USCI模块特性
• 低功耗运行模式(自动启动) • 两个独立模块:
– USCI_A:
– 支持Lin/IrDA的UART; – SPI( 主/从、3线和4线模式)。
Hale Waihona Puke Baidu
– USCI_B:
– SPI (主/从、3线和4线模式); – I2C (主/从, 高达400 kHz)。
• 双缓冲TX/RX; • 波特率/位时钟发生器:
UART帧结构图
起始位 数据区(由低到高) 1位 一般为7位或8位
校验位 停止位 1位 一般可选为1位或2位
8位数据、无校验、一位停止位的工作示例图
使用UART通信
使用UART通信需要两个引脚:
常用UART接口
• RS232:是美国电子工业协会(EIA)制定的串行通讯标准, 又称RS-232-C 。RS232是一个全双工的通讯标准,它可 以同时进行数据接收和发送的工作。 • RS485:
TxD TxD
UART特性
UART是用硬件实现异步串行通信的通信接口电路。
全双工
异步模式可编程的7位、8位、9位数据 独立的波特率发生器 最大波特率是时钟频率的1/16 两个缓冲器用于发送和接收 CTS用于发送操作 可编程的奇、偶和无校验 检测帧错误和纠正错误 支持发送和接收中断
4.3 通用串行通信接口 (USCI) — UART模式
主要内容
• UART总线协议
– 总线结构 – 工作模式 – 数据传输时序
• MSP430 UART模块
– – – – USCI概述 主从机模式 UART模块寄存器 应用示例
全双工串行接口(UART)应用场合
UART(Universal Asynchronous Receiver and Transmitter,异步 TxD TxD 通信收发器),俗称“串口”。 片内 其它 RxD RxD UART 串口是嵌入式系统与外界联系的重要手段,主要用于以下 通信设备 模块 两个方面: 1、UART直接和其他的控制器进行数据交换 RS232 PC机串口是RS232电平,所 2、UART 片内和PC机通信:由于 电平转换 RxD RxD 以连接时需要使用 RS232 转换器 UART PC机串口 模块
– 4.6 通用串行总线协议USB模块
Copyright 2009 Texas Instruments All Rights Reserved www.msp430.ubi.pt
3
4.1 通信系统概述
通信系统模型
• 所有数字通信系统都具有三种设备:
– 发送器:把信息处理成合适的格式,然后发送;
– 接收器:收集信息并抽取出原始数据; – 通信介质:为信息流提供物理介质,通常为双绞线、光纤或射频 网络。
发送数据自加1, 并赋值给发送缓冲
本次接收到的数据 赋值给发送缓冲
主机——端口初始化
P8SEL |= BIT2+BIT3; P8DIR |= BIT2+BIT3;
选择P8.2~P8.3为外设功能 选择P8.2~P8.3端口方向为输出
主机——UART模块初始化
UCA1CTL1 |= UCSWRST; UCA1CTL1 |= UCSSEL_1; UCA1BR0 = 0x03;
程序流程图
主机
初始化SPI模块 初始化发送数据 MST_Data RX ISR
判断发送缓冲是否为空, 若是,则发送第一个字符 判断发送缓冲是否为空, 为空说明上次发送完毕
从机 RX ISR
初始化SPI模块
判断发送缓冲是否为空, 为空说明上次发送完毕
判断本次接收到的字符 和上次发送是否相同, 相同则亮灯
超采样波特率生成
• 当UCOS16 = 1时即选择为“超采样波特率生成”模式。 这个模式具有精确的位时序。它需要时钟源比所需的波特 率高16倍。 • 通过以下两步可以产生波特率: • 将时钟源16分频,结果存于BITCLK16,然后作为时钟源 由分频器再次分频,然后供给第一个调制器。 • BITCLK由BITCLK16定义,通过16分频及第二个调制器。 • 寄存器将通过下面公式得出的值来进行配置。
通信常用术语
• • • • • 并行:数据各位同时进行传送 串行:数据逐位顺序进行传送 全双工:(串行通信)收/发可同时进行 半双工:(串行通信)收/发不可同时进行 波特率(bps.):单位时间传送的位数
并行通信
• 在并行通信系统中,要发送的数字值的每个位都具有独立的信号线。 多条线上的逻辑电平共同形成了要发送的信息的值,下图为ASCII字 符“W”并行传输。
第四章 MSP430通信接口
本章概述
• MSP430系列微控制器中具有通信模块USCI (通用串行通信接口),可配 置成以下三种通信接口:
– 它能够配置成UART(通用异步通信协议)(异步)
– SPI(串行外设接口协议) (同步) – I2C(内部集成电路协议)模式(同步) • 此外,一些MSP430系列还具有USB模块,它完全兼容USB 2.0全速 规范,扩展了MSP430的应用领域范围。
时钟配置
while(BAKCTL & LOCKIO) BAKCTL &= ~(LOCKIO);
解锁XT1引脚
UCSCTL6 &= ~(XT1OFF); UCSCTL6 |= XCAP_3; do { UCSCTL7 &=
~(XT2OFFG + XT1LFOFFG + DCOFFG);
打开XT1 选择内接电容大小
uart模式下可用的USCI寄存器
USCI_Ax和USCI_Bx都有SPI模块,下面以USCI_Bx为例,介绍相关寄存器
名称
UCBxCTLW0 UCBxBRW UCBxMCTL UCBxSTAT UCBxRXBUF UCBxTXBUF UCBxI2COA UCBxI2CSA UCBxICTL UCBxIE UCBxIFG UCBxIV
描述
USCI_Bx控制字0 USCI_Bx波特率控制字 USCI_Bx调制器控制 USCI_Bx状态寄存器 USCI_Bx接收缓存 USCI_Bx发送缓存 USCI_Bx I2C本机地址 USCI_Bx I2C从机地址 USCI_Bx中断控制 USCI_Bx中断使能 USCI_Bx中断标志 USCI_Bx中断向量
串口通信 (1/2)
串行通信的基本特征是数据逐位顺序进行传送串行通信 的格式及约定(如:同步方式、通讯速率、数据块格式、信 号电平……等)不同,形成了多种串行通信的协议与接口标 准。 常见的有: • 通用异步收发器(UART) • 通用串行总线(USB) • I2C总线 • CAN总线 • SPI总线 • RS-485,RS-232C,RS422A标准……
USCI_Bx模块逻辑复位 CLK = ACLK
配置波特率, 32kHz/9600=3.41
UCA1BR1 = 0; UCA1MCTL = UCBRS_3+UCBRF_0; UCA1CTL1 &= ~UCSWRST UCA1IE |= UCRXIE;
调制UCBRSx=3, UCBRFx=0
USCI_Bx复位释放 使能UART模块接收中断
串行异步通信的波特率
对于给定的BRCLK时钟源,所使用的波特率将决定分频因子N:
N = INT(fBRCLK / Baud)
式中,fBRCLK为实际进入波特率发生器的时钟频率 Baud为实际所需要的波特率 如果两者之比 < 16,则令 UCOS16 = 0 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·低频模式 UCBR = INT(N) · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·取整 UCBRS = round[( N-INT(N) )×8] · · · · · · · · · · · · · · · · · · · · ·四舍五入后取整 如果两者之比 ≥16,则令 UCOS16 = 1 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·低频模式 UCBR = INT(N/16) · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·取整 UCBRS = round{[(N/16)-INT(N/16) ]×8} · · · · · · · · · ·四舍五入后取整
UART 工作原理
需选择一波特率作为发送(/接收)数据的时序,交互 双方的波特率必须一致。 UART的数据以帧为单位发送,一帧数据由以下几个 部分顺序组成:开始位、数据位(可选位数7位或8 位)、校验位(可选)、停止位(可选位数1位或2 位)。通信双方的可选部分的设置必须完全一致。 数据成功的发送和接收,都有专门的中断和状态位来 指出,例如,接收到一帧数据,如果相应的中断开启, 那么进入中断处理程序读出数据,如果未开启,则可 以通过循环查看接收状态位来确定数否收到数据。
串行通信 (2/2)
• 在串行通信系统中,物理发送介质只需要一条信号线。发 送器根据发送器和接收器之间指定的速率发送比特序列。 要使通信双方同步,还需要一些额外的信息:
– 起始位:加到要发送的信息的开头,以识别一个新数据的开始; – 停止位:加到要发送的信息的尾部,表示传输结束。
图 ASCII字符“W”串行传输
访问
读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读
复位值
0001h 0000h 00h 00h 00h 0000h 0000h 0200h 00h 02h 0000h
寄存器访问
字 字 字节 字节 字节 字 字 字 字节 字节 字
应用示例
SPI主机与从机通过三线SPI接口通信,主机发送数据给从机,同时 又接收从机发来的数据,发送数据从0x01开始递增,从机接收到数据, 就立马发出,主机接到这个数据,进入中断如果发送和接收数据相同, 则点亮LED灯,否则熄灭。
Copyright 2009 Texas Instruments All Rights Reserved www.msp430.ubi.pt
2
本章结构
• MSP430通信接口
– 4.1 通信系统概述
– 4.2 USCI模块概述 – 4.3 通用异步通信协议UART模式 – 4.4 串行外设接口协议SPI模式 – 4.5 内部集成电路协议I2C模式