本文主要为了读者能通俗易懂得了解串口通信知识,相信读完本文你能对串口通信有个逻辑清晰、内容全面的了解。
一,数据通信方式
1,串行与并行
串行:按数据位形式一位一位传输
并行:可同一时刻输出多个数据位
2,单工、半双工、全双工
单工:通信双方单向传输数据
半双工:通信双方交替传输数据
全双工:通信双方可以同时向对方传输数据
3,同步与异步
同步:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。可以简单理解为双方在打乒乓球。
异步:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。可以简单理解为双方在对骂,只需在意自己的输出就行
两者的区别:同步通信需要时钟信号进行数据同步,而异步通信不需要。
二,串口通信协议
通讯协议:分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输(通俗一点就是硬件部分)。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准(软件)。
在学习串口通信协议之前,先简单了解什么是STM32串口
USART-通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART(Universal Asynchronous Receiver and Transmitter),它是在 USART 基础上裁剪掉了同步通信功能(时钟同步),只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。
1,物理层(硬件)
1)RS232:一种串行数据传输形式。最经典的就是9针孔的DB9电缆,相信大家都有见过
2)USB转串口:就是一头USB一头DB9,为了兼容电脑等的USB接口而设计
3)原生的串口到串口:可以简单理解为两个通信设备不需要接线直接连接在一起。
接着了解了上面三个常见的通信协议,那么有一个对照学习中非常重要的问题,就是他们的区别是什么?
这就需要引入电平的概念了,我们所了解的高电平和低电平本质上是人为设定的,比如我现在规定0~3V为低电平,3V以上为高电平。当然,任何人都可以规定电平对应的电压范围,常见的规定标准有很多,在这里我们介绍两个:TTL通信标准和RS232通信标准
那么以上三种通讯协议的区别就是通讯双方之间使用的是什么电平标准
(注:很多单片机内部例如我们所用的STM32,以及一些传感器一般都是TTL电平。
RS232:双方之间通过DB9连接,使用RS232标准的电平
USB转串口:通讯双方,一头接USB口一头接DB9那样的接口,使用USB电平(这之中牵扯使用电平转换芯片将TTL电平转换为USB电平,这个知道就行,暂时没必要深入学)
原生的串口到串口:通讯双方直接使用TTL电平通讯
2,协议层(软件)
串口通讯的协议层中,规定了数据包的内容:起始位,主体数据位,校验位,停止位
通讯双方的数据包格式要一致才能正常收发数据(意思就是一样格式的起始位 数据 校验位 停止位)。
1)通讯的起始和停止信号
2)有效数据
3)数据校验
这不过多阐述了,就是字面意思,跟你想的意思一样,了解即可