【Iot】什么是串口?什么是串口通信?串口通信(串口通讯)原理,常见的串口通信方式有哪些?

串口通信原理

    • 1. 串口
    • 2. 串口通信
    • 4. 波特率与比特率
    • 5. 帧格式
    • 3. 串口通讯的通讯协议
      • 3.1. RS232
      • 3.2. RS485
    • 总结

1. 串口

串行接口简称串口,也称串行通信接口串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。
串口可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。

2. 串口通信

串口通信(Serial Communications)是串口按位(bit)发送和接收字节的通信方式,它是嵌入式物联网领域中常用的通讯方式。
典型的串口通信使用3根线完成,分别是发送、接收、地线。
由于串口通信是异步的,所以端口能够在一根线上发送数据,同时在另一根线上接收数据。
异步通信和同步通信都要进行发送方和接收方的“同步”。其中异步通信按字符进行传输,利用每一帧的起始位和停止位实现同步;而同步通信采用共同外部时钟来进行同步。
在这里插入图片描述

  • TX(Transmit Exchange)数据发送脚
  • RX(Receive Exchange)数据接收脚
  • GND(Ground)底线

在这里插入图片描述
A设备的Tx数据发送脚要连接B设备的Rx数据接收脚;
同理,B设备的Tx数据发送脚要连接A设备的Rx数据接收脚;
GND脚两设备需要直接连接以保持共地,消除电路中的干扰。

4. 波特率与比特率

波特率表示单位时间内传送的码元(Symbol)符号的个数,它是对符号传输速率的一种度量,它用单位时间内载波调制状态改变的次数来表示,波特率即指一个单位时间内传输符号的个数。
简言之,波特率一秒传输高低电平的数量。
当每个码元只代表一个比特信息时,例如在简单的异步串行通信中,波特率和比特率是相等的。但当采用更复杂的调制方式使得一个码元能够携带多个比特时,比特率会大于波特率。此时,比特率 = 波特率 × 每个码元所含的比特数。比特率单位是bit/s(位/秒),常用bps表示。

码元是串行数据传输中的基本信号单元。一个码元通常对应于一个二进制位,即“0”或“1”。在这种情况下,码元就是最简单的电平信号,比如低电压表示数字0,高电压表示数字1。

常用的波特率有9600、19200、38400、115200。
比如波特率为9600表示:每秒中传输9600bit,也就是相当于每一秒中划分成了9600等份。因此,那么每1bit的时间就是1/9600秒=104.1666…us。约0.1ms。既然是9600等份,即每1bit紧接着下一个比特,不存在额外的间隔。
两台设备要想实现串口通讯,接收与发送端设置的波特率必须相同,否则是没办法实现通讯。

5. 帧格式

帧格式表示串口通信发送数据帧的格式。例如在波特率为9600bps的串口通信中一帧的波形数据如下:
帧格式
每1/9600秒(0.1ms)产生一个电平,10个电平组成一个有效数据帧,这样的组合格式就叫做帧格式。
数据帧从左往右总是以地电平开始,高电平结束,在高低电平之间的为n个二进制数据。其中n代表二进制的数量,数量不同所表示的帧格式也不同,常见的有8位二进制,7位二进制,5位二进制的数据位。在上图中的就是8位二进制的数据位。
二进制数据位,高电平表示1,低电平表示0,如上图表示:01000001,转换为十进制为1+64=65,对应ASCII表中的字母A
在这里插入图片描述

注意:窗口通信发送端与接收端的帧格式与波特率都要相同,否则会出现乱码问题

3. 串口通讯的通讯协议

串口通信时首先要约定好帧格式与波特率,并且串口通信采用TTL逻辑(Transistor-Transistor Logic) 是指晶体管-晶体管逻辑。
TTL
TTL逻辑门的标准输出状态是:

  • 高电平(逻辑“1”或HIGH):典型值为+2.4V至+5V(对于标准5V电源供电的TTL),代表有效信号。
  • 低电平(逻辑“0”或LOW):典型值接近于地电压(0V至+0.4V),代表无效信号。

这种通信方式抗干扰能力弱,例如下图中,静电让某一个低电平变高,就会导致通信距离很短,越1米。
在这里插入图片描述

所以为了提示通信的稳定性与距离,产生了由美国制订的推荐标准RS232RS485,都是在基础串口通信的基础上加了特定的电平转换芯片改变电压传输值。

3.1. RS232

RS232只改变了电平大小,提升了抗干扰能力与通讯距离(15米),其传输频率为2兆。

  • 高电平:3V至15V
  • 低电平:-3V至-15V

RS232是负逻辑,比如说232芯片收到的电压是5V,它输出-12V;收到0V,它输出+12V。

