51单片机系列-串口(UART)通信技术

🌈个人主页: 羽晨同学
💫个人格言:“成为自己未来的主人~”

并行通信和串行通信
并行方式
并行方式:数据的各位用多条数据线同时发送或者同时接收

并行通信特点:传送速度快,但因需要多根传输线,曾经在近距离、高速率通信中使用,但是这个东西后来不用了。
串行方式
是将数据排成一串,分成一位一位的形式在一条传输线上逐个的传送

串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话线,网线等设备传输,但数据的传送控制比并行通信复杂
异步通信和同步通信
异步通信
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程,为使双方的收发协调,要求发送和接收设备的时钟尽可能一致,我们要学习的单片机的串口通信就是异步通信方式

异步通信是以字符为单位进行传输,字符和字符之间的间隙是任意的,但是每个字符的各位之间的间隙是相同的,字符之间是异步的,但是字符之内每个位之间是同步的
异步通信的特点,不会要求收发双方的时钟的严格一致,实现容易,设备开销较小,但是每个字符需要加2-3位,各个帧之间还有间隔,所以传输效率不高。

同步通信
同步通信和异步通信的最大的区别就是要建立对收发双方时钟的绝对控制,使得双方达到绝对的同步,此时除了字符和字符之间,位与位之间也要保持同步关系。

串行通信的线路输出方式
单工
单工就是数据传输仅能沿一个方向,不能实现反向传输
半双工
数据传输可以沿两个方向,但是要分时进行
全双工
数据传输不仅可以沿两个方式,而且可以同时进行

从左到右分别是单工,半双工,全双工
串行通信常用的数据检验方式
奇偶检验
在发送数据时,数据位尾随的1为奇偶检验位(1/0)
奇检验时,数据中1的位数和检验位1的位数之后应为奇数,偶检验时,位数之后应为偶数,若发现不一致,则代表着传输数据的过程出现了差错


代码和检验
是发送方将所发数据求和,产生一个字节的校验字符(校验和)加到数据的末尾,接收方接受数据同时进行求和,然后将求到的和与校验和进行比较,看看是不是一样的。
信号的调制和解调
利用解调器,把数字信号转换成模拟信号,然后送到通信线路上去,再由调制器把从通信线路上收到的模拟信号转换成数字信号。由于通信是双向的,调制器和解调器合并在一个装置里面,这就是调制解调器。

RS-232接口
RS-232C接口规定使用25针连接器,后来简化成了9针连接器

在这里面,需要注意的主要是2 3 7
RS-232C电平与TTL电平转换驱动电路

第一个是由TTL-232,第二个是由232-TTL

这个是现在的通信芯片
采用RS-232存在的问题
传输距离短,传输速率低,一般不要超过15米,线路好的也不要超过几十米,最高传送速率有限
有电平转移,要求双方共地
抗干扰信号差,采用单端输入输出,存在干扰和噪声,为了提高信噪比,不得不采用较大的电压摆幅。
RS-422A接口

RS-422A输出驱动器是双端平衡驱动器,如果其中一条逻辑是1,另一条逻辑就是0
RS-485接口

RS-485是RS-422A的变型,RS-485用于半双工,而RS-422A用于全双工,如果要连接更多的设备,还可以使用中继器
RS-485的信号传输采用两线间的电压差来表示逻辑0和逻辑1
他可以多个设备进行互联:

一个主机,多个从机
RS-485是一点对多点的通信接口,采用双绞线的结构,普通的PC机不带RS485接口,各个节点的识别是通过设置不同的站地址来实现的。
UART
UART是通用异步串行通信接口,为全双工通信,至少需要两根数据线用于通信双方进行数据双向同时传输

TXD是发送引脚,RXD是接受引脚,GND是地信号
数据帧格式
异步串行通信的数据帧由起始位,数据位,校验位,停止位4部分组成

起始位:位于数据帧开头,占1位,始终为低电平,用于向接收设备表示发送端开始发送1帧数据
数据位:要传输的数据信息,可以是字符或数据,一般为5-8位,由低位到高位一次传送
校验位:位于数据位之后,占1位,用于发送数据的校验,或传送多机串行通信的联络信息
停止位,始终为高电平,表示发送结束

