协议集合(学习笔记)
按照数据的传送方式,通信协议可分为以下2种。
串行通信:串行(Serial)指的是逐个传输数据位,一次只传输一个位。
并行通信:并行(Parallel)指的是同时传输多个数据位,一次可以传输多个位。
按照消息传送的方向与时间关系,通信协议可分为以下3种。
单工通信:单工通信(Simplex Communication)是指消息只能单方向传输的通信方式。
在单工通信中,发送端与接收端是固定的,即发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息。
半双工通信:半双工通信(Half-duplex Communication)中的“双工”表示通信的双方都可以发送信息,而“半”表示双方不能同时发送或同时接收信息,即对于同一个设备,同一时刻只能发信息或者收信息,不能在发信息的时候又收信息。
在这种工作方式下,发送端可以转变为接收端;接收端也可以转变为发送端。但是在同一个时刻,信息只能在一个方向上传输。因此,也可以将半双工通信理解为一种可以切换方向的单工通信。
全双工通信:通信的双方可以同时发送和接收数据。
按照时钟特性,通信协议可分为以下2种。
同步通信:双方使用频率一致的时钟。发送端在发送串行数据的同时,提供一个时钟信号,并按照一定的约定(如:在时钟信号的上升沿时,将数据发送出去),发送数据;接收端根据发送端提供的时钟信号,以及一定的约定(例如:在时钟信号为低电平时,读取数据),接收数据。
异步通信:收发双方可以有各自自己的时钟,接收方并不知道数据什么时候会到达,发送方发送的时间间隔可以不均,接收方是在数据的起始位和停止位的帮助下实现信息同步的。
UART
串口参数
起始位:位于数据帧开头,只占 1位,始终为逻辑“0”,必须有。起始位用于表示一个数据帧的开始,起到同步作用。
数据位:紧跟在起始位之后,用于传送数据。用户可根据情况确定为 5、6、7、8 位,低位在前,高位在后。通常采用 8 位数据位,用于传送一字节的数据.
校验位
奇校验码:数据位有奇数个1,奇校验码为0;数据位有偶数个1奇校验码为1。即:奇校验码的加入使得数据位和校验位整体保持奇数个1。
偶校验码:数据位有偶数个1,偶校验码为0;数据位有奇数个1偶校验码为1。即:偶校验码的加入使得数据位和校验位整体保持偶数个1。
停止位
位于数据的最后,始终为逻辑“1”,必须有。停止位的长度由用户确定,可选择为1位、或 2 位。停止位表示一个数据的结束,也是为发送下一个数据帧做准备,同样也起到了同步的作用。
波特率:是指单位时间内传送二进制数据的位数,单位用bps或b/s(位/秒)表示。
比特率:是衡量异步串行通信的数据传输速率,即单位时间内传送二进制有效数据的位数,单位也用bps或b/s(位/秒)表示。
UART只是对信号的时序进行了定义,而未定义接口的电气特性;
UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连;例如:51单片机与32单片机通信,51单片机高低电平电压为0V,5V。32则为0V,3.3V.
UART没有规定不同器件连接时连接器的标准,所以不同器件之间通过UART通信时连接很不方便;
总结来说UART存在的问题:
1.抗干扰能力差
UART一般直接使用TTL信号来表示0和1,但TTL信号的抗干扰能力较差,数据在传输过程中很容易出错
通信距离极短
因为TTL信号的抗干扰能力较差,所以其通信距离也很短,一般只能用于一个电路板上的两个不芯片之间的通信
RS232:
RS232协议是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家、计算机终端生产厂家共同制定的用于串行通讯的标准:该标准规定采用一个标准的连接器,标准中对连接器的每个引脚的作用加以规定,还对信号的电平加以规定;
- 接口信号电平高,容易损坏接口电路的芯片。逻辑“1”为-3 ~ -15V;逻辑为“0”:+3 ~ +15V,噪声裕量为2V。也就是说,接收器需要将高于+3V的信号识别为逻辑“0”,将低于-3V的信号识别为逻辑“1”,将5V的TTL电平识别为逻辑正极,将0识别为逻辑负极。与TTL电平不兼容,需要一个电平转换电路来连接到TTL电路。
- 接口采用信号线和信号回波串,形成共同的接地传输形式。这种标准的接地传输容易受到共模干扰,因此抗噪性较弱。
- 传输距离有限。最大传输距离为50英尺。它只能达到大约15米。
RS485:
RS-485串行总线广泛用于通信距离必须为几十米到几公里的时候。RS-485使用平衡的发射和差分接收,因此可以抑制共模干扰。除了总线收发器的高灵敏度外,它还可以检测低至200mV的电压,从而将发射的信号恢复到公里以上。RS-485使用半双工工作模式,任何时候只发送一个点。因此,发射电路必须由使能信号控制。
RS232 和 RS485 的区别
- 工作模式:RS232 为全双工,RS485 为半双工。
- 传输方式:RS485和RS232只是物理协议的通信(即接口标准),RS485是差分传输方式,RS232是单端传输方式,但通信程序没有太大区别。
- 信号线:RS485接口组成的半双工网络,一般只需二根信号线。RS232 只使用 RXD、TXD、GND 三条线 。
- 抗干扰性:RS485接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。RS232接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰。
- 传输距离:RS485接口的最大传输距离标准值为 1200 米(9600bps 时),实际上可达 3000 米。RS232传输距离有限,最大传输距离标准值为 50 米,实际上也只能用在 15 米左右。
- 通信能力:RS485 接口在总线上是允许连接多达128个收发器,用户可以利用单一的 RS485 接口方便地建立起设备网络。RS232只允许一对一通信。
- 传输速率:RS232传输速率较低,在异步传输时,波特率为 20Kbps。RS485 的数据最高传输速率为 10Mbps 。
- 电气电平值:RS485的逻辑"1"以两线间的电压差为+(2-6) V 表示;逻辑"0"以两线间的电压差为-(2-6)V 表 示 。在 RS-232 中任何一条信号线的电压均为负逻辑关系。即:逻辑"1",-(5-15)V;逻辑"0 " +(5- 15)V 。
SPI
SPI是一种串行、全双工、同步、单端、点对多的通信协议
一主一从的SPI通信有四根通信线:
SCK/SCLK:串行时钟信号线
MOSI:主机输出从机输入数据线。有时也可以是SOMI,DI(Data Input)(从机端)、SI(Slave Input)(主机端)
MISO:主机输入从机输出数据线。有时也可以是SIMO、DO(Data Output)(从机端)、SO(Slave Output)(主机端)
SS(Slave Select)/CS(Chip Select):从机选择线/片选线,低电平时与相连从机通信
此外,主从设备的参考电压要相同(共地)
对于主机:
输出引脚(SCK、MOSI、SS)配置为推挽输出
输入引脚(MISO)配置为浮空或上拉输入
对于从机:
通信时,输出引脚(MISO)配置为推挽输出,空闲时,输出引脚(MISO)配置为高阻态
输入引脚(SCK、MOSI、SS)配置为浮空或上拉输入
通信过程
1.主机选择从机:主机通过拉低对应从机的SS线选择开始与其通信。
2.主机启动时钟、从机切换MISO模式:主机开始产生SCLK信号,通常从空闲状态开始,并在数据传输期间持续提供时钟信号。从机将MISO由高阻态切换为推挽输出
3.数据交换:
对于主机:
主机将待发送的数据写入其发送数据缓存区后,先将一个字节的数据复制到移位寄存器。随后,移位寄存器中的数据从高位到低位一位一位地移出到MOSI线上。
同时,主机通过MISO线接收到从机发来的数据,半个时钟周期后,这些数据从高位到低位一位一位地被移入移位寄存器中的。
当移位寄存器移出一个字节的数据时,它同时(严格上讲,差了半个时钟周期)也移入了一个字节的数据,此时移位寄存器中存储的是接收到的数据,这些数据会被存入接收数据缓存区,之后主机发送数据缓存区中的下一个字节的数据会被复制到移位寄存器中,从而进行下一个字节的数据交换,如此循环,直至交换完所有的数据。
对于从机:
从机将待发送的数据写入其发送数据缓存区后,先将一个字节的数据复制到移位寄存器。随后,移位寄存器中的数据从高位到低位一位一位地移出到MISO线上。
同时,从机通过MOSI线接收到从机发来的数据,半个时钟周期后,这些数据从高位到低位一位一位地被移入移位寄存器中的。
当移位寄存器移出一个字节的数据时,它同时(严格上讲,差了半个时钟周期)也移入了一个字节的数据,此时移位寄存器中存储的是接收到的数据,这些数据会被存入接收数据缓存区,之后从机发送数据缓存区中的下一个字节的数据会被复制到移位寄存器中,从而进行下一个字节的数据交换,如此循环,直至交换完所有的数据。
4.完成通信:当所有需要交换的数据都传输完毕后,主机停止产生SCK信号,并将SS线拉高,以结束与当前从机的通信。从机将输出引脚(MISO)配置为高阻态,以避免干扰之后主机与其他从机的通信。
一些说明:
SPI只能进行数据交换,不能单独进行读或写数据。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节(通常为0x00和0xFF);反之,若主机要读取从机给的一个字节,就必须发送一个字节(通常为0x00和0xFF)来引发从机的传输。
SPI总线传送完一个字节后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送。
iic
IIC是一种串行、半双工、同步、单端、多对多的通信协议
can
CAN是一种串行、异步、半双工、差分、多对多的通信协议。主要用于汽车内部电子设备之间的通信。
CAN 的数据帧结构
在原始数据段的前面加上传输起始标签、片选 (识别) 标签和控制标签,在数据的尾段加上 CRC校验标签、应答标签和传输结束标签,把这些内容按特定的格式打包好,就可以用一个通道表达各种信号了。这些标签起到了协同传输的作用,当整个数据包被传输到其它设备时,只要这些设备按格式去解读,就能还原出原始数据,这样的报文就被称为 CAN 的“帧”。
具体每位:http://t.csdnimg.cn/rLVHt
相关文章:

