串口通讯(上)——基础概念

 

通讯协议

通讯协议分为物理层和协议层。

  • 物理层:规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输;
  • 协议层:规定通讯逻辑,统一收发双方的数据打包、解包标准。

串口通讯物理层之RS-232

RS-232标准主要规定了信号用途、通讯接口和信号电平标准。如图9-1为常见的设备间串口通讯结构图。

图9-1

如上图所示,每个设备都有一个DB9接口,通过DB9接口连接RS-232标准的串口线进行数据传输。由于通过RS-232标准传输的电平信号到达设备后,不能直接被识别,所以会通过电平转换芯片(例如MAX3232、SP3232芯片等)转换成能识别的TTL电平信号,实现通讯。

相互通讯的两个设备间,一个设备发送数据,一个设备接收数据。一般情况下,发送数据的设备称为DTE,如计算机;接收数据的设备称为DCE,如调制解调器。

这里需要介绍下DB9接口。如图9-2为DB9标准的公头、母头接法(接线口以针式引出信号线为公头,以孔式引出信号线为母头)。

图9-2

如上图,以公头为例,有9条信号线,其中,

  • RXD:用于接收DCE发来的数据信号,即输入;
  • TXD:用于发送DTE的信号,即输出。公头和母头的RXD和TXD应交叉连接;
  • GND:用于平衡设备双方的地电位,即共地。

其他信号线如DCD、DTR、DSR、RTS、CTS等,使用逻辑1表示有效信号,逻辑0表示无效信号。如DTE端的RTS信号线置1时,是为了告知DCE设备本机已准备好接收数据,而置0则表示未准备就绪。

串口通讯协议层

协议层规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据。如图9-3为数据包的基本组成。

图9-3

波特率

串口异步通讯中由于没有时钟信号,所以通讯双方需要约定好波特率,即每个码元的长度,以便对信号进行解码。常见的波特率有4800、9600、115200等。


起始位、停止位

数据包从起始位开始,到停止位结束。起始信号用逻辑0的数据位表示,停止信号由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可。

有效数据

起始位之后便是传输的主体数据内容了,也称为有效数据,其长度一般被约定为5、6、7或8位长。

数据校验

由于在通讯过程中易受到外部干扰导致传输数据出现偏差,所以在有效数据之后加上校验位解决。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)及无校验(noparity)。

奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个8位长的有效数据为:01101001,此时共有4个“1”,为达到奇校验效果,校验位为“1”,最后传输的是8位有效数据加1位校验位,共9位。

而偶校验刚好相反,要求有效数据和校验位的“1”数量为偶数,则此时为达到偶校验效果,校验位为“0”。

而0校验则无论有效数据中是什么数据内容,校验位总是为“0”,1校验校验位总是为“1”。

原文地址:https://www.cnblogs.com/fire909090/p/8875922.html