T1,R1是中断位,需要手动清0,验证数据有没有接收完
有两个物理上独立的接收,发送缓冲器SBUF,它们占用同一地址99H,接收器是双缓冲结构,发送时GPU是主动的,不会产生重叠错误。
写SBUF时,操作的是发送缓冲器,读SBUF时,就是读接收缓冲器的内容
发送器工作原理

发送控制器,将SBUF发中的并行数据转为串行数据,并自动添加起始位,可编程位,停止位。
这一过程结束后自动使发送中断请求标志位置为1,表明已经将SBUF发中的数据输出到TXD引脚,即SBUF发为空
接受数据工作原理

在输入移位寄存器和定时器T1的配合下,使来自RXD引脚的串行数据转成并行数据,并自动过滤掉起始位,可编程位,停止位,这一过程结束后自动是的中断请求标志位置为1,表明数据都存放到了SBUF收,即SBUF收为满
串行控制寄存器SCON
SCON:地址是98H,T1和R1硬件置为1后,需要用软件方式清0
电源控制寄存器PCON
空闲控制位和掉电控制位给单片机省电,控制控制位可以将单片机进入休眠模式,只有外部中断可以唤醒
中断允许控制器IE中涉及到串行中断允许控制位ES
ES为串行中断允许控制位,设置ES为0时,将禁止串行中断,设置ES为1时,允许串行中断
4种串口工作方式解读

方式1
方式1是10位数据的异步通信口,TXD是数据发送引脚,RXD是数据接收引脚

方式2
方式3
方式2和方式3基本相同,就是波特率不同,方式2的波特率固定为晶振频率的1/64或者1/32,方式3的波特率由定时器T1的溢出率决定。

方式0
数据由RXD引脚输入或者输出,同步移位脉冲由TXD引脚输出,发送和接收均为8位数据,低位在先,高位在后,波特率固定为fosc/12

方式0输出

方式0输入
好了,本次的文章就到这里了,我们下次再见。

