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

串口通信协议

八、串口

1. 通信基础

1.1 串行通信与并行通信


1.2 全双工、半双工及单工通信

单工通信:数据只能沿一个方向传输 半双工通信:数据可以沿两个方向传输,但需要分时进行 全双工通信:数据可以同时进行双向传输 1.3 同步通信与异步通信

同步通信

异步通信

同步通信:发送和接收双方按照预定的时钟节拍进行数据的发送和接收,双方的操作严格同步。 异步通信:双方不需要严格的时钟同步,每个数据块之间通过特定的起始位和停止位进行分隔,接收方可以 独立地识别每个数据块。

1.4 通信速率 通信速率是指在通信系统中单位时间内传输的信息量,是评估通信系统性能的重要指标之一。 1. 比特率(Bit rate): 定义:比特率是指在通信线路(或系统)中单位时间(每秒)内传输的信息量,即每秒能传输的二进制 位数。它用单位时间内传输的二进制代码的有效位(bit)数来表示,其单位为比特/秒(bit/s或 bps)。 含义:比特率越高,表示单位时间内传送的数据量越大,信息传输的速率越快。它经常被用作连接速 度、传输速度、信息传输速率和数字带宽容量的同义词。

2. 波特率(Baud rate): 定义:在电子通信领域,波特率表示每秒传送的码元的个数,即单位时间内载波调制状态变化的次数。 它用单位时间内载波调制状态改变次数来表示,其单位为波特(Baud)。 含义:波特率描述的是单位时间内调制信号的能力,它决定了在给定时间内可以通过通信通道发送多少 个离散的信号单元(码元)。在数字通信中,码元是表示数字信息的最小单位。

3. tips 比特率 = 波特率 * log2 M ,M表示每个码元承载的信息量 二进制系统中,波特率数值上等于比特率

2. 串口通信简介

串口,也称为串行接口或串行通信接口(通常指COM接口),是一种采用串行通信方式的扩展接口。它实现 了数据一位一位地顺序传送,具有通信线路简单、成本低但传送速度慢的特点。只要一对传输线,串口就可 以实现双向通信。 串口通信的接口类型包括TTL、CMOS、RS-232和RS-485等,它们分别代表了不同的电平标准。 TTL电平 逻辑1:5V,逻辑0:0V CMOS电平 逻辑1:供电电压的最大值,逻辑0:0V RS-232电平 逻辑1:-3V~-15V,逻辑0:+3~+15V RS-485电平 采用差分信号,逻辑1:两线间的电压差为+(0.2~6)V,逻辑0:两线间的电压差为-(0.2~6)V

1. 起始位(Start Bit):起始位为低电平时,告诉接收方数据传输即将开始,准备接收。在通信开始时, 发送端首先会发送一个起始位,它是一个逻辑0(低电平)的信号,用于同步发送和接收设备之间的时 钟。接收端在检测到起始位后,会开始准备接收后续的数据位。

2. 有效数据位(Data Bits):数据位是由一系列二进制值组成,用于传输或接收实际的数据。数据位的数 量决定了可以传输的不同二进制值的数量,常见的有5位、6位、7位、8位,LSB在前,MSB在后。数据 位紧随起始位之后,包含了要传输的实际信息。

3. 校验位(Parity Bit):校验位用于验证数据的完整性,以确保传输过程中没有出现错误。常见的校验位 选项有None(无校验位)、Odd(奇校验位)和Even(偶校验位)。在发送数据时,校验位会根据数 据位中1的个数进行计算,并加入到数据中一起传输。接收端则会根据校验位的值进行校验,以判断数 据是否存在错误。

4. 停止位(Stop Bit):停止位是一个逻辑高电平(1),用于指示数据传输的结束。当停止位出现时,接 收端知道数据传输已经完成,并且可以开始处理接收到的数据。停止位位于数据位和校验位之后,它的 作用是确保接收端有足够的时间来识别数据帧的结束,并为下一个数据帧的到来做好准备


http://www.kler.cn/news/304252.html

相关文章:

  • python如何把数据导出生成excel ?
  • Python 数学建模——假设检验
  • 学习之性能的理论知识一
  • 【中国国际航空-注册/登录安全分析报告】
  • Spring Cloud集成Eurake
  • 《PneumoLLM:利用大型语言模型的力量进行尘肺病诊断》|文献速递--基于深度学习的医学影像病灶分割
  • mysql笔记4(数据类型)
  • Nginx 实现会话保持的方式配置
  • echarts饼图让部分数据显示在图外,部分显示在图内
  • 数据结构应用实例(五)——关键路径
  • 学python要下什么包吗,有推荐的教程或者视频吗?
  • SprinBoot+Vue山西文旅网的设计与实现
  • 软件测试学习笔记丨Postman实战练习
  • 黑链、黑帽、明链分别是什么意思
  • JavaScript --函数作用域变量的使用规则(局部和访问)
  • 研究生深度学习入门的十天学习计划------第十天
  • LLM 工程师入门:生成式AI的简易指南
  • 【Vue】移动端访问Vue项目页面无数据,但是PC访问有数据
  • Linux定时启动jar应用shell脚本分享
  • 基于springboot的二手物品管理系统的设计与实现 (含源码+sql+视频导入教程)
  • C语言实现一个简单的点歌系统
  • XSS和sql注入部分场景测试用例样例
  • 将复杂类型列展开成多行,附带json解析
  • pandas 将多条记录整合成一条记录,每条记录的year和month字段组成新的字段名
  • MySQL从C盘迁移到D盘
  • Git的学习笔记
  • 服务器与个人计算机之间的区别
  • Java项目: 基于SpringBoot+mybatis+maven课程答疑系统(含源码+数据库+毕业论文)
  • 【Ubuntu】Ubuntu双网卡配置 实现内外网互不影响同时可用
  • KubeCon China 回顾|快手的 100% 资源利用率提升:从裸机迁移大规模 Redis 到 Kubernetes