当前位置: 首页 > news >正文

串行通信协议

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

文章目录

  • 前言
  • 一、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线由从设备控制,主设备负责接受信号。


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

相关文章:

串行通信协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、UART二、SPI二、IIC 前言 UART为异步串行通信,使用各自的时钟控制数据的发送和接受过程,不使用同步时钟,而是使用一些特…...

Elasticsearch中RestClient使用

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…...

【LeetCode-中等题】208. 实现 Trie (前缀树)

文章目录 题目方法一:利用数组构建26叉树方法二:利用哈希表构建26叉树 题目 方法一:利用数组构建26叉树 插入图示: 全搜索和前缀搜索: 注意:全局匹配匹配完直接返回插入时的标志位 而前缀匹配时&#xff…...

python队列与多线程——生产者消费者模型

队列相关知识点 多线程相关知识点 import random import time from queue import Queue import threadingclass Consumer(threading.Thread):def __init__(self, name, Q: Queue):super(Consumer, self).__init__()self.name nameself.Q Qdef run(self):while True:time.sl…...

idea的安装

大家可以关注博主,加个微信,私下聊聊 我们先到idea的官网里下载一个ideaidea官网 idea的安装非常简单,只需要一直next就行, 安装完后到你的文件里找到idea64.exe.vmoptions文件,在最后一行添加-javaagent:D:\idea\jetb…...

Unity下如何实现RTMP或RTSP播放端录像?

好多开发者问我们,Unity环境下,除了RTSP或RTMP的播放,如果有录像诉求,怎么实现?实际上录像相对播放来说,更简单一些,因为不涉及到绘制,只要拉流下来数据,直接写mp4文件就…...

【Python】Python基础语法

总感慨万千,虽只道寻常 文章目录 前言1. python与Java的主要区别2. 数据类型3. 输入与输出3.1 输入3.2 输出 4. 注释5. 运算符6. 条件语句7. 循环8. 函数9. 列表9.1 创建9.2 根据下标访问元素9.3 列表切片9.4 遍历9.5 插入元素9.6 查找元素下标9.7 删除元素9.8 列表…...

I2C总线驱动:裸机版、应用层的使用、二级外设驱动三种方法

一、I2C总线背景知识 SOC芯片平台的外设分为: 一级外设:外设控制器集成在SOC芯片内部二级外设:外设控制器由另一块芯片负责,通过一些通讯总线与SOC芯片相连 Inter-Integrated Circuit: 字面意思是用于“集成电路之间…...

Unix Network Programming Episode 77

‘gethostbyaddr’ Function The function gethostbyaddr takes a binary IPv4 address and tries to find the hostname corresponding to that address. This is the reverse of gethostbyname. #include <netdb.h> struct hostent *gethostbyaddr (const char *addr…...

解决Ubuntu无法安装pycairo和PyGObject

环境&#xff1a;虚拟机Ubuntu20.04&#xff0c;vscode无法安装pycairo和PyGObject 虚拟机Ubuntu20.04&#xff0c;vscode中运行Anaconda搭建的vens 的Python3.8.10 首先在vscode中点击ctrlshiftp&#xff0c;选择Python3.8.10的环境&#xff0c;自动激活Python 最近在搞无人…...

Android Handler 机制解析

1、前言 在 Android 开发中&#xff0c;Handler 的机制和运行原理这方面的知识可以说是每个人都需要熟悉的。这不仅是因为 Handler 是 Android 应用的基石之一&#xff0c;也因为 Handler 整体设计上也是十分优秀的。接下来我就梳理总结一下常见的 Handler 相关知识点。 2、基…...

酒店固定资产管理怎么分类

在酒店业中&#xff0c;固定资产的管理是至关重要的一环。它不仅影响到企业的运营效率和盈利能力&#xff0c;而且直接影响到客户体验和品牌形象。因此&#xff0c;对于酒店管理者来说&#xff0c;合理、有效地进行固定资产管理是一项必不可少的任务。本文将探讨酒店固定资产的…...

OpenCV(三十一):形态学操作

​​​​​​1.形态学操作 OpenCV 提供了丰富的函数来进行形态学操作&#xff0c;包括腐蚀、膨胀、开运算、闭运算等。下面介绍一些常用的 OpenCV 形态学操作函数&#xff1a; 腐蚀操作&#xff08;Erosion&#xff09;&#xff1a; erode(src, dst, kernel, anchor, iteration…...

Python之面向对象(二)