相关文章:
51单片机系列-串口(UART)通信技术
🌈个人主页: 羽晨同学 💫个人格言:“成为自己未来的主人~” 并行通信和串行通信 并行方式 并行方式:数据的各位用多条数据线同时发送或者同时接收 并行通信特点:传送速度快,但因需要多根传输线…...
使用k8s部署java前后端服务
一、项目架构 前端、后端、数据库 1)前端 静态的资源:img css html js文件 js:axios、ajax 2)后端 提供数据:根据web前端发送的请求,从数据库中获取数据 请求都是无状态的,如何保持会话 …...
使用docker创建zabbix服务器
首先保证服务器已正常安装docker,然后执行下面这几个容器创建命令: #创建MySQL容器 docker run --name mysql-server -t --restartunless-stopped -e MYSQL_DATABASE"zabbix" -e MYSQL_USER"zabbix" -e MYSQL_PASSWORD"zabbix_…...
nodejs 016: javascript语法——解构赋值({ a, b, c } = {})=>{console.log(“Hello“);}
在 JavaScript 中,函数参数 { a, b, c } {} 的含义是在函数定义时提供一个默认的对象参数。这个对象包含了三个可选的属性 a, b, 和 c。如果没有传递参数或者传递的参数是一个非对象类型的值,那么函数内部将使用一个空对象 {} 作为参数。 示例 const …...
【人人都能看懂的大模型原理】(一)
前言 当前大模型的学习资源呈现爆发趋势,各种角色的人都用自己的视角参与到大模型的讨论。但是我发现这些学习资源都有几个特点:只摆事实而不讲道理;只讲应用可能而不提实现代价;只讲可能性而缺乏实操经验分享;洞察材…...
JMeter源码解析之JMeter命令行新增命令
JMeter源码解析之JMeter命令行新增命令 需求描述 需要新增一条命令,能够在JMeter命令行中能够展示输入对应的JMeter命令,能够展示对应的命令信息 查看命令效果如下: apache-jmeter-5.1\bin>jmeter --? Copyright © 1999-2024 The …...
YOLOv8 Windows c++推理
#添加一个**yolov8\_。onx **和/或**yolov5\_。Onnx **模型(s)到ultralytics文件夹。 #编辑**main.cpp**来改变**projectBasePath**来匹配你的用户。#请注意,默认情况下,CMake文件将尝试导入CUDA库以与opencv dnn (cuDNN) GPU推理一起使用。 #如果你的Op…...
一文读懂Python中的Popen函数
目录 1. 基本知识2. Demo 1. 基本知识 在Python中,Popen 是 subprocess 模块中的一个函数,它用于创建一个子进程并与其进行通信 subprocess.Popen():Popen 类用于创建和管理子进程 与 os.system() 或 os.popen() 相比,Popen 提供…...
07-阿里云镜像仓库
07-阿里云镜像仓库 注册阿里云 先注册一个阿里云账号:https://www.aliyun.com/ 进入容器镜像服务控制台 工作台》容器》容器服务》容器镜像服务 实例列表》个人实例 仓库管理》镜像仓库》命名空间》创建命名空间 仓库管理》镜像仓库》镜像仓库》创建镜像仓库 使…...
net core mvc 数据绑定 《2》
mvc core 模型绑定 控制绑定名称 》》》Bind 属性可以用来指定 模型应该 绑定的前缀 public class MyController : Controller {[HttpPost]public ActionResult Create([Bind(Prefix "MyModel")] Ilist<MyModel> model){// 模型绑定将尝试从请求的表单数据中…...
文件服务器FastDFS 消息队列中间件RabbitMQ
新标签页 (chinaunix.net) FastDFS - Browse Files at SourceForge.net 一、FastDFS Tracker和Storage: tracker用来管理所有的storage,只是管理服务器,负责负载均衡。 storage是存储服务器,每一个storage服务器都是一个单独的个…...
工作纪实58-Idea打jar包
有时候需要配合算法使用spark定时DP,调用java相关的jar包做数据处理 idea打jar包有以下三种场景 SpringBoot的Maven项目【Maven打包即可】非SpringBoot的Maven项目【添加maven打包参数,使用Maven打包】 借助maven的配置进行打包,新增以下配置…...
ELK-03-skywalking监控linux系统
文章目录 前言一、下载node_exporter二、启动node_exporter三、下载OpenTelemetry Collector四、启动OpenTelemetry Collector4.1 将配置文件下载到同级目录4.2 启动 五、查看总结 前言 skywalking安装完成后,开始我们的第一个监控-监控linux系统。 参考官方文档&a…...
HEITRONICS TC13红外辐射高温计CT13 INFRARED RADIATION PYROMETER CT13
HEITRONICS TC13红外辐射高温计CT13 INFRARED RADIATION PYROMETER CT13...
开源图像降噪算法与项目介绍【持续更新】
Intel Open Image Denoise 介绍:Intel Open Image Denoise(OIDN)是一个开源库,它提供了一系列高性能、高质量的去噪滤镜,专门用于光线追踪渲染的图像。这个库是Intel Rendering Toolkit的一部分,并且是在宽…...
RealSense、ZED 和奥比中光Astra几款主流相机介绍及应用
以下是英特尔 RealSense、Stereolabs ZED 和奥比中光Astra几款相机的详细对比,包括参数、性能以及二次开发等支持,附带代码示例。 详细信息对比和二次开发示例 1. 英特尔 RealSense (例如 D435/D455) 深度技术:立体视觉 红外投影分辨率&a…...
启动 Ntopng 服务前需先启动 redis 服务及 Ntopng 常用参数介绍
启动Ntopng服务之前需要先启动redis服务,因为Ntopng服务依赖于redis服务的键值存储。 服务重启 服务启动 Ntopng常用参数: -d 将 Ntopng 进程放入后台执行。默认情况下,Ntop 在前台运行。 -u 指定启动Ntopng执行的用户,默认为…...
vector的模拟实现以及oj题(2)
前言 上篇博客介绍了大部分vector的接口,其中包括begin()、end()、const begin()、 const end()、size、capacity、reserve、empty、push_back、pop_back、insert、operator[],这篇博客将介绍剩下的部分接口,以及一些oj题解法和思路。 vect…...
数据技术进化史:从数据仓库到数据中台再到数据飞轮的旅程
随着大数据时代的到来,数据已经成为企业的核心资产之一。在过去几十年间,数据技术也随之不断演进,从早期的数据仓库到近年来热门的数据中台,再到正在快速发展的数据飞轮概念,每一步都是技术革新的体现。 一、数据仓库&…...
JAVA JDK华为云镜像下载,速度很快
直达下载地址 https://repo.huaweicloud.com/java/jdk/ https://repo.huaweicloud.com/java/jdk/欢迎各位收藏享用!!!...
构建企业级数据集成平台:解锁非标准数据源的.NET适配器框架实践
1. 项目概述与核心价值最近在和一些做企业级应用集成的朋友聊天,大家普遍提到一个痛点:从大型商业软件(比如SAP、Oracle EBS)或者一些老旧的、文档不全的遗留系统中抽取数据时,经常会遇到各种“非标准”的数据格式。这…...
明日方舟MAA助手:如何用5分钟自动化你的每日游戏任务
明日方舟MAA助手:如何用5分钟自动化你的每日游戏任务 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitc…...
使用 Taotoken CLI 工具一键配置多开发环境与团队协作密钥
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用 Taotoken CLI 工具一键配置多开发环境与团队协作密钥 在团队协作开发中,统一大模型 API 的接入配置是一项基础但繁…...
AI智能体配置管理实战:基于agent-config-manager的解决方案
1. 项目概述与核心价值最近在折腾一个多智能体协作的项目,发现配置文件的管理简直是个灾难。每个智能体(Agent)都有自己的一堆参数:API密钥、模型选择、系统提示词、温度值、最大token数……更别提不同环境(开发、测试…...
别再乱接线了!ESP32-DevKitC V4开发板引脚功能详解与避坑指南(附引脚图)
ESP32-DevKitC V4开发板引脚安全操作手册:从入门到精通的接线法则 当你第一次拿到ESP32-DevKitC V4开发板时,那些密密麻麻的引脚可能会让你感到无从下手。作为一名曾经因为误接引脚而烧毁过三块开发板的"过来人",我深知正确的引脚使…...
避坑指南:为什么你的PyTorch 1.8 + CUDA 10.1跑不了Grad-CAM?深入torch.fx模块依赖
避坑指南:为什么你的PyTorch 1.8 CUDA 10.1跑不了Grad-CAM?深入torch.fx模块依赖 当你兴致勃勃地准备用Grad-CAM可视化模型注意力时,终端突然抛出ModuleNotFoundError: No module named torch.fx——这个看似简单的报错背后,其实…...
Adafruit退货政策全解析:电子元件退货的核心逻辑与实操指南
1. 退货政策的核心逻辑与适用场景 在创客圈和电子爱好者社群里,Adafruit 几乎是无人不晓的名字。无论是 Arduino 开发板、各种传感器,还是炫目的 NeoPixel LED 灯带,他们的产品是无数项目从想法变为现实的基石。但即便是最资深的玩家…...
AI智能体安全沙箱agentguard:为LLM代码执行筑起防火墙
1. 项目概述与核心价值 最近在开源社区里,一个名为 A386official/agentguard 的项目引起了我的注意。乍一看这个标题,你可能会联想到网络安全、代理防护或者某种守护进程。没错,这个项目正是为了解决一个在AI应用开发,特别是基于…...
音乐学者必看的NotebookLM冷启动指南,从乐谱OCR识别到和声进行语义建模,一步到位
更多请点击: https://intelliparadigm.com 第一章:NotebookLM在音乐学研究中的范式革命 NotebookLM(由Google Research推出的基于用户上传文档的AI助手)正悄然重塑音乐学研究的方法论边界。它不再依赖通用知识库的模糊匹配&#…...
【c++面向对象编程】第22篇:输入输出运算符重载:<< 与 >> 的友元实现
目录 一、为什么不能是成员函数? 二、标准写法(两步法) 第1步:在类中声明友元函数 第2步:实现全局函数 三、为什么要返回引用? 支持链式输出 正确 vs 错误示例 四、为什么需要友元?能否不…...
