串口通信学习笔记记录
🌈以下是本人在串口通信学习过程中的理解和笔记记录,是为了方便后续的学习,如有补充和错误,欢迎评论区留言!
串口通信
1.通信方式分类
按数据通信方式分类:串行通信、并行通信
通信方式 | 优点 | 缺点 |
---|---|---|
串行通信 | 占用的引脚IO少,成本低 | 传输速率低 |
并行通信 | 传输速率快 | 占用的引脚IO较多,成本高 |
按数据传输方向分类:单工通信、半双工通信、全双工通信
通信方式 | 特点 |
---|---|
单工通信 | 数据只能沿一个方向传输 |
半双工通信 | 数据可以沿两个方向传输,但需要分时进行 |
全双工通信 | 数据可以同时进行双向传输 |
按数据同步方式分类:同步通信、异步通信
通信方式 | 特点 |
---|---|
同步通信 | 带时钟端口的数据传输 |
异步通信 | 没有时钟端口,发送方和接收方使用各自的时钟控制数据的收发过程 |
常见串行通信接口特点
通信标准 | 引脚说明 | 通信方式 | 通信方向 |
---|---|---|---|
UART (通用异步收发器) | TXD:发送端 RXD:接收端 GND:公共地 | 异步通信 | 全双工 |
1-WIRE (单总线) | DQ:发送/接收端 | 异步通信 | 半双工 |
IIC | SCL:同步时钟 SDA:数据输入/输出端 | 同步通信 | 全双工 |
SPI | SCK:同步时钟 MISO:主机输入,从机输出 MOSI:主机输出,从机输入 CS:片选信号 |
同步通信 | 半双工 |
2.UART串口通信
UART串口是什么
UART(Universal Asynchronous Receiver-Transmitter):即通用异步收发器,是一种通用串行数据总线,用于异步通信。一般UART接口常指串口。
UART在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据
UART协议层
UART串口通信数据格式
起始位
:一帧的开始,必须保持一个比特位的低电平0
数据位
:传输的有效数据,数据位可选5~8位;LSB在前,MSB在后
校验位
:可选位,占用1个比特位,也可以没有校验
停止位
:一帧的结束,必须有,可选占用0.5/1/1.5/2个比特位,保持逻辑高电平1
奇校验:保证数据位和校验位1的个数为奇数。偶校验:保证数据位和校验位1的个数为偶数。
UART串口通信传输速率:波特率
波特率(BaudRate):串口通信的速率用波特率表示,它表示每秒传输二进制数据的位数,单位是bps(位/秒)
常用的波特率有9600、19200、38400、57600以及115200等。
UART串口通信是异步通信,所以其实它与时钟周期是无关的,决定它的传输速率是波特率。例如波特率为115200,表示一秒钟传输115200位数据。1秒钟是10^9ns,那么1位数据所需要传输的时间就是10^9/115200≈8680.56ns,假设是在50M的时钟周期下,1位数据传输所需要的时钟周期个数为8680.56ns/20ns≈434个,在100M的时钟周期下所需要的时钟周期个数就是8680.56ns/10ns≈868个
3.UART串口通信实验
1.实验设备及要求
实验设备:正点原子达芬奇开发板(Xilinx),电脑(上位机)
实验要求:上位机通过串口调试助手发送数据给开发板,开发板通过USB UART串口接收数据并将接收到的数据发送给上位机,完成串口数据环回。UART通信波特率:115200,停止位:1,数据位:8位,无校验位。
开发环境:Vivado_2020、Vscode、Visio。