| 串口通信的定义
串口通信(Serial Communication)是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。在这种通信方式下,数据以二进制的形式一位一位地依次传输,只需一根或两根数据线就可以实现单向或双向的数据传输。与并行通信相比,串口通信使用的数据线少,在远距离通信中可以节约通信成本,但传输速度相对较低。
| 串口通信的原理
基本的数据传输过程:
l起始位:标志着一次数据传输的开始。当发送方要发送数据时,会先将数据线上的电平从高电平拉低到低电平,并保持一段时间,这个低电平状态就是起始位。接收方检测到这个从高到低的电平变化,就知道数据传输开始了。
l数据位:紧跟在起始位之后,是通信中的真正有效信息。数据位的位数可以根据通信双方的约定来设置,常见的有 5 位、6 位、7 位或 8 位等。比如在标准的 ASCII 码通信中,通常使用 7 位数据位来表示一个字符;而在扩展的 ASCII 码或其他一些数据传输场景中,可能会使用 8 位数据位。数据传输时先传送字符的低位,后传送字符的高位。
l校验位:用于检验数据传输过程中是否出现错误。常见的校验方式有奇校验、偶校验、无校验等。如果是奇校验,发送方会根据数据位中逻辑 “1” 的个数来决定校验位的值,使得数据位和校验位中逻辑 “1” 的总数为奇数;偶校验则是使逻辑 “1” 的总数为偶数。接收方在接收到数据后,会按照相同的校验方式对数据进行校验,如果校验结果不正确,就说明数据传输过程中出现了错误。
l停止位:标志着一次数据传输的结束。停止位一定是逻辑 “1” 电平,其位数可以是 1 位、1.5 位或 2 位等,通常由软件设定。停止位的作用是给接收方一个时间间隔,以便接收方准备接收下一个数据。
l空闲位:在一次数据传输结束后,数据线上会保持高电平,即处于空闲状态,直到下一次数据传输开始。空闲位的存在可以让发送方和接收方有时间进行准备和同步。
数据传输的电气特性和信号转换:
l电平标准:不同的串口通信标准有不同的电平标准。例如,RS-232 标准的电平是负逻辑,“1” 的电平范围是 -3V 至 -15V,“0” 的电平范围是 +3V 至 +15V;而 TTL 电平标准中,“0” 的输出电平要求小于 0.4V,“1” 的输出电平要求大于 2.4V。
l信号转换:由于计算机或外设内部使用的电平标准可能与串口通信的电平标准不一致,所以需要进行信号转换。例如,当计算机与使用 RS-232 标准的设备进行通信时,需要使用电平转换芯片将计算机的 TTL 电平转换为 RS-232 电平,以便在串口通信线上进行传输。
波特率的设置和同步:
l波特率:波特率是衡量符号传输速率的参数,指的是信号被调制以后在单位时间内的变化次数,即单位时间内载波参数变化的次数。例如,波特率为 9600bps,表示每秒钟传输 9600 位数据。通信双方必须设置相同的波特率,才能保证数据的正确传输。如果波特率不一致,接收方接收到的数据就会出现错误或丢失。
l同步方式:串口通信分为同步通信和异步通信。在异步通信中,发送方和接收方各自有自己的时钟,发送方在发送数据时会先发送起始位,接收方根据起始位来同步自己的时钟,然后按照约定的波特率接收数据。在同步通信中,发送方和接收方使用同一个时钟源,数据传输的同步性更好,但需要额外的线路来传输时钟信号。