协议集合(学习笔记)
按照数据的传送方式,通信协议可分为以下2种。 串行通信:串行(Serial)指的是逐个传输数据位,一次只传输一个位。 并行通信:并行(Parallel)指的是同时传输多个数据位,一次…...

进程
进程 进程进程的含义PCB块内存空间进程分类:进程的作用进程的状态进程已经准备好执行,所有的资源都已分配,只等待CPU时间进程的调度 进程相关命6.查询进程相关命令1.ps aux2.top3.kill和killall发送一个信号 函数1.fork();2.getpid3.getppid示…...

10款好用的电脑监控软件推荐丨2024年干货整理,赶紧码住!
选择合适的电脑监控软件可以帮助企业和个人更好地管理和保护其计算机资源。以下是10款较为好用的电脑监控软件推荐。 1. 安企神 7天试用体验https://work.weixin.qq.com/ca/cawcde06a33907e60a 简介:安企神是一款专为企业设计的信息安全管理软件,提供…...

【MySQL-24】万字全面解析<索引>——【介绍&语法&性能分析&使用规则】
前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Lin…...

刷题记录(2)
1. HWOD机试 - 模拟消息队列(100) package com.yue.test;import org.junit.Test;import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List;/*** Author: 夜雨* Date: 2021-12-08-10:31* Description:* Version 1.0*/ public…...
JVM中的GC过程
堆内存结构:在详细讨论GC过程之前,需要了解JVM堆内存的结构。JVM堆内存通常被分为新生代(Young Generation)和老年代(Old Generation),其中新生代又进一步细分为Eden区(Eden Space&a…...

Python实战项目:天气数据爬取+数据可视化(完整代码)_python爬虫实战
一、选题的背景 随着人们对天气的关注逐渐增加,天气预报数据的获取与可视化成为了当今的热门话题,天气预报我们每天都会关注,天气情况会影响到我们日常的增减衣物、出行安排等。每天的气温、相对湿度、降水量以及风向风速是关注的焦点。通过…...
FFmpeg源码:compute_frame_duration函数分析
一、compute_frame_duration函数的定义 compute_frame_duration函数定义在FFmpeg源码(本文演示用的FFmpeg源码版本为7.0.1)的源文件libavformat/demux.c中: /*** Return the frame duration in seconds. Return 0 if not available.*/ stat…...

ARM 异常处理(21)
异常的流程: 首先: 在硬件上阶段: 这里是4大步3小步 然后是 异常处理: 这里主要是保存现场,进行异常处理 然后是 异常返回: 主要指 恢复现场, 再跳转回去。 首先硬件上ÿ…...

我开源了我的新闻网站项目
🎉 前言 暑假时写了一个Web项目,感觉做的还是有模有样的,不仅做了前端,还加了后端并连了数据库。最近也是将它开源了,一来是为了熟悉一下Github流程和Git使用命令,二来也是想和大家分享一下自己的成果&…...

LlamaIndex 使用 RouterOutputAgentWorkflow
LlamaIndex 中提供了一个 RouterOutputAgentWorkflow 功能,可以集成多个 QueryTool,根据用户的输入判断使用那个 QueryEngine,在做查询的时候,可以从不同的数据源进行查询,例如确定的数据从数据库查询,如果…...
设计模式学习-责任链模式
概念 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止. 代码编写 using UnityEngine; using System.Collections; public class ChainOfResp…...

【全网最全】2024年数学建模国赛B题31页完整建模过程+成品论文+matlab/python代码等(后续会更新
您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 2024数学建模国赛B题 【全网最全】2024年数学建模国赛B题31页完整建模过程成品论文matlab/python代码等(后续会更新「首先来看看目前已有的资料…...

第二十一届华为杯数学建模经验分享之资料分享篇
今天给大家分享一些数学建模的资料,通过这些资料的学习相信你们一定在比赛中获得好的成绩。今天分享的资料包括美赛和国赛的优秀论文集、研赛的优秀论文集、推荐数学建模的相关书籍、智能算法的学习PPT、python机器学习的书籍和数学建模经验分享与总结,其…...
使用 OpenSSL 创建自签名证书
mkdir -p /etc/nginx/conf.d/cert #2、创建私钥 openssl genrsa -des3 -out https.key 1024 提示输入字符: 输入字符:rancher [rootocean-app-1a-01 cert]# openssl genrsa -des3 -out https.key 1024 Generating RSA private key, 1024 bit long modulu…...

EmguCV学习笔记 VB.Net 9.1 VideoCapture类
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…...

Rspack 1.0 发布了!
文章来源|Rspack Team 项目地址|https://github.com/web-infra-dev/rspack Rspack 是基于 Rust 编写的下一代 JavaScript 打包工具, 兼容 webpack 的 API 和生态,并提供 10 倍于 webpack 的构建性能。 在 18 个月前,我…...

【全网最全】2024年数学建模国赛E题超详细保奖思路+可视化图表+成品论文+matlab/python代码等(后续会更新
您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 【全网最全】2024年数学建模国赛E题成品论文超详细保奖思路可视化图表matlab/python代码等(后续会更新「首先来看看目前已有的资料,还…...
数智转型,看JNPF如何成为企业的必备工具
随着数字化转型的浪潮席卷全球,企业面临着前所未有的挑战与机遇。在这一过程中,低代码开发平台作为一种创新的软件开发方式,正逐渐成为企业实现快速迭代和敏捷开发的关键工具。JNPF作为一款领先的低代码开发平台,凭借其强大的功能…...

ArcGIS Pro 发布松散型切片
使用ArcGIS Pro发布松散型切片问题,有时候会出现切片方案写了松散型,但是自动切片完成后依然是紧凑型的问题,这时候可以采用手动修改然后再切片的方式。 1. 发布切片服务 选择手动切片方式 2. 手动修改服务的切片方案文件 修改cache服务…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...