【一看就懂】UART、IIC、SPI、CAN四种通讯协议对比介绍

UART、IIC、SPI、CAN四种通信协议对比

通信方式传输线通讯方式标准传输速度使用场景
UARTTX(发送数据线)、RX(接收数据线)串行、异步、全双工115.2 kbit/s(常用)计算机和外部设备通信(打印机)
IICSCL(时钟线)、SDA(数据线)串行、同步、半双工100 kbit/s(标准模式)低速设备(传感器)
SPICS(片选)、MOSI(主发从收)、 MISO(从发主收)、CLK(时钟)串行、同步、全双工无官方标准(50Mbps)高速数据传输(显示器)
CANCAN_High、CAN_Low串行、异步、半双工4kbit/s~1mbit/s汽车、工业控制

个人理解,简单说一下这四种通讯方式的区别

  1. UART:简单方便,只需要TX、RX线两两相连,即可通讯。缺点是只能供两个设备之间通讯,假如想实现三个设备之间的通讯,UART就不能用了。
  2. IIC:多设备通讯,相较于UART两个设备之间的通讯,IIC可以实现多个设备之间的通信,通讯时一般是一个主设备,多个从设备,主设备用来控制通讯的开始和中断,需要发送地址位来确定与哪个设备建立通讯,同时为了保证通信正确传输到从机,每次需要从机应答,才会继续传输,这导致通讯速率较低。
  3. SPI:速度快,使用四根线完成通信,使用CS片选线选择通讯的对象。相较于IIC,无需发送通讯地址,也不需要从机发送应答信号,这就能大大提升通讯效率,但是缺点是占用4条线,消耗的资源比IIC多。
  4. CAN:安全第一,为了保证传输的安全性,相较于前面三种方法,使用了大量的手段保证数据及时、准确的传输。同时使用识别码,解决总线冲突的问题。这保证的优先级高的设备,先通讯。这也是为什么CAN能够用于工业、汽车等需要安全性高的领域。

一. UART

简介:Universal Asynchronous Receiver Transmitter 即通用异步收发器,是一种通用的串行、异步通信总线该总线有两条数据线,可以实现全双工的发送。在嵌入式系统中常用于主机与辅助设备之间的通信。
硬件连接:
UART只能是两个设备之间的通信,两个设备的发送器和接收器的TX和RX两两相连即可。
在这里插入图片描述

帧格式:

  1. 起始位:用一位逻辑0表示帧的开始
  2. 数据位:可以有5~8位
  3. 校验位:采用奇校验或偶校验的方式,用来检错,如果检测出错误,可以让发送设备重发
  4. 停止位,用1~2位的逻辑1表示帧的结束

值得一提的是,UART只是一种通信协议,需要发送器和接收器提前约定好帧格式和通信速率、奇偶校验、每帧数据位数,才能正常通讯。其电器属性,UART并没有规定,为了完善通讯协议,后面又对UART做了完善,现在普遍使用RS232和RS485两种协议。

  1. RS232:
    电器特性:逻辑“1”为-5V ~-15V,逻辑“0”为+5V~+15V。
    传输距离:传送距离一般可达15m。
  2. RS485:
    电器特性:采用差分信号做数据传输,逻辑“1”为+2V ~+6V,逻辑“0”为-2V~-6V。
    传输距离:0传送距离一般可达1500m。
    在这里插入图片描述

二、IIC

简介:IIC(Inter-Integrated Circuit)是一种常用的串行通信总线协议,也被称为I2C(Inter-IC)总线。它由飞利浦(Philips)公司在20世纪80年代开发,并成为一种广泛应用于数字集成电路之间的通信标准,相较于UART,IIC可以组成一个网络,实现多个设备之间的通讯。
硬件链接
每个通讯设备分别使用两根线,SCL(时钟线)、SDA(信号线)挂载在IIC总线上,挂载方式如下。
在这里插入图片描述

帧格式

  1. 起始信号:SCL为高电平时,SDA从高电平到低电平的变化表示帧起始。
  2. 设备地址:用7位逻辑信号,表示从设备的地址码,每个从设备的地址码唯一。
  3. 读写数据位:写数据置为0,读数据置为1。
  4. 应答信号:从机发给主机的应答信号,如果从机成功接收到主机发送的信号,发送0。没有收到发送1。
  5. 传输数据:传输数据8个时钟周期为一组,也就是一个字节,每发送一个字节,需要接受方发送一次应答信号,表示数据成功接收或失败。
  6. 终止信号:SCL为高电平时,SDA从低电平到高电平的变化表示帧起始。

