UART、I2C与SPI通信协议的比较

简介: UART、I2C与SPI通信协议的比较

1.引言

UART、I2C(IIC)与SPI可以说是在嵌入式操作系统中最常见的三种通信协议,那么,这三种通信协议孰优孰劣呢?

正所谓:“梅须逊雪三分白,雪却输梅一段香”。在信息迅速迭代的今天,这三种通信协议仍然能在嵌入式开发中占有绝对的优势,肯定都有着各自的看家本领,很多时候这三种通信协议的选择,是出于主控芯片(有可能是单片机)本身的接口数量和从机芯片本身具有的通信协议出发的。

关于这几个通信协议的具体介绍请参考下面链接:

UART串口通信

IIC(I2C)通信协议详解

SPI通信协议详解

2.协议对比

具体可以从一下几个方面进行对比:

  • 从传输速度来看,UART是比较慢的,不过有很多个波特率可以设置,因在UART中,波特率=比特率,因而可以很方便地与其他二者进行比较。UART有很多种波特率可以设置,最常见的是9600115200;IIC有两种模式,标准模式和快速模式,标准模式下可达100Kb/S,快速模式下最快400Kb/S;SPI最快可达上百MHz,直接碾压前面两种。
  • 从传输线来看表面上SPI是最浪费传输线的,但其实有个问题,就是一般情况下UART只支持一对一传输,而其他两种传输协议则支持一主多从数据传输,所以综合来看,传输线的数量应该是UART最少。
  • 数据可靠性是个很重要的指标。一般在很多系统中,快和准一直是一对矛盾。传输协议也不例外。虽然SPI传输速度非常快,但这也意味着数据的准确性得不到保证。UART有奇偶校验,而I2C有应答机制,都以一种优雅的方式解决了这个问题,但这点在SPI上缺并未体现。
  • 最后便是同步和异步的问题,UART支持异步传输,而I2C和SPI只支持同步传输。

特别地:

  1. UART也可以实现“一主多从”,但这个时候需要借助硬件使其进行RS485通讯,而且有个好处,就是软件部分基本不需要改什么东西(对比原来的UART),提升了开发效率,且RS485通讯距离很远,由于采用差分信号的传输方法,可以大大抑制共模干扰。最远可以传输1000多米。
  2. UART是软件开发中程序调试的重要手段,因为并不是所有的嵌入式开发都可以有工具进行debug调试。
  3. I2C传输协议需要外接上拉电阻,这个时候电阻值就显得尤为重要,有时候会因为电阻值取得不合理而导致通信失败或通信数据异常。

--------------------------------------------------------------------------------END-----------------------------------------------

相关文章
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
716 1
|
安全 中间件 编译器
【C/C++ 原子操作】深入浅出:从互斥锁到无锁编程的转变 - 理解C++原子操作和内存模型
【C/C++ 原子操作】深入浅出:从互斥锁到无锁编程的转变 - 理解C++原子操作和内存模型
6143 3
|
7月前
|
人工智能 前端开发 Java
一文彻底明白三极管
三极管,全称半导体三极管,是电子电路的核心元件,具有电流放大和开关功能。它由三个区域组成:基区、发射区和集电区,分为PNP和NPN两种类型。三极管的关键特性包括电流放大倍数(β)、输入和输出特性曲线。根据用途可分为小功率、大功率和高频三极管。其主要应用包括信号放大、开关控制和振荡电路。关注我,一起学习更多电子知识!
725 0
一文彻底明白三极管
|
芯片
stm32f407探索者开发板(十二)——Systick滴答定时器-延时函数讲解
stm32f407探索者开发板(十二)——Systick滴答定时器-延时函数讲解
1009 0
|
安全 编译器 C语言
C语言常量的定义与使用的注意点
在 C 语言中,常量是在程序运行期间值不变的量,通过字面值、`#define` 或 `const` 关键字定义。字面常量直接在代码中表示固定值,如整数 `100`、浮点数 `3.14`、字符 `'A'` 和字符串 `"Hello, World!"`;`#define` 用于定义宏,如 `#define PI 3.14159`;`const` 则定义不可变变量,如 `const int daysInWeek = 7`。常量可用于数组大小、循环边界等场景,并能提升代码的可读性和可维护性。使用时需注意作用域、类型安全和命名,避免直接使用数字(魔法数字)。
|
Ubuntu 安全 网络协议
|
编解码 API 开发工具
FFmpeg获取音视频流信息
FFmpeg获取音视频流信息
331 1
FFmpeg获取音视频流信息
|
安全 Shell 网络安全
Charles - 夜神模拟器证书安装App抓包
Charles - 夜神模拟器证书安装App抓包 前言 一、软件安装 1.Openssl安装 1.1下载安装 1.2配置环境变量 1.3查看openssl版本,输入命令:openssl version 2.夜神模拟器安装 1.1 下载安装 1.2工具准备,MT管理器 3.Charles安装 二、Charles 安装证书,抓包 1.Charles破解 2.安装证书并导出 3.开启代理模式 4.证书格式化 5.通过MT管理器将证书配置到模拟器中 6.模拟器WiFi填入Charles代理的IP和端口 7.抓包示例
1676 0
Charles - 夜神模拟器证书安装App抓包
|
beidou 定位技术 芯片
Hi1102A和Hi1105模块在远距离无线图传领域的选型浅析
Hi1102A和Hi1105模块在远距离无线图传领域应用广泛,其中选型浅析是前期保障
|
安全 物联网 数据安全/隐私保护
ensp中PPPOE (点对点协议)原理和配置命令
ensp中PPPOE (点对点协议)原理和配置命令
522 0