简明UART/USART串行异步收发器分析

——
参考书目:《嵌入式系统原理及应用 第3版》 马维华 北京邮电大学出版社

在开发过程中,通常用USART来打印调试信息。

UART/USART应用基础

USART和UART是一种硬件设备,本身并不是协议,但具有协议的特征,相当于异步串口通信协议。

UART与USART的区别

串口分为异步串口和同步串口。

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步串行收发传输器,既可以用于同步串行通讯,也能用于异步串行通讯。
UART(Universal Asynchronous Receiver/Transmitter)即通用异步收发传输器,只能用于异步串行通信。

当进行异步通信时,这两者是没有区别的。本文主要以UART为例

UART结构

UART双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信。
UART由控制单元、波特率产生器、UART接收器、UART发送器组成。
在这里插入图片描述
UART的主要功能为将发送时存放在发送缓冲寄存器中并行格式的数据,在控制单元和波特率发生器的同步之下,通过发送移位寄存器以串行方式发送出去,接收时把并行格式的数据在控制单元和波特率发生器的脉冲同步之下,经过移位寄存器移位变换为并行数据保存到接收缓冲器中。

发送器/接收器可采用先进先出(FIFO)模式或普通模式。
——
串口按位发送和接收字节。
发送器在FIFO模式下,当N个字节(由嵌入式芯片设置,不同种类数值不同)全部到位后才进行发送。查询发送方式时必须要等待发送缓冲器为空才能发送下一个数据。
接收器在FIFO模式下,只有缓冲器满,才引发接收中断并置位接收标志;在普通模式下,接收到一个字符就引发接收中断并置标志位。

UART通信

接线方法

UART共需要3条线,以帧的形式发送和接收串行数据:

  1. RX:接收端(接收数据输入引脚),与从机TXD相连
  2. TX:发送端(接收数据输入引脚),与从机RXD相连
  3. GND:公共地,用于电平参考

与MCU通信

两个MCU进行通信的接线方法如下图所示:
在这里插入图片描述
短距离通信范围内,由于UART与UART间电平完全一致,可直接相连(如上图),无需进行转换;
如果要延长通信距离,可采用光耦隔离的方式。

在调试的时候, 多数情况下只引出rx,tx即可,如果只需要发送或接收(单工),可只接一个。

TXD:Transmit(tx) Data,发送数据
RXD:Receive(rx) Data,接收数据

与PC通信

当MCU与PC端进行通信时,需要使用TTL-USB模块,这是因为MCU使用的串口是TTL串口,而PC使用USB串口。
在这里插入图片描述

图源自网络。

接线与同MCU通信时类似,MCU的TXD与转换模块的RXD相连;MCU的RXD与转换模块的TXD相连;MCU的GND与转换模块的GND相连.

在PC领域中USB已取代USART的地位,但在嵌入式领域中USART仍然发挥着重要作用。

UART理论基础

串口通信分为物理层协议层

协议层

UART格式

由于没有参考时钟信号,所以通信的双方必须约定串口波特率、数据位宽、奇偶校验位、停止位等配置参数,从而按照相同的速率进行通信。
UART 串口传输的数据格式如下图所示:在这里插入图片描述
一帧完整的数据帧由七十位、数据为、校验和停止位构成。
UART 串口每次传输数据开始都有一个起始位(逻辑值为0),通知对方数据传输开始;中间为要传输的实际数据;奇偶检验位用来校验代码传输正确性,可省略;结束位(停止位)表示一个数据帧传输结束。

物理层

UART与串口

串行接口(Serial Interface)简称串口,也称串行通信接口或串行通讯接口( cluster communication port,即COM口,现在一般指电脑上的串口,也属于UART),是采用串行通信方式的扩展接口。串行是指数据一位一位地顺序传送,与并行相对。
串口指的物理接口形式,嵌入式里面说的串口,一般是指UART口。
某一串口按电气标准还可分为TTL、RS-232-C、RS-422、RS485等。

UART应用TTL、RS232/RS485电平标准

UART并没有规范该使用什么电平。
由MCU引脚直接引出的一般是 TTL (Transistor-Transistor Logic)电平。TTL电平信号规定,+5V(3.3V以上即可)等价于逻辑“1”,0V等价于逻辑“0”(采用二进制来表示数据时)。在PC中的UART使用的是RS232电平。
若加入一个合适的电平转换器(常用芯片如PL2303、CH340),可实现RS232/RS485相互转换;或通过MAX232芯片实现TTL/RS232相互转换。

RS232为电气标准,DB9为接口标准。下图为DB9母头,图片摘自网络。
在这里插入图片描述

STM32 USART

STM32F4自带的USART支持同步单向通信和半双工单线通信、支持 LIN(局域互连网络)、智能卡协议与 IrDA (红外线数据协会)SIR ENDEC 规范,以及调制解调器操作 (CTS/RTS)和多处理器通信。

对UART的应用包括:

  1. 初始化UART
  2. 接收数据
  3. 发送数据

初始化

初始化包括引脚配置、波特率设置、字符格式设置、使能相关中断。

发送和接收

由于接收是随机和被动的,而发送时主动的,因此通常接收采用中断方式,发送采用查询方式

中断接收时,使能接收中断,一旦由接收的数据,可在中断服务函数中读取。
发送数据时,首先将待发送的数据写入数据寄存器中,然后等待发送结束。

奇偶校验

将 USART_CR1 寄存器中的 PCE 位置 1,可以使能奇偶校验控制;在PS位中设置为 0 则为偶校验,否则为奇校验。

USART中断

以下为中断事件,中断事件后为使能控制位,在USART_CR1~3中配置,如果相应的使能控制位置 1,则这些事件会生成中断。
● 发送期间:发送完成TXEIE、发送数据寄存器为空TCIE。
● 接收期间:上溢错误ORE、接收数据寄存器不为空RXNEIE

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值