在这里插入图片描述

三、SPI

简介:SPI(Serial Peripheral Interface,串行外设接口) 是串行外设接口的缩写,SPI是一种高速、全双工、同步的串行通信总线;采用主从方式工作,一般一个主设备,多个从设备;SPI需要四根线,分别是MISO(主输入从输出)、MOSI(主输出从输入)、SCLK(时钟)、CS(片选)。
硬件连接在这里插入图片描述

帧格式

SPI与其他通信方式不同,因为有片选线,所以并不需要有地址位,起始位、结束位等,没有一帧这个概念。只需要数据线和时钟线配合,即可完成通讯。
一个字节传送完成后,无需应答,即可开始下一个字节的传送;采用同步方式工作,时钟线在上升沿或下降沿时,发送器向数据线上发送数据,在紧接的下降沿会上升沿读取数据,八个时钟即可完成一个字节的数据传送。无需接收方应答。
在这里插入图片描述

四、CAN

CAN(Controller Area Network Bus)控制器局域网总线,最主要应用与汽车和工业控制领域,实现多个ECU之间的相互通信,使用差分信号进行通讯。两条线压差为0V表示逻辑1,压差2V表示逻辑0

在这里插入图片描述
帧格式

  1. 起始位:用1位逻辑0表示帧的开始
  2. 识别码:每一个设备都有属于自己的11位识别码,用于确认发送设备的身份。识别码不光用来确认身份,还可以用来决定发送的优先级,举个例字:如果两个信号同时占用总线,那么会产生冲突,这时,识别码就起作用了,识别码位数高的,会优先发送,识别码低的停止发送信号
  3. 控制码:第一位是IDE位,用来决定是否使用扩展帧,后四位是DLC位,用四位二进制来表示数据码的长度,比如DLC为“0001”,表示数据码长度为1个字节;DLC为“0011”,则表示数据码长度为3个字节。所以数据码的长度为1~8个字节
  4. 数据码:用来传输数据,数据码的范围为长度为1~8个字节
  5. CRC位:15位CRC循环冗余码,用来纠错,如果错了,从新发送数据
  6. ACK确认槽,接收端发送信号,表示接收到数据了
  7. 结束位,用7位逻辑1表示帧的结束
    在这里插入图片描述

资料来源:
1.爱上半导体
2.SPI、UART、RS232、RS485、IIC 5种嵌入式经典通信总线协议精讲

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一种由RSOA和PIC集成的宽可调激光器

----翻译自Nouman Zia, Samu-Pekka Ojanen, Jukka Viheriala, Eero Koivusalo, Joonas Hilska, Heidi Tuorila, and Mircea Guina在optics letter上发的文章vol.48, Issue 5, pp. 1319-1322(2023) 摘要:通过光子集成方式实现的2-3μm波长的可调激光器,在…

Adobe Acrobat Pro DC 2022一款高效强大的PDF阅读编辑专业软件(240506)

01 软件介绍 Adobe Acrobat Pro DC 2022,作为一款专业的PDF处理工具,它集成了强大的制作功能,能够与Adobe Photoshop的高级图像编辑能力无缝衔接,进而将各类纸质文档高效转换成可编辑的电子格式,以便于文件的传输和签…

跨越语言界限,多语言盲盒小程序带你领略全球风情

在全球化的今天,我们生活在一个多元文化的世界中,不同的语言、风俗、习惯共同构成了这个五彩斑斓的地球村。为了让每个人都能轻松体验到世界各地的独特风情,一款创新的多语言盲盒小程序应运而生,它跨越了语言的界限,让…

老阳分享:跨境选品师普通人做能否借此赚钱?

在跨境电商日益繁荣的今天,选品师这一职业逐渐进入大众视野。老阳,作为业内知名的跨境选品师,经常分享他的选品经验和心得。那么,对于普通人来说,成为跨境选品师是否真的能赚钱呢? 首先,我们需要明确什么是…

mySQL (基础面试)实物四属性 ACID属性,以及开启事务

mySQL具备四个基本属性 原子性atomicity 事务是一个完整的操作,事务的各个步骤是不可分的(原子的),要么执行要么不执行 一致性consistency 当事务完成时,数据处于一致状态 隔离性isolation 并发事物之间彼此隔离…

基于springboot+vue+Mysql的租房网站

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

springboot3项目练习详细步骤(第二部分:文章分类模块)