目录 属性和方法静态属性/方法、普通属性/方法、类方法保护和私有属性/方法魔术方法构造方法(\_\_new__/\_\_init\_\_)析构方法(\_\_del__)调用方法&#xff08;\_\_call__&#xff09;toString方法\_\_str__、\_\_repr\_\_\_\_getitem__、setitem、delitem\_\_add__、\_\_gt\_…...

ESP32用作经典蓝牙串口透传模块与手机进行串口通信

ESP32用作经典蓝牙串口透传模块与手机进行串口通信 简介ESP32开发板Arduino程序手机与ESP32开发板进行蓝牙串口透传通信总结 简介 ESP32-WROOM-32模组集成了双模蓝牙包括传统蓝牙&#xff08;BR/EDR&#xff09;、低功耗蓝牙&#xff08;BLE&#xff09;和 Wi-Fi&#xff0c;具…...

Python 操作 CSV

使用过 CSV 文件都知道&#xff1a;如果我们的电脑中装了 WPS 或 Microsoft Office 的话&#xff0c;.csv 文件默认是被 Excel 打开的&#xff0c;那么什么是 CSV 文件&#xff1f;CSV 文件与 Excel 文件有什么区别&#xff1f;如何通过 Python 来操作 CSV 文件呢&#xff1f;带…...

自动化运维工具Ansible教程(二)【进阶篇】

文章目录 前言Ansible 入门到精通自动化运维工具Ansible教程(一)【入门篇】自动化运维工具Ansible教程(二)【进阶篇】精通篇 进阶篇1. Ansible 的高级主题&#xff08;例如&#xff1a;角色、动态清单、变量管理等&#xff09;**1. 角色&#xff08;Roles&#xff09;**&#x…...

嵌入式Linux基础学习笔记目录

1. 嵌入式Linux应用开发基础知识 1.1 交叉编译 1.2 GCC编译器 1.3 makefire 1.4 文件I/O 1.5 Framebuffer应用编程 1.6 文字显示及图象显示 1.7 输入系统应用编程 1.8 网络编程 1.9 多线程编程 1.10 串口编程 1.11 I2C应用编程 2. 源码分析 2.1 MQTT源码 2.2 蓝牙源码 2.3 MJP…...

JVM | 垃圾回收器(GC)- Java内存管理的守护者

引言 在编程世界中&#xff0c;有效的内存管理是至关重要的。这不仅确保了应用程序的稳定运行&#xff0c;还可以大大提高性能和响应速度。作为世界上最受欢迎的编程语言之一&#xff0c;通过Java虚拟机内部的垃圾回收器组件来自动管理内存&#xff0c;是成为之一的其中一项必…...

yolov5添加ECA注意力机制

ECA注意力机制简介 论文题目&#xff1a;ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 论文地址&#xff1a;here 基本原理 &#x1f438; ECANet的核心思想是提出了一种不降维的局部跨通道交互策略&#xff0c;有效避免了降维对于通道注意…...

华为在高端智能手机市场再次撕开了一道深深的口子

智能手机市场趋于饱和&#xff0c;增长变得越来越难&#xff0c;智能手机厂商从被动卷走向了主动卷。 8月29日&#xff0c;华为宣布推出“HUAWEI Mate 60 Pro先锋计划”&#xff0c;并于当天中午在官方商城、部分线下门店上线销售新机Mate 60 Pro&#xff0c;它是全球首款支持卫…...

前端设计模式和设计原则之设计模式

作为前端开发&#xff0c;在code时&#xff0c;或多或少地都会践行设计模式&#xff0c;但是你清楚自己用到的是何种设计模式吗&#xff1f; 为什么前端开发一定要懂设计模式呢&#xff1f; code时不遵从设计模式&#xff0c;又能怎样呢&#xff1f; 上面的问题可以留作思考…...

提高在速卖通产品上的曝光率——自养号测评优势全面解析!

速卖通是国际贸易的一个平台&#xff0c;是国内外企业之间的一个桥梁。在速卖通中&#xff0c;如果要让产品得到更好地推广&#xff0c;就必须让产品得到更多的消费者认可。而产品的认可度除了品质保障和售后服务之外&#xff0c;评测也是非常重要的环节。 对于速卖通店铺销量…...

指针进阶(二)

指针进阶 5.函数指针6. 函数指针数组7. 指向函数指针数组的指针8. 回调函数案例&#xff1a;使用回调函数&#xff0c;模拟实现qsort&#xff08;采用冒泡的方式&#xff09;。案例&#xff1a;测试qsort排序结构体数据 5.函数指针 补&#xff1a; &函数名就是函数的地址 …...

【HCIE】03.BGP高级特性

