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

ops/2024/10/19 7:55:09/

🌈个人主页: 羽晨同学

💫个人格言:“成为自己未来的主人~”  

并行通信和串行通信

 并行方式

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

并行通信特点:传送速度快,但因需要多根传输线,曾经在近距离、高速率通信中使用,但是这个东西后来不用了。

串行方式

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

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

 异步通信和同步通信

异步通信

异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程,为使双方的收发协调,要求发送和接收设备的时钟尽可能一致,我们要学习的单片机的串口通信就是异步通信方式

异步通信是以字符为单位进行传输,字符和字符之间的间隙是任意的,但是每个字符的各位之间的间隙是相同的,字符之间是异步的,但是字符之内每个位之间是同步的

 异步通信的特点,不会要求收发双方的时钟的严格一致,实现容易,设备开销较小,但是每个字符需要加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输入

好了,本次的文章就到这里了,我们下次再见。 


http://www.ppmy.cn/ops/119898.html

相关文章

陶瓷4D打印有挑战,水凝胶助力新突破,复杂结构轻松造

大家好!今天要和大家聊聊一项超酷的技术突破——《Direct 4D printing of ceramics driven by hydrogel dehydration》发表于《Nature Communications》。我们都知道4D打印很神奇,能让物体随环境变化而改变形状。但陶瓷因为太脆太硬,4D打印一…

某大型公园定岗定编项目成功案例纪实

某大型公园定岗定编项目成功案例纪实 ——优化人力配置,实施灵活化人员调整策略,解决忙闲不均问题 【客户行业】文旅行业;事业单位;公园 【问题类型】定岗定编 【客户背景】 某大型公园随着上级政策的改变,公园取…

(详细、重点)iOS开发与前端开发的相同点和不同点 20个

iOS开发和前端开发都是在软件开发领域中非常重要的技术方向,它们有一些相似之处,但也有很多不同之处。以下是对它们的相同点和不同点的详细解释: 相同点 编程基础: 两者都需要扎实的编程基础,理解数据结构、算法、面向…

在PC端连接苹果手机(iPhone)时,即使已经开启了开发者模式(开发者权限),但仍然无法成功连接,是什么原因?

目录 1. 缺少信任设备授权 2. USB线或端口问题 3. 没有安装正确的驱动程序 4. Apple Mobile Device 服务未启动(适用于 Windows) 5. 开发者选项中的设置问题 6. 防火墙或杀毒软件阻止 7. USB 限制功能已开启 8. 软件版本不兼容 9. iPhone处于恢…

合并代码讲解

第一步,为了定义链表的结构,需要创建一个节点结构体。 typedef struct lnode {int data; // 节点存储的数据struct lnode *next; // 指向下一个节点的指针 } lnode, *linklist;解释: 此结构体lnode代表链表的节点,包含一个整数型数据data和一…

Vue2配置环境变量的注意事项

在实际开发中时常会遇到需要开发环境与生产环境中一些参数的替换,为了方便线上线下环境变量切换可以利用node中的process进行环境变量管理 实现步骤如下: 1.在 根目录 新增环境文件 .env.development 和 .env.production 注意文件名称保持一致( 需要强调的是文件中的变量名切…

k8s 分布式存储平台 -- Longhorn

文章目录 一、什么是 Longhorn二、架构设计1、工作原理2、工作流程3、基于微服务设计的优势 三、安装1、安装要求2、使用 Longhorn 命令行工具(验证方式一)3、使用环境检查脚本(验证方式之二)3.1、安装 jq3.2、运行脚本 4、安装 o…

UE4/UE5开发资源

开发Unreal Engine 4(UE4)和 Unreal Engine 5(UE5) 的资源非常丰富,既有官方资源,也有社区提供的资源。以下是一些关键资源,帮助你更好地进行UE4/UE5开发: 官方资源 Unreal Engine …