UART通信协议总结

 UART: Universal  Asynchronous  Receiver  Transmitter

即通用异步收发器

是一种通用的串行、异步通信总线,该总线有两条数据线,可实现全双工的发送和接收。

在此之前,介绍一下什么是串行,什么是异步,什么是全双工。常用于主机和辅助设备之间的通信。


通信方式分类:-------硬件间的通信

1、按每个时刻传输的位数

串行通信:每个时刻传输一位

并行通信:每个时刻传输多位

2、按通信过程是否需要时钟信号同步

同步通信:通信双方需要同一个时钟信号进行时序上的同步

异步通信:通信双方不需要同一时钟信号进行时序上的同步

3、按同一时刻可支持的传输方向分为

全双工:A向B传输同时B可以向A传输

半双工:一个时间段A只能向B传输,但另一个时段B也可以向A传输

单工:任何时刻只能A向B传输


通信基础  ----波特率

波特率用于描述UART通信时的通信速度,单位是bps(bit  per  second)即每秒传输bit的数量

 从起始位到停止位为一帧

UART一般发送数据位是5--8位,而且以低位优先发送(LSB)。什么是低位优先,举个栗子:10101010,这8位数据通过UART发送时,顺序是01010101。

TXD:发送端引脚

RXD:接收端引脚

A-TXD、B-RXD空闲时:都为高电平

A-TXD变为低电平:起始信号A通知B准备开始接收数据

后面紧跟发送的数据:数据的位数双方需要协商好

再紧跟奇偶校验位:可有可无,用来检查传输数据的正确性

再紧跟停止位:通知接收方本帧数据发送完毕,停止位始终是高电平,停止位占用的周期数双方也需要协商好。

此外,通信双方还需协商好统一的时钟信号频率        ------波特率,传输速度  bps

### UART通信协议的工作原理 UART(Universal Asynchronous Receiver/Transmitter)是一种异步串行通信方式,主要用于短距离数据传输。它通过将并行数据转换为串行数据来实现设备间的信息交换[^1]。 #### 数据帧结构 在UART通信中,数据是以帧的形式进行传输的。每一帧通常由以下几个部分组成: - **起始位**:用于标记一帧数据的开始,通常是低电平。 - **数据位**:实际要传输的数据,长度可以设置为5到9位不等。 - **奇偶校验位**(可选):用于检测传输错误,可以选择无校验、奇校验或偶校验。 - **停止位**:用于标记一帧数据的结束,通常是高电平,长度可以是一个或两个比特。 这些参数必须在发送端和接收端保持一致才能正常通信[^2]。 #### 波特率配置 波特率定义了每秒钟传输的比特数(bps)。为了确保可靠通信,发送方和接收方的波特率应尽可能接近,允许的最大偏差约为±10%。如果超出此范围,则可能导致数据丢失或误码。 #### 单片机中的UART实现 以下是基于C语言的一个简单UART初始化函数示例: ```c #include <avr/io.h> void uart_init(uint16_t ubrr_value) { UBRR0H = (unsigned char)(ubrr_value >> 8); // 设置波特率寄存器高位 UBRR0L = (unsigned char)ubrr_value; // 设置波特率寄存器低位 UCSR0B |= (1 << TXEN0) | (1 << RXEN0); // 启用收发功能 UCSR0C |= (1 << UCSZ01) | (1 << UCSZ00); // 配置字符大小为8位 } void uart_transmit(unsigned char data) { while (!(UCSR0A & (1 << UDRE0))); // 等待直到缓冲区为空 UDR0 = data; // 发送数据 } ``` 上述代码展示了如何在一个AVR单片机上初始化UART模块以及发送字节的操作过程。 ### 总结 UART作为一种基础而重要的通信接口,在嵌入式开发领域有着广泛应用。理解其基本工作原理及其具体实现对于从事相关技术工作的人员来说至关重要。 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值