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-------------------------------------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值