串口通信技术基础

news2025/1/16 21:41:06

1.0 串口通信基础

数据通信的两种常用形式:

1:并行通信串行通信

并行方式:数据的各位使用多条数据线同时发送或同时接收

特点:传送速度快,但因需要多根传输线,曾经在近距离、高速率通信中使用


串行方式:是将数据排成一串,分成一位一位的形式在一条传输线上逐个地传送。

特点:串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话线、网线等设备传输,但数据的传送控制比并行通信复杂。


2.0 通信的常见形式

同步通信异步通信

异步通信:ASYNC (asynchronous data communication)   异步通信:是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。【异步通信指没有时间线需要通信双方约定合适的采样频率,对数据进行发送和接收】

单片机的串口通信属于 “异步通信”

异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间是异步的(字符之间不一定有“位间隔”的整数倍的关系),但同一字符内的各位是同步的(各位之间的距离均为“位间隔”的整数倍)。

异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。


同步通信

同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过两种方法实现。【同步通信有明确的时间线,不需要约定合适的采样频率】


3.0 串行通信线路传输方式

1单工

单工:是指数据传输仅能沿一个方向,不能实现反向传输

2半双工

半双工:是指数据传输可以沿两个方向,但需要分时进行

3全双工

全双工是指数据可以同时进行双向传输

第一个表示的是单工的传输方式,第二个表示的是半双工的传输方式,第三个表示的是全双工的传输方式。


4.0 通信校验方式

1 奇偶校验

在发送数据时,数据位尾随的1位为奇偶校验位(1 或 0)。

奇校验时,数据中1的个数与校验位1的个数之和应为奇数;偶校验时,数据中1的个数与校验位1的个数之和应为偶数。接收字符时,对1的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。

2 代码和校验

代码和校验是发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差错。

...

3 循环冗余校验(Cyclic Redundancy Check, CRC)

这种校验是通过某种数学运算实现有效信息与校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验等。这种校验方法纠错能力强,广泛应用于同步通信中。【需要加强学习】

信号的调制与解调(也就是我们俗称的光猫)


5.0 串行通信接口标准

功能特性接口标准:

过程特性:

5:采用RS-232C接口存在的问题

  • 1  传输距离短,传输速率低

  RS-232C:总线标准受电容允许值的约束,使用时传输距离一般不要超过15米(线路条件好时也不超过几十米),最高传送速率有限。

  • 2 有电平偏移

RS-232C:总线标准要求收发双方共地。通信距离较大时,收发双方的地电位差别较大,在信号地上将有比较大的地电流并产生压降。

  • 3抗干扰能力差

RS-232C:在电平转换时采用单端输入输出,在传输过程中当干扰和噪声混在正常的信号中。为了提高信噪比,RS-232C总线标准不得不采用比较大的电压摆幅。

RS-422A接口


6.0 单片机串口(USART)结构

通信的目的:将一个设备的数据传输到另外一个设备,拓展硬件系统

通信协议:   制定通信规则,通信双方按照协议规定进行数据收发

常见的通信协议

UART: Universal Asynchronous Receiver Transmitter,通用异步串行通信接口,为全双工通信,即在发送数据的同时也能够接收数据,因此,UART至少需要两根数据线用于通信双方进行数据双向同时传输,最简单的UART接口由IxD、RxD、GND共3根线组成。其中,TxD用于发送数据,RxD用于接收数据,GND为信号地线,通过交叉连接实现两个芯片间的串口通信。

通信协议的数据帧格式

刚开始:还没有进行数据发送的时候串口处于空闲的状态,也就是高电平

数据的起始位:也就是当要进行数据收发的时候给一个下降沿,相当于是一个信号,告诉CPU我即将进行数据帧的发送

这个时候:数据帧开始发送过来 1 1 1 1 1 1 1 【校验位】

发送完毕之后要给单片机一个信号,告诉单片机这一个字符帧发送结束,也及时电平拉高
为下一个字符帧发送做准备

起始位:位于数据帧开头,占1位,始终为低电平,用于向接收设备表示发送端开始发送1帧数据

数据位:要传输的数据信息,可以是字符或数据,一般为5~8位,由低位到高位依次传送。

校验位:位于数据位之后,占1位,用于发送数据的校验,或传送多机串行通信的联络信息。

停止位:位于数据位末尾,占1位,始终为高电平,用于向接收端表示1帧数据已发送完毕。

注 : 数据发送的间隔是由我们发送的波特率一致的


单片机的串型口结构

有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H;接收器是双缓冲结构;发送时cpu是主动的,不会产生重叠错误.写SBUF时,操作的是发送缓冲器;读SBUF时,就是读接收缓冲器的内容.


7.0 USART发送数据工作原理

发送控制器:

在门电路和定时器T11的配合下,将SBUE发中的并行数据转为串行数据,并自动添加起始位、可编程位、停止位。

这一过程结束后自动使发送中断请求标志位TI置1表示数据发送完毕】,表明已将SBUE发中的数据输出到工XD引脚,即SBUE发为空。

接收控制器:

注:RI 标志位等于1表示数据接收完毕


8.0 串口控制器SCON

