嵌入式学习笔记(24)串口通信的基本概念

嵌入式学习笔记(24)串口通信的基本概念_第1张图片

  • 串口:universal asynchronous reciver and transmitter,通用异步收发器

串口通信的特点:异步、电平信号、串行

(1)异步:串口通信的发送方和接收方之间没有统一的时钟信号。

(2)电平信号:串口通信出现的时间比较早,速率较低,传输的距离较近,所以干扰还不太明显,因此当时使用了电平信号传输。后期出现的传输协议都改成差分信号传输了。

(3)串行通信:串口通信每次同时只能传输1个二进制位。

电平信号中的RS232电平和TTL电平

(1)电平信号是用信号线减去参考线电平得到的电压差,这个电压差决定了传输值是1还是0。

(2)在电平信号时多少V代表1,多少V代表0不是固定的,取决于电平标准。譬如RS232电平中-3V~-15V表示1,+3V~+15V表示0;TTL电平则是+5V表示1,0V表示0。

(3)RS232还是TTL都是为了在传输线上表示1和0。区别在于适用的环境和条件不同。RS232电平电压定义范围比较大,适合抗干扰大,距离远的情况;TTL电平电压定义范围比较小,适合距离近且干扰小的情况。

(4)工业上用串口时都用RS232,传输距离小于15米,TTL电平一般用在电路板内部两个芯片之间。

(5)把TTL电平和RS232电平接混是不可以的

波特率

(1)波特率(bandrate),指的是串口通信的速率,即串口通信时每秒可以传输多少个二进制位。(譬如每秒钟可以传输9600个二进制位(传输一个二进制位需要的时间是1/9600秒,也就是104us),波特率就是9600。)单位是bps。

(2)串口通信的波特率不能随意设定,而应该在一些值中去选择。一般最常见的波特率是9600或者115200(低端单片机如51常用9600,高端单片机和嵌入式SoC一般用115200).为什么波特率不可以随便指定?主要是因为:第一,通信双方必须事先设定相同的波特率这样才能成功通信,如果发送方和接收方按照不同的波特率通信则根本收不到,因此波特率最好是大家熟知的而不是随意指定的。第二,常用的波特率经过长久发展,就形成了共识,大家常用就是9600或者115200。

起始位、数据位、奇偶校验位、停止位

(1)串口通信时,收发是一个周期一个周期进行的,每周期传输n个二进制位。这一个周期就叫做一个通信单元,一个通信单元由:起始位+数据位+奇偶校验位+停止位组成的。

(2)起始位是发送方开始发送一个通信单元的标志;数据位是一个通信单元中发送的有效信息;奇偶校验位是用来校验数据位的,以防止数据位出错;停止位是发送方用来表示本通信单元结束的标志。

(3)起始位的定义是串口通信标准事先指定的,是由通信线上的电平变化来反应的。

(4)数据位是本次通信真正要发送的有效数据,串口通信一次发送多少位有效数据是可以设定的(一般可选的有6、7、8、9,99%情况下我们都是选择8位数据位。因为我们一般通过串口发送的文字信息都是ASCII码编码的,而ASCII码中一个字符刚好编码为8位。)

(5)奇偶校验位是用来给数据位进行奇偶校验的(把待校验的有效数据逐个位的加起来,总和为奇数奇偶校验位就为1,总和为偶数奇偶校验位就为0)的,可以在一定程度上防止位反转。

(6)停止位的定义是串口通信标准事先指定的,是由通信线上的电平变化来反映的。常见的有1位停止位,1.5位停止位,2位停止位等。99%情况下都是用1位停止位。

总结:串口通信时因为是异步通信,所以通信双方必须事先约定好通信参数,这些通信参数包括:波特率、数据位、奇偶校验位、停止位(串口通信中起始位定义是唯一的,所以一般不用选择)

单工通信和双工通信

如果只能A发B收则单工,A发B收或者B发A收(两个方向不能同时)叫半双工,A发B收同时B发A收叫全双工。

嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击这里扫码进群领资料,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!

你可能感兴趣的:(嵌入式学习笔记,嵌入式,编程,嵌入式实时数据库,学习,笔记,嵌入式硬件,51单片机)