串行通信协议

news2024/11/20 12:34:46

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、UART
  • 二、SPI
  • 二、IIC


前言

UART为异步串行通信,使用各自的时钟控制数据的发送和接受过程,不使用同步时钟,而是使用一些特殊位(起始位、停止位);SPI、IIC为同步串行通信,需要同步时钟。
通信三种模式:
1)单工:通信双方设备发送器和接受器分工明确,只能由发送器向接收器但一固定方向传输数据;
2)半双工:两个设备均既是发送器也是接收器,某一时刻只能向一个方式传输数据;
3)全双工:两个设备均既是发送器也是接收器,两台设备可以同时在两个方向上传输数据。
一、UART
UART是一种使用异步串行通信方式的通用异步收发传输器,他在发送数据时将并行数据转换成串行数据来传输,在接受数据时将接收到的串行数据转换成并行数据。在硬件连接时,发送端的Tx连接接收端的Rx,即Rx与Tx连接,Tx与Rx连接。


一、UART

UART是一种使用异步串行通信方式的通用异步收发传输器,他在发送数据时将并行数据转换成串行数据来传输,在接受数据时将接收到的串行数据转换成并行数据。在硬件连接时,发送端的Tx连接接收端的Rx,即Rx与Tx连接,Tx与Rx连接。
在这里插入图片描述
UART在进行数据发送和数据接受过程在的一帧数据由起始位、数据位、奇偶校验位和停止位四部分组成。通过特殊位可以通过移位寄存器将数据转换为并行数据。
在这里插入图片描述

空闲状态:没有数据传输,是高电平,保持高电平表示线路和传输设备没有损坏;
起始位:数据开始传输时发送端首先发送一个低电平“0”来表示传输字符的开始;
数据位:数据位存放传输需要的数据,一般是8位,如果不使用奇偶校验位,则为9位,先发送低位,在发送高位;
校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性;
停止位:数据结束标志,通常有两位,但只使用了一位,为了结束数据传输,UART将数据线保持在高电压(1)。
UART发送端与接收端必须在波特率上达成一致才能成功传输数据,使用波特率可以提高数据的传输速度。
UART优点:
1)全双工数据传输只需要两条线;
2)不需要时钟或其他定时信号;
3)奇偶校验位确保将基本错误检查集成到数据包帧中。
UART缺点:
1)帧中数据的大小有限;
2)与并行通信相比,数据传输速度要慢一些;
3)发送器和接收器必须统一传输规则,并且选择合适的波特率。
1、RS232
信号采用负逻辑电平、单端传输方式工作。通过一根信号线发送,一根信号线接受,加上一根地线,RS232可实现全双工通信。由于单端传输方式抗干扰能力差,导致RS232标准通信距离短(小于15米),数据传输速率低等问题。另外RS232仅支持一对一通信,存在无法实现多个设备互联的缺点
2、RS422
RS422采用差分传输(平衡传输)方式,将最大传输速率提高到10Mbps;当传输速率在100kbps以下时,传输距离可达1200米。由于采用差分传输方式,RS422需要4根信号线来实现全双工通信,两根用于发送、两根用于接收,一般会在加上一根地线。RS422允许在一条传输总线上连接最多10个接收器,从而实现但个设备发送,多个设备接受的功能。
3、RS485
RS485采用差分传输方式,可以抑制共模干扰,但是RS485只有两根信号线,由发送和接收公用,因此发送和接受不能同时进行,只能实现半双工通信。RS485增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,各设备通过使能信号控制发送和接收过程。传输距离可达3000米,最高数据传输速率为10Mbps。
RS232、RS485区别:
1)工作模式:232全双工,485半双工;
2)传输方式:二者只是物理协议的通信(接口标准),485是差分传输方式,232是单端传输方式,通信程序没有太大区别;
3)信号线:485接口组成半双工网络,一般只需要两根信号线,232一般只使用RXD、TXD、GND三条信号线;
4)传输距离:485接口的最大传输距离为1200米,实际上可达3000米,232传输能力有限,最大传输距离标准值为50米,实际上能达到15米左右;
5)抗干扰性:485接口采用平衡驱动器和差分接收器的组合,抗噪声干扰性好,232接口使用一根信号线和一根信号返回线而构成共地的传输形式,共地传输容易产生共模干扰;
6)通信能力:232纯属速率较低,在异步传输时,波特率位20Kbps,485的数据最高传输速率位10Mbps;
7)电气电平值:485的逻辑“1”以两线间的电压差位+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。在232中任何一条信号线的电压均为负逻辑关系。即:逻辑“1”,-(5~15)V;逻辑“0”,+(5~15)V。