每一条BGP路由都可以携带多个路径属性&#xff0c;针对其属性也有特有的路由匹配工具&#xff0c;包括&#xff1a;AS Path Filter和Community Filter。 import方向的属性&#xff0c;出现在如策略里面&#xff0c;加入到BGP路由表中&#xff0c;再传给路由表里&#xff0c;出去…...

单个处理数据祖籍列表层级关系

CREATE DEFINERroot% FUNCTION sys_organization_getAncestorsNames(deptId varchar(36)) RETURNS varchar(1000) CHARSET utf8DETERMINISTIC BEGINDECLARE parentDeptId varchar(36) default ; -- 父部门iddeclare parentDeptName varchar(100) default ; -- 父部门名称decla…...

Maven部署打包多环境(开发、测试、生产)配置教程

Maven打包多环境&#xff08;开发、测试、生产&#xff09;配置教程 1、多环境配置的必要性1.1 没有进行多环境配置进行的操作复杂性1.2 不影响运行时配置 2、配置方案2.1 添加profile属性2.1 添加两个插件2.3 主配置文件中添加插值变量 3、效果展示3.1 勾选prod环境3.2 控制台…...

【计算思维题】少儿编程 蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第9套

蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第9套 第十四届蓝桥杯省赛真题 1、要把下面4张图片重新排列成蜗牛的画像,该如何排列这些图片 A、 B、 C、 D、 答案:A 考点分析:主要考查小朋友们的观察能力空...

【Hello Algorithm】贪心算法

本篇博客介绍&#xff1a; 简单介绍下贪心算法 贪心算法 介绍贪心算法最小字典序的字符串拼接最多会议数切棍子的最小成本IPO灯塔问题 介绍贪心算法 贪心算法是一种极具有自然智慧的算法 它会使用以一种局部最功利的标准来做出一个当前看来最好的选择 如果说我们根据局部最优…...

TOP-K问题

目录 问题描述 解法及思想 第一种方式 算法思想 具体实现 第二种方式 算法思想 具体实现 问题描述 Top-K问题是一个十分经典的问题&#xff0c;一般有以下两种方式来描述问题&#xff1a; 在10亿的数字里&#xff0c;找出其中最大的100个数&#xff1b;在一个包含n个整…...

王野 天启/seo关键词优化案例

http://www.blogjava.net/jerry-zhaoj/archive/2009/05/20/271695.html 这是因为&#xff1a;由于JDK是国际版的&#xff0c;在编译的时候&#xff0c;如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式&#xff0c;则javac.exe首先获得我们操作系统默认采用的编码格…...

台州网站建设优化案例/北京做网页的公司

目录 概念/介绍 CRONTAB语法及应用 1. 查看当前用户的定时任务 2. 编辑当前用户的定时任务 3. 删除当前用户的定时任务 4. 任务详解 5. 注意&#xff1a; 概念/介绍 crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令&#xff0c;并将其存放于“cr…...

哪些网站可以做旅游/网络营销计划书怎么写

本文和大家重点讨论一下CSS网页布局中文字排版九大技巧&#xff0c;主要包括如何设定字体、颜色、大小、段落空白&#xff0c;首字下沉、首行缩进。***讲一些常用的web页面中文排版&#xff0c;比如中文字的截断、固定宽度词内折行(word-wrap和word-break)等等。CSS网页布局中文…...

淄博网站建设设计/小程序开发公司十大排名

编者按&#xff1a;原文作者乔纳森丹尼可&#xff08;Jonathan Danylko&#xff09;是一位自由职业的web架构师和程序员&#xff0c;编程经验已超过20年&#xff0c;涉足领域有电子商务、生物技术、房地产、医疗、保险和公用事业。正如乔纳森在文中所言&#xff0c;本文适合刚毕…...

asp 网站数据库连接错误/网上营销型网站

2011-12-12 05:10:11 地址&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2013 题意&#xff1a;中文。 思路&#xff1a;递推。设tab[n]表示第n天的桃子数。由题意知tab[n]/2-1 tab[n-1]&#xff0c;可得tab[n] (tab[n-1]1)*2。 代码&#xff1a; # include <st…...

专业做网站系统/总裁培训班

先简单自我介绍下&#xff1a;能源学院、控制工程。教研室偏硬件方向。自学的软件(数据挖掘、分布式方向)&#xff0c;一年左右&#xff0c;比不上那些大牛。Resume我投的岗位“软件研发工程师”。到了面试现场&#xff0c;选择了Java语言&#xff08;有对应的面试官&#xff0…...