常用通讯协议的理解

一、通讯的一些基本认知

1、什么是异步或同步通信

        异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来,不需要外部时钟源

        同步通信则是一种比特同步通信技术,要求发收双方具有同频同相的同步时钟信号,只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后便在同步时钟的控制下逐位发送/接收。进行数据传输时,发送和接收双方要保持完全的同步,因此,要求接收和发送设备必须使用同一时钟。

2、什么是半双工,全双工

        半双工则是一种在通信过程中的任何时候,信息可以从A传输到B,从B传输到A,但只能有一个方向的传输,不能同时传输的传输模式。这就像一条窄窄的马路,同时只能有一辆车通过。

        全双工是一种通讯传输模式,它允许数据在两个方向上同时传输,即发送和接收可以同时进行,而且两者是瞬时同步的。这就像我们平时打电话一样,说话的同时也能够听到对方的声音。

二、UART通讯协议

1、什么是UART   (异步,全双工

        UART是一种通用的串行通信总线,它通过两根线(一根用于发送,一根用于接收)实现数据的异步传输。由于UART是异步的,所以发送和接收设备不需要共享同一时钟信号,这使得UART成为一种非常灵活和通用的通信方式。

2、Tx如何实现数据的发送

        假设发送数据198  (1 1 0 0 0 1 1 0 )

        

        1、前提需要将收发双方的数据数据域宽度配置成相同大小(数据位)。

        2、接收器需要知道Tx的发送速度,若速度不一样,Rx就会不知道Tx数据什么时候开始,什么时候结束,就会导致有可能读取到错误的数据值(波特率)。

        3、最开始没有发送数据之前Tx一直保持高点平,当需要发送数据的时候,Tx会拉低告知Rx要发数据(起始位)。

        4、数据传输,固定9600波特率,一秒钟传输9600bit,1bit需要104us,当Rx接收到起始位瞬间,就开始计时104us,当104us之后(起始位结束)就是真实数据的第一位,而通常我们不会再这里保存这个值,因为数据不稳定,而是延时52us之后读取值再保存,后面读取数据都是这样循环往复。

        5、当Rx接收到相同数据宽度的数据之后,就会等待停止位(高电平)。

        6、数据随即到达缓存区,缓冲区再发给其它位置,这样就实现了UART通讯。

三、IIC协议

1、什么是IIC协议         (同步,半双工

        IIC协议,全称为Inter-Integrated Circuit,即集成电路之间,是一种由Philips公司开发的两线式串行总线,用于连接微控制器及其外围设备。该总线仅由数据线SDA时钟线SCL构成,可发送和接收数据。

        IIC协议采用主从式的通信架构,通信的发起方称为主设备(Master),而被动响应通信的设备称为从设备(Slave)。在IIC总线上,可以连接多个从设备,但只能有一个主设备。主设备负责发起通信请求,并控制总线的访问权限,而从设备则根据主设备的指令进行数据的接收和发送。

        此外,IIC协议把传输的消息分为两种类型的帧:地址帧数据帧。地址帧用于主设备指明消息发往哪个从设备,而数据帧则是由主设备发往从设备的数据或者是接收到来自于从设备的数据。

2、如何实现数据传输

         

         1、需要设定发送数据的速度(通常工作速度400K)和位数(数据长度一般为15或16位)。

       

        2、在发送数据时建立同步时钟,因此接收器能知道数据什么时候开始。最开始的时候SDA和SCL都会保持高电平,表示设备处于空闲状态,当SDA由高电平跳变成低电平时,则证明设备要开始发送数据了

        3、起始位开始之后,随即会向从机发送一个8位的数据,8为数据内容位(7位从机的地址+1位需要对从设备进行什么操作的选项),当从设备接到这8位数据之后,会向主设备返回一个应答信号(ACK),告诉主设备已经准备好了。

        4、从设备是怎么知道IIC上,什么时候是数据1,什么时候是数据0的

        当时IIC起始位开始之后 ,发送数据的时候时钟线SCL保持高电平,当SDA为高电平则传输1,为低电平则表示传输0。

        5、主设备知道后就会向从设备发送数据,发送一定数据之后,从设备就会向主设备回答一个ACK,继续这样循环发送数据,直到从设备收到IIC的结束条件。

四、SPI协议

1、什么是SPI协议                (同步,全双工

        SPI(Serial Peripheral Interface),即串行外围设备接口,是一种高速的、全双工同步的通信总线,由摩托罗拉公司提出并广泛应用于各个领域。

       SPI总线系统是一种主从结构的总线系统,通常由一个主设备(Master)和一个或多个从设备(Slave)组成,主设备负责控制整个通信过程,从设备则根据主设备的指令进行相应的操作。SPI总线系统由四根线组成,分别是:

  1. SCK(Serial Clock):时钟信号线,用于同步数据传输。
  2. MOSI(Master Out Slave In):主设备输出/从设备输入数据线,用于主设备向从设备发送数据。
  3. MISO(Master In Slave Out):主设备输入/从设备输出数据线,用于从设备向主设备发送数据。
  4. CS(Chip Select):片选信号线,用于选择需要通信的从设备。

2、如何实现数据的传输

        

        1、选定通信的从机,当从机片选信号处于低电平的时候,则怎么该从机被主机选中,需要进行通信。

        2、进行通信的时候SPI有四种通信模式,从机设备模式一般不能更改的,但我们可以进行主机的更改,是主从机处于同一种工作模式,可以通过时钟极性和时钟相位来实现通信方式。

 

        3、下面将以模式0进行讲解

         当从机设备被选中后,片选信号(CS=0)一直为低电平,当选择工作模式0的时候,表示时钟极性设置为0则表示时钟线为低电平时才有效,而时钟相位为0则表示当时钟极性状态发生翻转时,奇数次翻转瞬间,MOSI所对应的电平为真正发送的数据,MISO所对应的数据为要读取的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通义千问1.5(Qwen1.5)大语言模型在PAI-QuickStart的微调与部署实践

作者:汪诚愚(熊兮)、高一鸿(子洪)、黄俊(临在) Qwen1.5(通义千问1.5)是阿里云最近推出的开源大型语言模型系列。作为“通义千问”1.0系列的进阶版,该模型推出…

为什么 Java 中只有值传递?

为什么 Java 中只有值传递? 开始之前,我们先来搞懂下面这两个概念: 形参&实参值传递&引用传递 形参&实参 方法的定义可能会用到 参数(有参的方法),参数在程序语言中分为: 实参…

TCP和UDP可以使用同一个端口号吗?

TCP和UDP可以使用同一个端口号吗? 首先说答案:可以。怎么理解呢? 我想这个问题要从计算机网络通信谈起,学过计算机网络的同学,可能都还记得7层或者4层网络模型,TCP/UDP属于其中的传输层协议,在…

一个完整的Flutter项目的基本构成

目录 1.页面跳转2.本地数据库和读取2.1 在pubspec.yaml中添加数据库框架依赖2.2 创建db.dart 初始化数据库并创建表2.3 安装JsonToDart插件2.4 创建实体类 user_bean.dart2.5 增删改查: 3.网络请求数据解析UI渲染 本篇主要总结下一个完整的Flutter项目有哪些基本构成…

STM32基础--初识 STM32

什么是 STM32 对于STM32,从字面意思上来理解,ST是意法半导体,M是Microelectronics的缩写,其中32表示的是32位,那么整合起来理解就是:STM32就是指的ST公司开发的32位微控制器。在如今的32位控制器中&#x…

mq基础类设计

消息队列就是把阻塞队列这样的数据结构单独提取成一个程序独立进行部署。——>实现生产者消费者模型。 但是阻塞队列是在一个进程内部进行的; 消息队列是在进程与进程之间进行实现的, 解耦合:就是在分布式系统中,A服务器调用B…

Window系统搭建feishu-chatgpt企业AI机器人并实现无公网ip远程连接

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话,在下面操作步骤中…

偶现bug如何分析和处理?

测试中比较郁闷的一件事就是遇到偶现bug。测个10次~20次才难得出来一次,甚至有时几天才会出现一次,真的去复现的时候又不记得自己执行了哪些步骤。所以遇到这样的问题都是比较头疼的。 举个例子: 打开一个论坛,有一个在线人数的信…

在Mac上安装nginx+rtmp 本地服务器

需要使用终端命令,如果没有Homebrew,要安装Homebrew,执行: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 一、安装Nginx 1、先clone Nginx项目到本地: brew tap de…

云计算,用价格让利换创新空间?

文 | 智能相对论 作者 | 李源 ECS(云服务器)最高降36%、OSS(对象存储)最高降55%、RDS(云数据库)最高降40%…… 阿里云惊人的降幅,一次性把国内云计算厂商的价格战推到了白热化阶段。 这次能…

【C语言】linux内核napi_gro_receive

一、注释 // napi_gro_receive是网络设备接口的一个函数,它被NAPI(New API)网络轮询机制使用,用于接收和处理接收到的数据包。 // 这个函数通过通用接收分组(GRO,Generic Receive Offload)技术…

java数据结构与算法刷题-----LeetCode687. 最长同值路径

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 深度优先,用下面的儿子判断2. 深度优先&#xff0…

UE4 Niagara 关卡3.4官方案例解析

Texture sampling is only supported on the GPU at the moment.(纹理采样目前仅在GPU上受支持) 效果:textures can be referenced within GPU particle systems。this demo maps a texture to a grid of particles(纹理可以在GPU粒子系统中被引用这个演…

【3GPP】【核心网】【5G】5G核心网协议解析(二)(超详细)

5G UE 附着过程 UE AMF ----------------- 注册请求(Registration Request) ----------------------> <--------------- 鉴权请求(Authentication Request) ------…

折线图实现柱状阴影背景的demo

这个是一个由官网的基础折线图实现的流程&#xff0c;将涉及到的知识点附上个人浅薄的见解&#xff0c;源码在最后&#xff0c;需要的可自取。 折线图 成果展示代码注解参数backgroundColordataZoomlegendtitlexAxisyAxisgridseries 源码 成果展示 官网的基础折线图&#xff…

BetterDisplay Pro for Mac v2.0.11激活版:屏幕显示优化专家

BetterDisplay Pro是一款由waydabber开发的Mac平台上的显示器校准软件&#xff0c;可以帮助用户调整显示器的颜色和亮度&#xff0c;以获得更加真实、清晰和舒适的视觉体验。 软件下载&#xff1a;BetterDisplay Pro for Mac v2.0.11激活版下载 &#x1f50d; 精准校准&#xf…

[HackMyVM]靶场 Quick3

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (U…

【触想智能】工业一体机刷卡应用知识分享

工业一体机刷卡技术是一种高效、稳定、安全的身份认证方式&#xff0c;具有广泛的应用场景和优势。在工业自动化控制、生产过程监测等领域&#xff0c;它已成为必不可少的设备之一。 一、工业一体机刷卡的原理:工业一体机刷卡的原理和普通的刷卡设备类似&#xff0c;都是通过读…

3.1_2024ctf青少年比赛部分web题

php后门 根据x-powered-by知道php的版本 该版本存在漏洞&#xff1a; PHP 8.1.0-dev 开发版本后门 根据报错信息&#xff0c;进行提示&#xff0c;前 GET / HTTP/1.1 Host: challenge.qsnctf.com:31639 User-Agentt:12345678system(cat /flag);var_dump(2*3);zerodium12345678…

QChart柱状图

//柱状图// 创建柱状图数据QBarSet *set0 new QBarSet("");*set0 << 1601 << 974 << 655 << 362;QBarSeries *series new QBarSeries();series->append(set0);set0->setColor(QColor("#F5834B"));// 创建柱状图QChart *ch…