---
title: I2C, UART和SPI 三种串口
url: "https://www.fpgalearn.com/9499.html"
kind: article
id: 9499
excerpt: 基本理论知识 i. 并行通信/串行通信 ii. 异步通信/同步通信 iii. 半双工通信/全双工通信 i. 并行通信/串…
published_at: 2025-07-16
author: 二牛学FPGA
tags: fpga入门, FPGA工程, I2C, SPI, UART, 三种串口
word_count: 2189
source: "https://www.fpgalearn.com"
---

# I2C, UART和SPI 三种串口

> 标签：fpga入门、FPGA工程、I2C、SPI、UART、三种串口
> 基本理论知识 i. 并行通信/串行通信 ii. 异步通信/同步通信 iii. 半双工通信/全双工通信 i. 并行通信/串…

> 基本理论知识 i. 并行通信/串行通信 ii. 异步通信/同步通信 iii. 半双工通信/全双工通信 i. 并行通信/串…

基本理论知识
i. 并行通信/串行通信
ii. 异步通信/同步通信
iii. 半双工通信/全双工通信
i. 并行通信/串行通信
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/07/图片1-1.png)
并行通信：传输速度快，  —次传输8bit，但是通信成本高，需要8个独立的通道，另外不支 持长距离传输。用于打印机和扫描仪等设备，例如DB-25接口。
串行通信：传输速度慢，成本低，支持长距离传输，是计算机通信的主要方式，例如DB- 接口。
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/07/图片2.png)
ii. 异步同步/同步通信
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/07/图片3.png)
异步通信：用于低速设备，会有更高的误码率。
同步通信：用于高速设备传输，同步传输有同步时钟为节拍进行传输数据。
iii. 半双工通信/全双工通信
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/07/图片4.png)
单工通信：发送机只能给接收机发送数据，不允许从接收机发送给发送机。
半双工通信：发送机和接收机可以相互读写通信，但不能同时读写。
全双工工信： 发送机和接收机可以相互读写通信，且能同时读写。
I2C, UART和SPI串口
i. UART串口
UART(Universal Asynchronous Receiver Transmitter） ，具有串行通信 、异步通信 、全 双工通信的特点，  两线制(TX, RX)， 传输速度慢，点对点的异步通信，  —般用于RJ45 Console、打印机等。
ii. I2C串口
I2C(Inter-Integrated Circuit)， 具有串行通信 、同步通信 、半双工通信的特点，两线制 (SDA, SCLK)，用于监控、存储和数字信号处理器等。
iii.SPI串口
SPI(Serial Peripheral Interface)，具有串行通信 、同步通信 、全双工通信的特点，四线制 (CS, SCLK, MOSI, MISO)， 传输速度快， 时许同步准确， —般用于存储器、数字信号处 理、传感器和语音识别等。
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/07/图片5.png)
i. UART串口
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/07/图片6.png)
UART工作原理:
发送器UART1从发送端数据总线接收到并行数据，将起始位、校验位和停止位添加到数据 帧中，打包成数据包；然后将数据包以串行方式发送给接收器UART2；UART2以预配置的 波特率对数据进行采样，将数据包还原成数据帧；最后UART2将数据帧串行转并传输给接 收端的数据总线。
ii. I2C串口
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/07/图片7.png)
I2C是两线制(SDA, SCLK)，通过上拉电阻接到电源线，总线空闲时，SDA,SCLK都保持高 电平。
I2C的数据传输过程：
Step1： I2C总线空闲时，上拉电阻使SDA, SCLK处于高电平。
Step2：Master发送start后，将SDA由高电平切换成低电平，然后SCLK线也由高电平切换 成低电平。
Step3： Master在发送start后，再发送 slave的地址和读/写的命令 ，其中write是0，read 是1，slave收到地址和读写命令后， 向master回复ASK。
Step4 ：Master收到ASK后，再发送特定寄存器的地址， slave收到后回复master ASK。
Step5： Master再次收到ASK后，再像特定的寄存器发送8bit数据，slave收到数据后回复 ASK，重复这—动作直至数据发完。
Step6 ：Master收到stop，SCLK由低电平切换成高电平，随后SDA也从低电平切换成高电 平。
iii. SPI串口
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/07/图片8.png)
SPI是—种四线制的串口总线，有CS, SCK，MOSI和MISO四种信号。
![图片](https://admin.shaonianxue.cn/wp-content/uploads/2025/07/图片9.png)
时钟极性：Clock Polarity(CPOL)分为空闲时刻和通讯时刻，CPOL=1表示时钟空闲为高电 平；CPOL=0表示时钟空闲为低电平。
时钟相位：Clock Phase(CPHA)，数据从产生到稳定需要—定时间，如果Master上升沿采 样，那么Slave只能下降沿采样。CPHA=1 表示数据采样在第—个时钟沿上，这个时钟是上 升沿还是下降沿由 CPOL决定；CPHA=0表示在第二个时钟沿上进行数据采样。
