串口通信协议
基本概念
通信协议,实际就是通信双方约定的一种通信方式;跟人与人之间的通信类似,比如要跟一个陌生人交流,得提前确定用什么语言(如汉语、英语)。机器之间的通信没有人之间的通信那么简单,需要协商好如何进行数据传输才能最大限度保证通信的质量,比如采取什么通信方式(同步还是异步,串行还是并行,单工还是双工或半双工),双方的通信速率怎么样(不能发的快,而接收处理得慢)等等。
在各种通信协议中,串口通讯(Serial Communication)是一种设备间常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式。
对于通讯协议,我们可以用分层的方式来理解,最基本的是把它分为物理层和协议层。
- 物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。
- 协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。
物理层
串口通讯的物理层有很多标准及变种,像TTL、RS-232、RS-485电平标准;
电平标准 | 逻辑电平 |
---|---|
TTL | 逻辑 1:+5V ; 逻辑 0 :0V |
RS-232 | 逻辑 1:-15V ~ -3V; 逻辑 0:+3V ~ +15V |
常见的电子电路中常使用TTL的电平标准,理想状态下,使用5V表示二进制逻辑1,使用0V表示逻辑0;
而为了增加串口通讯的远距离传输及抗干扰能力,它使用-15V表示逻辑1,+15V表示逻辑0。
我们主要讲解RS-232标准,RS-232标准主要规定了信号的用途、通讯接口以及信号的电平标准
【控制器】一般使用TTL电平标准,所以常常会使用 MA3232 芯片对TTL及RS-232电平的信号进行互相转换。
RS-232通常使用DB9公头标准接法,两个通讯设备之间的收发信号(RXD与TXD)应交叉相连。
协议层
当设备通过线连接起来后,双方就可以建立连接了。但数据包的格式应该怎么样,应该如何发送,双方需要“协商”一番。
在串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位、停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据。如图:
协议中需要规定的几个方面有:
-
波特率
这里主要讲解的是串口异步通讯,异步通讯中由于没有时钟信号(如前面讲解的DB9接口中是没有时钟信号的),所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码,图 206中用虚线分开的每一格就是代表一个码元。常见的波特率为4800、9600、115200等。 -
起始和停止信号
串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑0的数据位表示,而数据包的停止信号可由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可。 -
有效数据
在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为5、6、7或8位长。 -
校验位
数据包中通过使用校验位用于接收器在收到数据后进行判断是否发生传输错误。常用的校验方式有:奇偶校验、CRC校验等。
本文来自博客园,作者:aJream,转载请记得标明出处:https://www.cnblogs.com/ajream/articles/16055513.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人