新增文章分类 接口文档 业务实现 参数校验 文章分类列表 接口文档 业务实现 获取文章分类详情 接口文档 业务实现 更新文章分类 接口文档 业务实现 分组校验 问题 概念 实现步骤 总结 删除文章分类 接口文档 业务实现 该模块大部分请求的路径相同&…

2024最新行业领域名词解释大全

2024最新行业领域名词解释大全 🚀 大家好!我是你们的老朋友猫头虎🐯。今天要为大家带来2024年最新的行业领域名词解释大全!在这个信息爆炸的时代,准确了解不同领域的行业动态、工作机会和职业前景至关重要。下面我会分…

阿里巴巴中国站关键字搜索API返回值全攻略:精准定位所需商品

当使用阿里巴巴中国站的关键字搜索API时,理解其返回值的结构和内容对于精准定位所需商品至关重要。以下是一份全面的攻略,帮助你更好地利用这个API: 在商品列表中,每个商品对象都包含丰富的信息,以帮助你精准定位所需商…

伙伴匹配(后端)-- 前后端日期格式化

后端时间格式化 后端时间格式化 在expireTime属性加上一个格式化注解,并给定格式 前端过期时间格式化 下载一个moment格式化工具(我安装失败了日期格式化也成功了) npm install moment这一页和添加队伍新增这一行(还要导入mom…

Python数据爬取超简单入门

## 什么是网络爬虫? 网络爬虫是一种自动浏览器程序,能够自动地从互联网获取数据。爬虫的主要任务是访问网页,分析网页内容,然后提取所需的信息。爬虫广泛应用于数据收集、数据分析、网页内容监控等领域。 ## 爬虫的基本步骤 1.…

2025第23届太原煤炭(能源)工业技术与装备展览会

第二十三届太原煤炭(能源)工业技术与装备展览会 邀 请 函 指导单位: 中国煤炭工业协会 主办单位:山西省煤炭工业协会 承办单位:太原奇新展览有限公司 展览时间:2025年4月22-24日 展览地点&#xff1a…

Obsidian dataview 使用入门

Dataview有四种展示格式:list、table、task、calendar。 本文只介绍前面两种。 语法总结 通过#标签 dataview LIST FROM #标签 通过"文件夹" dataview LIST FROM "文件夹名" 通过[ [ 文件链接 ] ] 选择链接到一个文件,或者…

深入了解C/C++的内存区域划分

🔥个人主页:北辰水墨 🔥专栏:C学习仓 本节我们来讲解C/C的内存区域划分,文末会附加一道题目来检验成果(有参考答案) 一、大体有哪些区域?分别存放什么变量开辟的空间? …

探索AI编程新纪元:从零开始的智能编程之旅

提示:Baidu Comate 智能编码助手是基于文心大模型,打造的新一代编码辅助工具 文章目录 前言AI编程概述:未来已来场景需求:从简单到复杂,无所不包体验步骤:我的AI编程初探试用感受:双刃剑下的深思…

分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测

分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测 目录 分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测分类效果基本介绍程序设计参考资料分类效果 基本介绍 MATLAB实现LSSVM最小二乘支持向量机多分类预测。最小二乘支持向量机(Least Squares Support Vecto…

容器内存使用率(container_memory_working_set_bytes)高问题排查

背景 五一节假日值班期间,告警群里突然告警容器内存使用率高于 90%,并且后续一直有告警出现。随即登入指标监控系统查看该告警指标,如下: 该指标是通过 container_memory_working_set_bytes / container_spec_memory_limit_bytes…

44 网络基础

本章重点 了解网络发展背景,对局域网/广域网的概念有基本认识 了解网络协议的意义,重点理解TCP/IP五层结构模型 学习网络传输的基本流程,理解封装和分用 目录 1.网络发展 2.协议 3.OSI七层模型 4.TCP/IP五层模型 5.网络传输流程图 6.网络中…

WRT1900ACS搭建openwrt服务器小记

参考链接 wrt1900acs openwrt wrt1900acs openwrt 刷机 wrt1900acs原生固件刷openwrt-23.05.3-mvebu-cortexa9-linksys_wrt1900acs-squashfs-factory.img wrt1900acs openwrt更新刷openwrt-23.05.3-mvebu-cortexa9-linksys_wrt1900acs-squashfs-sysupgrade.bin 通过WEB UI来…

【数据结构】带你轻松掌握算法的复杂度

引入: 哈喽大家好,我是野生的编程萌新,首先感谢大家的观看。数据结构的学习者大多有这样的想法:数据结构很重要,一定要学好,但数据结构比较抽象,有些算法理解起来很困难,学的很累。我…