RS232是全双工通讯:能同时接收和发送,即允许数据同时在两个方向上传输。特点是只能进行点对点的简单通讯。

RS232

3.2. RS485

RS485实现了TTL信号与差分信号互相转换,提升了抗干扰能力,采用双绞线,通讯距离可达1200米,其传输频率为50兆。
差分信号利用两根线的电压差值表示0与1。
差分信号

半双工通讯:既能接收又能发送,但在同一时刻只允许数据在一个方向上传输。半双工可以实现一主多从的通讯。

总结

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024/1/30 dfs与bfs

想要了解dfs与bfs,就得了解队列和栈。 一、栈与队列 1.栈 栈说白了就是先入后出。把栈类比为一个容器。只有一个口,所以如果我们想要取出最底层也就是最先放入的元素,只能最后取出它。 栈基础操作有如下几种: push 放入pop 拿…

网络安全挑战:威胁建模的应对策略与实践

在数字威胁不断演变的时代,了解和降低网络安全风险对各种规模的组织都至关重要。威胁建模作为安全领域的一个关键流程,提供了一种识别、评估和应对潜在安全威胁的结构化方法。本文将深入探讨威胁建模的复杂性,探索其机制、方法、实际应用、优…

leetcode 1.两数之和(C++)DAY1(待补充哈希表法)

文章目录 1.题目描述示例提示 2.解答思路3.实现代码结果4.总结 1.题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&…

Quppy 注册教程,轻松通过欧洲银行同名转账绑定个人IBAN账号

Quppy 注册教程,轻松通过欧洲银行同名转账绑定个人IBAN账号 官网下载APP或者去香港区下载APP使用 https://quppy.com/ch/ 按照官方APP里的邮箱注册,填写邀请代码258258 能提升审核成功率,后添加电话和个人信息;需要说明的是:网站…

力扣 第 123 场双周赛 解题报告 | 珂学家 | 二维偏序+单调队列优化

前言 执手看歌敲金钗,笑语落珠明眸睐。 忽然蝴蝶春风满,焉教冷镜瘦朱颜。 整体评价 T3是基于map的前缀和的变形题,T4是二维偏序的一道应用题。 题外话,力扣还是实现N久之前的承诺了,命名权奖励,赞一个。 …

VC++中使用OpenCV绘制直线、矩形、圆和文字

VC中使用OpenCV绘制直线、矩形、圆和文字 在VC中使用OpenCV绘制直线、矩形、圆和文字非常简单,分别使用OpenCV中的line、rectangle、circle、putText这四个函数即可。具体可以参考OpenCV官方文档:https://docs.opencv.org/4.x/index.html 下面的代码展…

通过手写简易版RPC理解RPC原理

RPC是什么 所谓的RPC其实是为了不同主机的两个进程间通信而产生的,通常不同的主机之间的进程通信,程序编写需要考虑到网络通信的功能,这样程序的编写将会变得复杂。RPC就来解决这一问题的,一台主机上的进程对另外一台主机的进程发…

jupyter notebook更改工作目录的2个细节

详细步骤参考知乎原文: 如何更改Jupyter Notebook的默认工作路径? - 知乎 (zhihu.com​​​​​​) 步骤4中需要删除 #符号和后面的空格!一定要删除空格,否则会出现语法错误的报错 步骤5中,经过评论区提醒后&#xf…

三维重建方法3D gaussian splatting与NeRF的区别和异同

最近学习了一些三维重建相关的内容,目前比较主要的重建流派就是3DGS以及NeRF,NeRF作为2020年发布的文章轰动一时,影响深远,有很多NeRF based的相关工作在这些年涌现。3DGS作为2023年的new talk of the town,其在保证合…

HBase 数据导入导出

HBase 数据导入导出 1. 使用 Docker 部署 HBase2. HBase 命令查找3. 命令行操作 HBase3.1 HBase shell 命令3.2 查看命名空间3.3 查看命名空间下的表3.4 新建命名空间3.5 查看具体表结构3.6 创建表 4. HBase 数据导出、导入4.1 导出 HBase 中的某个表数据4.2 导入 HBase 中的某…

深度学习手写字符识别:训练模型

说明 本篇博客主要是跟着B站中国计量大学杨老师的视频实战深度学习手写字符识别。 第一个深度学习实例手写字符识别 深度学习环境配置 可以参考下篇博客,网上也有很多教程,很容易搭建好深度学习的环境。 Windows11搭建GPU版本PyTorch环境详细过程 数…

代码随想录算法训练营DAY11 | 栈与队列 (2)

一、LeetCode 20 有效的括号 题目链接:20.有效的括号https://leetcode.cn/problems/valid-parentheses/ 思路:遇到左括号直接进栈;遇到右括号判断站顶是否有匹配的括号,没有就返回flase,有就将栈顶元素出栈&#xff1…