备战秋招03——UART接口电路设计(1)

一、UART基本原理

1.UART基本概念

       UART全称为通用异步收发传输器(Universal Asynchronous Receiver-Transmitter),是一种常用的串行通信接口。它通过发送和接收数据的方式,在计算机系统中实现设备之间的通信。UART负责处理数据总线和串行口之间的串并转换,并规定了帧格式,只要双方采用相同的帧格式和波特率,仅用两根信号线(RX、TX)就可以完成异步通信。

2.UART帧格式

空闲位:当通信双方不传输数据时,空闲位会一直处于高电平。为了区分数据是否开始传输,设置了起始位。

起始位:当起始位为低电平时开始进行数据传输。根据从空闲位的高电平到起始位的低电平的电平改变,来判断数据是否开始传输。

数据位:用来放置要传输的数据,位数为5-8位。通常是一个字节8位。

检验位:通过校验位来判断传输的数据是否有误。分为奇校验和偶校验。校验位可有可无,根据需要来决定。(奇校验:数据位加上奇校验位共有奇数个1;偶校验:数据位加上偶校验位共有偶数个1)

停止位:默认为高电平。由于UART是异步传输,为了防止误差,最多传输8bit就要停止,重新发送。

3.UART波特率

3.1 基本概念

波特率:每秒钟传送的码元数,单位是Bd/s。(当码元为1 bit时,即bps)

3.2 计算

若全局时钟为100 MHz,波特率要设置为9600 bps,如何产生?

1/9600 = 104166 ns/bit

1/100 M = 10ns

104166 /10 = 10416(分频系数)

使用计数器进行分频设计,产生9600 bps。

3.3 与比特率、采样频率的区别

①比特率

比特率:每秒钟传送的二进制比特数,单位是bps。

波特率 = 比特率 x 调制一个码元所需要的比特数(码元:相同时间间隔内的信号表示一个当码元的离散状态个数M大于2时,称为M进制码元)

码元可以是1bit、2bit、3bit等,只有当调制一个码元所需要的bit数为1时,波特率 = 比特率。

②采样频率

采样频率:单位时间内从连续信号中提取并组成离散信号的采样个数,它用 赫兹 (Hz)来表示。

在数据的传输中,信号可能受到一些干扰而产生一些抖动,如果接收端只对这些信号进行一次采样,那么它有可能采样到的是不准确的数据,所以接收端在采样时,通常都要采样多次,然后通过处理获得准确的数据。

所以采样频率 ≠ 波特率。

二、UART优缺点与应用

1.优点

简单易用:UART使用简单的硬件和协议,只使用两根电线,不需要时钟信号,易于实现和使用。

低成本:UART使用简单的硬件和协议,成本较低。

可靠性高:UART使用异步通信方式,有一个奇偶校验位,可以在不同的时钟频率下进行通信,具有较高的可靠性。

通信距离远:UART可以通过线路驱动器和接收器进行电平转换,从而实现较长的通信距离。

2.缺点

速度有限:UART的通信速度受限于波特率,通信速率相对较低,且每个UART的波特率差异必须在10%之内。

只能点对点通信:UART只能实现点对点的通信,不支持多个从属或多个主系统,无法实现多点通信。

数据帧长度固定:UART的数据帧长度是固定的,无法灵活调整。

3.应用

UART广泛应用于各种领域,包括电子设备、通信设备、嵌入式系统、工业控制等。以下是UART的一些常见应用:

串口通信:UART常用于串口通信,如计算机与外设的通信、嵌入式系统的调试等。如打印机、扫描仪、传感器等。通过串口通信,可以实现数据的传输和控制。

数据采集与传输:UART可以用于传输各种类型的数据,如传感器数据、控制命令等。例如,将UART接口连接到传感器,可以获取传感器的数据。

无线通信:UART可以与无线模块结合使用,实现无线通信功能。例如,将UART接口连接到无线模块,可以实现无线数据的传输和通信。

工业自动化:UART可以用于工业自动化领域的数据采集和设备控制。例如,将UART接口连接到PLC(可编程逻辑控制器),可以实现设备的控制和监控。

汽车电子:UART可以用于汽车电子领域的数据传输和通信控制。例如,将UART接口连接到显示屏,可以实现数据的显示和控制。

总之,UART是一种常用的串行通信接口,具有广泛的应用领域。它可以实现设备之间的数据传输和通信,是许多电子设备和系统中不可或缺的一部分。

三、参考

UART通信协议(一)比特率和波特率_uart波特率_陆小白很白的博客-CSDN博客

【数字IC】深入浅出理解UART协议_uart数据帧格式由哪几部分组成_张江打工人的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UART(Universal Asynchronous Receiver/Transmitter)是一种常见的串行通信接口,常用于微处理器与外部设备之间的通信。验证UART接口电路的源码主要包括两部分:发送数据的源码和接收数据的源码。 发送数据的源码主要涉及如何将待发送的数据通过UART接口发送给外部设备。通过UART发送数据的过程通常需要以下几个步骤:配置UART相关寄存器、写入待发送的数据和等待发送完成的标志。以下是一个简化的UART发送数据的源码示例: ```c #include <reg52.h> // 头文件,包含了相关寄存器的定义 // 定义UART的波特率 #define BAUDRATE 9600 // 初始化UART void UART_Init() { TMOD = 0x20; // 设置定时器1为工作模式2,8位自动重装计数器 TH1 = TL1 = 256 - (11059200 / 12 / 32 / BAUDRATE); // 设置波特率 TR1 = 1; // 启动定时器1 SCON = 0x50; // 设置串口工作模式 } // UART发送数据 void UART_SendData(unsigned char data) { SBUF = data; // 将待发送的数据写入发送缓冲区 while (!TI); // 等待发送完成的标志置位 TI = 0; // 清除发送完成的标志 } // 主函数 int main() { UART_Init(); // 初始化UART unsigned char sendData = 0x55; // 待发送的数据 while (1) { UART_SendData(sendData); // 发送数据 sendData++; // 更新待发送的数据 } return 0; } ``` 接收数据的源码主要涉及如何通过UART接口接收外部设备发送的数据。通过UART接收数据的过程通常需要以下几个步骤:配置UART相关寄存器、等待接收数据的标志、读取接收到的数据。以下是一个简化的UART接收数据的源码示例: ```c #include <reg52.h> // 头文件,包含了相关寄存器的定义 // 初始化UART void UART_Init() { TMOD = 0x20; // 设置定时器1为工作模式2,8位自动重装计数器 TH1 = TL1 = 256 - (11059200 / 12 / 32 / BAUDRATE); // 设置波特率 TR1 = 1; // 启动定时器1 SCON = 0x50; // 设置串口工作模式 } // UART接收数据 unsigned char UART_ReceiveData() { while (!RI); // 等待接收数据的标志置位 RI = 0; // 清除接收数据的标志 return SBUF; // 返回接收到的数据 } // 主函数 int main() { UART_Init(); // 初始化UART unsigned char receivedData; // 接收到的数据 while (1) { receivedData = UART_ReceiveData(); // 接收数据 // 处理接收到的数据 } return 0; } ``` 以上是UART接口电路验证的源码示例,通过这些源码,可以实现UART接口电路的数据发送和数据接收功能,从而验证UART接口电路的正常工作。当然,具体的源码实现还需要根据具体的硬件平台和编程语言进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值