二、SPI

Motorola公司开发的一种高速的、全双工、同步的通信总线,外部引脚使用四根线。与IIC不同,SPI没有明文标准,SPI数据传输速度比IIC要快。SPI的四根信号线为SCLK、MOSI、MISO、SS。
SCLK:时钟信号,由主设备产生;
MOSI:主设备输出,从设备输入;
MISO:从设备输出,主设备输入;
SS:从设备使能信号,由主设备控制。
在这里插入图片描述
SPI是单主设备通信协议,即总线中只有一个中心设备能发起通信。在点对点的通信时,SPI不需要寻址操作,且为全双工通信,效率高;当存在多个从设备时,每个从设备都有独立的时能信号,硬件上比IIC要复杂。SPI当SPI主设备想读/写从设备时,首先拉低从设备对应的SS线(SS是低电平有效),然后发送工作脉冲到时钟线上,在相应的脉冲时间上,主设备把信号发到MOSI实现写操作,同时可对MISO采样而实现读操作。
在这里插入图片描述
SPI有四种传输模式:模式0、模式1、模式2和模式3,通过控制寄存器中的CPOL(时钟极性)和CPHA(时钟相位)来进行设置。它们的区别是定义了在时钟脉冲的哪条边沿转换(toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(即时钟信号无效时是高还是低)。主从设备必须使用相同的工作参数SCLK、CPOL、CPHA,才能正常工作。如果有多个从设备,并且它们使用了不同的工作参数,那么主设备必须在读写不同从设备间重新配置这些参数。
在这里插入图片描述
SPI是一个环形总线结构,SPI接口在内部硬件实际上是两个简单的、传输数据8位的移位寄存器。SPI不规定最大传输速率,没有地址方案;SPI也没规定通信应答机制,没有规定流控制规则。
缺点:
1)没有指定的流控制;
2)没有应答机制确认是否接收到数据;

二、IIC

Philips公司开发的一种使用两根线连接所有外围芯片的总线协议,两条信号线都是双向传输的,IIC协议标准规定发起通信的设备称为主设备,主设备发起一次通信后,其它设备均为从设备。IIC是一种多向控制总线,多个芯片可以连接到同一总线结构下,每个芯片都可以作为实时数据传输的控制源,是多主设备的总线,且没有物理芯片选择信号线,没有仲裁逻辑电路,只有两根信号线,一条为双向数据传输的SDA,一根是时钟线SCL。主从设备之间通信是利用每个从设备都有一个独立的地址,主设备可以通过该地址与从设备进行通信。最初定义总线速度为100Kbps,后来发展为400Kbps和3.4Mbps。
IIC协议规定:
 每一IIC设备都有一个唯一的七位设备地址;
 数据帧大小为8位的字节;
 数据(帧)中的某些数据位,用于控制通信的开始、停止、方向(读写)和应答机制。