SCON: Serial Control Register,串行控制寄存器。主要用于设置串行通信的工作方式、接收和发送控制以及串口的状态标志等,地址:98H。

注:usart 中单片机置位之后不会自动清0,需要手动清0


9.0 电源控制寄存器:PCON

PCON为89C51系列单片机的电源控制寄存器,除用于设置单片机的工作模式:掉电模式、正常模式等,该寄存器中的SMOD位用于串口设置相关的工作,地址: 87H。

SMOD可使由T1产生的波特率时钟频率加倍


10.0 中断控制位 IE

中断允许控制寄存器IE,涉及到中断允许控制位ES

注:ES为串行中断允许控制位。设置ES=0时,将禁止串行中断;设置ES=1时,允许串行中断。


11.0 串口工作方式

工作方式 0

方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD (P3.0)引脚输入或输出,同步移位脉冲由TXD (P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc(晶振频率)/12。

方式0 发送数据【示意图如下所示】

方式0 接收数据【示意图如下所示】

方式 0 发送和接收电路【工作原理图如下所示】


工作方式 1

方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。

方式 1 输入

用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当Rl=0,且.SM2=O(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。


方式2 与 方式 3


12.0 串口波特率计算

串行通信的传输速率---波特率(比特率)

串口的波特率--表示每秒钟传输二进制数据的位数,单位位bps,即bit per second

如果每秒钟传输240个字符,而每个字符格式包含10位(1个起始位,一个停止位,8个数据位)这个时候的波特率为:

波特率     = 10位 * 240个/秒 = 2400bps

注: 串行通信的收发双方必须采用相同的波特率


串口通信技术---串口波特率专题

传输距离与传输速率的关系

 串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关,传输距离随传输速率的增加而减小。当比特率超过1000 bps 时,最大传输距离迅速下降,如9600 bps时最大距离下降到只有76m(约250英尺)

经验距离供参考:

  • TTL电平:1.5米之内
  • RS232电平:15米之内
  • 长距离传输可以使用RS485方式,可达1000米。

波特率的计算方式

注 : fosc ------------> 表示的是晶振的频率,SMOD 有0 和1 两个取值

通信时钟波特率原理

波特率计算实战

...

基于32单片机串口通信,过往文章

USART(串口通信协议)_通信协议usart-CSDN博客文章浏览阅读1.2k次,点赞18次,收藏23次。def:串口是一种应用广泛的通讯接口,串口的成本低,容易使用,通信线路简单,可以实现两个设备之间的相互通信【串口通信方式既可以同步通信也可以异步通信】def:单片机的串口可以使单片机与单片机,单片机与电脑,单片机与各式各样的模块进行通信,极大的拓展了单片机的应用范围,增强了单片机系统的硬件实力 注:注:注:图中的意思是可以有八位,第一个位是起始位,最后一位是截止位,中间的数据位数是数据位在没有进入起始位之间电平的极性【注:呈现出高电平特性】,在进入起始位后电平转换为低点平表示开始发送数据,数据呈现出8_通信协议usarthttps://blog.csdn.net/qq_45973003/article/details/138001414

注:参考郭天祥老师的51单片机教程进行撰写,仅用于学习参考

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

01——生产监控平台——WPF

生产监控平台—— 一、介绍 VS2022 .net core(net6版本) 1、文件夹:MVVM /静态资源(图片、字体等) 、用户空间、资源字典等。 2、图片资源库: https://www.iconfont.cn/ ; 1.资源字典Dictionary 1、…

验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口

验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口 本文提供一个基于OCR和机器学习的验证码识别接口,能够识别较复杂的中文、英文验证码,在OCR的基础上针对验证码进行算法优化。本接口是收费的(最低0.5分1次调用,试…

【最新鸿蒙应用开发】——总结ArkUI生命周期

鸿蒙ArkUI相关的生命周期都有哪些? 1. UIAbility生命周期 onCreate、onWindowStageCreate、onForeground、onBackground、onWindowStageDestroy、onDestroy。 onCreate:Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调…

python tushare股票量化数据处理:笔记

1、安装python和tushare及相关库 matplotlib pyplot pandas pandas_datareader >>> import matplotlib.pyplot as plt >>> import pandas as pd >>> import datetime as dt >>> import pandas_datareader.data as web 失败的尝试yf…

计蒜客:C10 第四部分:深度优先搜索基础 引爆炸弹

【C代码】 #include<bits/stdc.h> using namespace std; int n,m,ans0; char maze[501][501]; bool vis[501][501]; void dfs(int x,int y){vi…

解析中断引起的调度延迟问题

解析软中断引起的调度延迟问题 一、导言二、线程调度的原理三、如何定位中断导致的调度延迟方法一:使用内核 ftrace工具方法二:使用开源ko工具方法三:修改内核源码添加打印一、导言 硬件中断和软件中断都有可能导致调度延迟,但两者的影响方式略有不同。 硬件中断:当硬件设…

stm32MP135裸机编程:启动流程分析

0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf STM32MP135AD数据手册.pdf1 stm32MP135裸机启动流程分析 1.1 启动方式 stm32MP135支持8种启动方式&#xff1a; 注&#xff1a; UART和USB启动并不是指通过UART/USB加载程序&#xff0c;而是通过UA…

Spring Boot 项目启动时在 prepareContext 阶段做了哪些事?

概览 如果你对Spring Boot 启动流程还不甚了解&#xff0c;可阅读《Spring Boot 启动流程详解》这篇文章。如果你已了解&#xff0c;那就让我们直接看看prepareContext() 源码。 private void prepareContext(ConfigurableApplicationContext context, ConfigurableEnvironme…

2024.6.7

思维导图 代码 #include <iostream>using namespace std;//创建一个RMB类 class RMB {friend const RMB operator(const RMB &p1, const RMB &p2);friend const RMB operator-(const RMB &p1, const RMB &p2);friend bool operator>(const RMB &…

《Windows API每日一练》3.1 绘制文本

本节我们将讲述如何在窗口客户区绘制文本。如果在客户区绘制文本&#xff0c;需要将整个客户区或指定文本所在的矩形区域设置为无效区域&#xff0c;然后产生WM_PANIT消息&#xff0c;调用GDI函数绘制文本。此外&#xff0c;如果要绘制文本还需要使用设备环境上下文句柄&#x…

阿里发布最强开源大模型通义千问Qwen2,国产最好用的LLM

前言 近年来&#xff0c;大模型技术发展迅速&#xff0c;开源模型的出现为AI研究和应用带来了新的活力。在这一背景下&#xff0c;阿里云通义千问团队发布了全新升级的Qwen2系列开源模型&#xff0c;为国内外开发者提供了更强大的工具和更丰富的选择。 Huggingface模型下载&am…

springboot3 数据访问

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 数据访问 一、准备数据库表二、项目创建2.1、使用spring initializer 创建2.2、添加数据库配置2.3 mapper2.4 编写controller2.5 总结 三、其他数据源 一、准备数据库表 CRE…

追觅科技2025校园招聘测评已发(真题)

&#x1f4e3;追觅科技 2025校园招聘测评已发&#xff0c;正在申请的小伙伴看过来哦&#x1f440; ㊙本次校招面向全球于2023年7月 - 2025年12月期间毕业的同学&#xff0c;开放了四大类岗位&#xff1a;营销类、研发类、制作供应类、职能类~ ✅测评解析 &#x1f449; 测评自…

Kimichat使用案例012:用Kimichat拆解雷军在小米汽车SU7发布会上的演讲技巧

文章目录 一、介绍二、输入内容三、输出内容四、继续追问五、继续回答六、讲解对比七、对比回答相似之处:不同之处:八、职场人士如何借鉴九、借鉴内容一、介绍 小米SU7发布会可以说是非常成功。雷军的演讲技巧是发布会成功的重要因素之一,很值得借鉴学习。 可以借助Kimichat…

攻防世界---misc---gif

1、题目描述 2、下载附件&#xff0c;是一堆黑白图片&#xff0c;看到这里我一头雾水 3、看别人写的wp&#xff0c;说是白色表示0&#xff0c;黑色表示1。按照顺序写出来后得到 4、解码的时候&#xff0c;把逗号去掉。二进制转字符串得到&#xff1a; 5、 flag{FuN_giF}

「OC」UI练习(一)—— 登陆界面

「OC」登陆界面 明确要求 一个登陆界面的组成&#xff0c;用户名提示以及输入框&#xff0c;密码提示提示以及输入框&#xff0c;登陆按钮&#xff0c;以及注册按钮&#xff0c;根据以上要求我们将我们的组件设置为成员变量。 //viewControl.h #import <UIKit/UIKit.h>…

Kimichat使用案例013:用kimichat批量识别出图片版PDF文件中的文字内容

文章目录 一、介绍二、具体操作三、信息识别一、介绍 图片版的PDF文件,怎么才能借助AI工具来提取其中全部的文字内容呢? 第一步:将PDF文件转换成图片格式 具体方法参见文章: Kimichat使用案例011:用kimichat将PDF自动批量分割成多个图片(零代码编程) 第二步:识别图片中…

Go模板页面浏览器显示HTML源码问题

<!--* Title: This is a file for ……* Author: JackieZheng* Date: 2024-06-09 17:00:01* LastEditTime: 2024-06-09 17:01:12* LastEditors: Please set LastEditors* Description:* FilePath: \\GoCode\\templates\\index.html --> <!DOCTYPE html> <html …

【安装笔记-20240610-Linux-免费域名服务之eu.org】

安装笔记-系列文章目录 安装笔记-20240610-Linux-免费域名服务之eu.org 文章目录 安装笔记-系列文章目录安装笔记-20240610-Linux-免费域名服务之eu.org 前言一、软件介绍名称&#xff1a;eu.org主页官方介绍 二、安装步骤测试版本&#xff1a;openwrt-23.05.3-x86-64注册填写…

Java基础——多线程(一)

概念 线程和进程 进程&#xff1a;进程是程序的基本执行实体 线程&#xff1a;线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程的实际运作单位 简单理解&#xff1a;应用软件中互相独立&#xff0c;可以同时运行的功能。多线程可以…