串行通信协议
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、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叉树 插入图示: 全搜索和前缀搜索: 注意:全局匹配匹配完直接返回插入时的标志位 而前缀匹配时ÿ…...
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
环境:虚拟机Ubuntu20.04,vscode无法安装pycairo和PyGObject 虚拟机Ubuntu20.04,vscode中运行Anaconda搭建的vens 的Python3.8.10 首先在vscode中点击ctrlshiftp,选择Python3.8.10的环境,自动激活Python 最近在搞无人…...
Android Handler 机制解析
1、前言 在 Android 开发中,Handler 的机制和运行原理这方面的知识可以说是每个人都需要熟悉的。这不仅是因为 Handler 是 Android 应用的基石之一,也因为 Handler 整体设计上也是十分优秀的。接下来我就梳理总结一下常见的 Handler 相关知识点。 2、基…...

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

OpenCV(三十一):形态学操作
1.形态学操作 OpenCV 提供了丰富的函数来进行形态学操作,包括腐蚀、膨胀、开运算、闭运算等。下面介绍一些常用的 OpenCV 形态学操作函数: 腐蚀操作(Erosion): erode(src, dst, kernel, anchor, iteration…...
Python之面向对象(二)
目录 属性和方法静态属性/方法、普通属性/方法、类方法保护和私有属性/方法魔术方法构造方法(\_\_new__/\_\_init\_\_)析构方法(\_\_del__)调用方法(\_\_call__)toString方法\_\_str__、\_\_repr\_\_\_\_getitem__、setitem、delitem\_\_add__、\_\_gt\_…...

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

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

自动化运维工具Ansible教程(二)【进阶篇】
文章目录 前言Ansible 入门到精通自动化运维工具Ansible教程(一)【入门篇】自动化运维工具Ansible教程(二)【进阶篇】精通篇 进阶篇1. Ansible 的高级主题(例如:角色、动态清单、变量管理等)**1. 角色(Roles)**&#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内存管理的守护者
引言 在编程世界中,有效的内存管理是至关重要的。这不仅确保了应用程序的稳定运行,还可以大大提高性能和响应速度。作为世界上最受欢迎的编程语言之一,通过Java虚拟机内部的垃圾回收器组件来自动管理内存,是成为之一的其中一项必…...

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

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...

Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...

GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...

Axure零基础跟我学:展开与收回
亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...

LeetCode - 148. 排序链表
目录 题目 思路 基本情况检查 复杂度分析 执行示例 读者可能出的错误 正确的写法 题目 148. 排序链表 - 力扣(LeetCode) 思路 链表归并排序采用"分治"的策略,主要分为三个步骤: 分割:将链表从中间…...
npm install 相关命令
npm install 相关命令 基本安装命令 # 安装 package.json 中列出的所有依赖 npm install npm i # 简写形式# 安装特定包 npm install <package-name># 安装特定版本 npm install <package-name><version>依赖类型选项 # 安装为生产依赖(默认&…...