IIC数据传输速率有标准模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps),另外一些变种实现了低速模式(10kbps)和快速+模式(1Mbps)。
在这里插入图片描述
从上图中可以看出,START信号与STOP信号的电平变化。
START信号:时钟信号SCL为高电平,SDA由高电平跳变为低电平,开始传输数据;
STOP信号:时钟信号SCL为高电平,SDA由低电平跳变为高电平,结束传输数据;
IIC通信过程大概如下:当起始信号发生时,所有的从设备准备接受主设备发送的从设备地址(7位设备地址加1位读写操作的数据帧),从设备接收到地址后开始与自身地址进行比对,如果相同,则被选中,并向主机发出应答(ACK),如果不同,则进行等待状态,等待STOP信号到来。当主设备收到应答后便开始传送或接收数据。数据帧大小为8位,尾随一位的应答信号。主设备发送数据,从设备应答;相反主设备接数据,主设备应答。当数据传送完毕,主设备发送一个STOP信号,向其它设备宣告释放总线,其它设备回到初始状态。
基于IIC总线的物理结构,总线上的START和STOP信号必定是唯一的。另外,IIC总线标准规定:SDA线的数据转换必须在SCL线的低电平期,在SCL线的高电平期,SDA线的上数据是稳定的。主设备向从设备写数据时,SDA线由主设备控制,从设备负责接受信号;相反,主设备读取从设备数据时,SDA线由从设备控制,主设备负责接受信号。


欢迎大家关注微信公众号:深度学习与路径规划
在这里插入图片描述

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

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

相关文章

苏宁API接口解析,实现按关键字搜索suning商品

苏宁API接口提供了多种搜索商品的方式,其中包括按关键字搜索。下面是一个简单的示例,演示如何使用苏宁API接口实现按关键字搜索商品: 点击获取key和secret 苏宁易购按关键字搜索suning商品 API 返回值说明 请求参数 请求参数:q…

UG\NX二次开发 计算一个向量的反向向量UF_VEC3_negate

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 计算一个向量的反向向量UF_VEC3_negate 效果: 代码: #include "me.hpp"void ufusr(char* param, int* retcode, int paramLen) {UF…

腾讯云4核8G服务器CVM S5性能测评及优惠价格表

腾讯云4核8G服务器CVM标准型S5实例性能测评,包括CPU型号、内存、系统盘、CVM实例规格性能测评,腾讯云4核8G租用优惠价格表,腾讯云服务器网分享腾讯云4核8G服务器CVM S5性能测评和租用费用: 目录 腾讯云4核8G服务器CVM S5性能测评…

单片机之硬件记录

一、概念 VBAT 当使用电池或其他电源连接到VBAT脚上时,当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。如果应用中没有使用外部电池,VBAT引脚应接到VDD引脚上。 VCC:Ccircuit 表示电路的意思,即接入电路的电压&#x…

【数据结构】【C++】平衡搜索二叉树的模拟实现(AVL树)

【数据结构】&&【C】平衡搜索二叉树的模拟实现(AVL树) 一.AVL树的性质二.AVL树的模拟实现①.AVL树结点的定义②. AVL树的插入③.平衡因子的更新④.左单旋⑤.右单旋⑥.双旋(左右旋/右左旋)⑧.AVL树的删除⑨.检查是否是AVL树 三.完整代码 一.AVL树的性质 AVL…

中国电子科技集团公司第十四研究所(中电14)部门科室介绍、能力要求、待遇薪资

0.基本 雷达中电第一所南京 1.一部(总体部) 与军队对接需求雷达的选型和交付能力要求:担责任、知识面广(天线、射频、信号处理、数据处理)、学习能力、对外沟通能力科室: 101:空军&#xff0…

项目无故启动不了

隔了一个周末回来上班,启动项目,发现项目启动不了,根本没有动过代码。 报错: 解决方案: 代码没有改过,无缘无故启动不了项目,肯定是环境的问题。 找到这个类所在的依赖, 删掉重新…

Java的XWPFTemplate工具类导出word.docx的使用

依赖 <!-- word导出 --><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.7.3</version></dependency><!-- 上面需要的依赖--><dependency><groupId>org.ap…

华为云云耀云服务器L实例评测| CloudExplorer Lite轻量级云平台管理华为云云耀云服务器L实例

华为云云耀云服务器L实例评测&#xff5c; CloudExplorer Lite轻量级云平台管理华为云云耀云服务器L实例 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点1.3 云耀云服务器L实例使用场景 二、 CloudExplorer Lite介绍2.1 CloudExplorer Lite简介…

练习接口测试详细步骤

最近一段时间学了Python语言&#xff0c;重新学了 Java&#xff0c;js&#xff0c;html语言&#xff0c;CSS&#xff0c;linux&#xff0c;一堆测试工具&#xff1b;唉&#xff5e; 在接触接口测试过程中补了很多课&#xff0c; 终于有点领悟接口测试的根本&#xff1b; 偶是…

为何不建议使用Java自带的线程池

Executors Executors是java自带的线程池。Executors 里面默认提供的几个线程池是有一些弊端的&#xff0c;如果是不懂多线程、或者是新手直接盲目使用&#xff0c;就可能会造成比较严重的生产事故。 Executors.newFixedThreadPool(10); Executors.newSingleThreadExecutor();…

Python语义分割与街景识别(3):数据集准备

前言 本文主要用于记录我在使用python做图像识别语义分割训练集的过程&#xff0c;由于在这一过程中踩坑排除BUG过多&#xff0c;因此也希望想做这部分内容的同学们可以少走些弯路。 本文是python语义分割与街景识别第三篇&#xff0c;关于数据集准备的内容。 一、自己制作数…

【transformer】动手学ViT

AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE 摘要Method实验代码-基于pytorchTraining Visual Transformer on Dogs vs Cats Data注释一些词汇 ICLR2021 一幅图像值16x16个字&#xff1a;用于图像识别的transformers 将纯Transformer结构运用…

基于SSM的中小企业人力资源管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

计算机网络第五章——传输层(下)

安得广厦千万间&#xff0c;大庇天下寒士俱欢颜 文章目录 按序的不丢失的&#xff0c;这个校验也是二进制求反码来判断有没有发送错误&#xff0c; TCP传输的时候就是以一个字节为单位&#xff0c;所以就会把一个字节编一个序号&#xff0c;对于一个文件第一个需要是多少是可以…

MySQL的权限管理与远程访问

MySQL的权限管理 1、授予权限 授权命令&#xff1a; grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名用户地址 identified by ‘连接口令’; 该权限如果发现没有该用户&#xff0c;则会直接新建一个用户。 比如 grant select,insert,delete,drop on atguigudb.…

Prometheus+Grafana可视化监控【主机状态】

文章目录 一、介绍二、安装Prometheus三、安装Grafana四、Pronetheus和Grafana相关联五、监控服务器状态六、常见问题 一、介绍 Prometheus是一个开源的系统监控和报警系统&#xff0c;现在已经加入到CNCF基金会&#xff0c;成为继k8s之后第二个在CNCF托管的项目&#xff0c;在…

RunnerGo:让你的性能测试变得轻松简单

在当今这个数字化时代&#xff0c;应用程序的性能至关重要。一款可靠的性能测试工具&#xff0c;能够为企业带来无数的好处。最近&#xff0c;一款名为RunnerGo的开源性能测试工具备受瞩目。本文将详细介绍RunnerGo的特点、优势以及如何解决性能测试中的痛点。 RunnerGo产品介绍…

OpenLayers入门,读取wkt格式数据,OpenLayers解析并显示wkt格式的要素数据

专栏目录: OpenLayers入门教程汇总目录 前言 本章介绍OpenLayers如何解析并显示wkt格式的要素数据。 使用Point(点)、(LINESTRING)线,和(POLYGON)多变形的wkt数据进行演示。 wkt介绍请参考博主另一篇文章《GIS入门,WKT格式详解》. 二、依赖和使用 "ol": …

【SpringMVC】拦截器JSR303的使用

目录 一、JSR303 1.1.什么是JSR303 1.2.为什么使用JSR303 1.3.常用注解 1.4.Validated与Valid区别 1.5.JSR快速入门 1.5.1.导入依赖 1.5.2.配置校验规则 1.5.3.入门案例 二、拦截器 2.1什么是拦截器 2.2.拦截器与过滤器 2.3.应用场景 2.4.拦截器快速入门 2.4.1.…