你真的了解串口 (Serial)吗?

一、串口的定义

串口,全称串行通信接口或串行通讯接口,是一种常用于电子设备间通讯的全双工扩展接口;

串行通信,串口通讯的技术基础,指一位一位地按顺序传送数据。其特点是线路简单,只需一对传输线,即可实现双向通信,大大降低成本。适用于远距离通信,但速度较慢;

串行收发模块,串口的现实载体,负责实现串行通讯,被集成到各种计算机设备中。其中,应用最广的是 USART(Universal Synchronous/Asynchronous Receiver/Transmitter) —— 通用同/异步串行接收/发送器。

二、串口的硬件特性

串口的硬件特性,规定了数据通讯时的机械、电子特性,以确保数据在物理媒介上的传输。

由于串口的硬件特性有很多标准及变种,限于篇幅,本文只记录最常见的 RS-232 标准

RS-232串口设备,通讯结构如下:

在这里插入图片描述
① 通讯设备的“DB9 接口”,由串口线连接,按 RS-232 约定的格式,进行数据传输;
② 由于 RS-232 电平标准的信号不能直接被控制器识别,所以会先经过“电平转换芯片”,转换成“TTL 标准”,才能实现通讯。单片机开发、调试中常用到的“串口转USB模块”,实现的就是这类电平标准转换的作用。

在这里插入图片描述

2.1 电平标准

由上,RS-232串口设备中,存在两种电平标准 —— RS-232标准、TTL标准。具体细节如下:

电平标准 逻辑 0 电平 逻辑 1 电平 生效阶段
RS-232 +3V ~ +15V -15V ~ -3V 通讯过程中
TTL 0 ~ +0.5V +2.4V - +5V 控制器收、发过程中

可见,RS-232标准的各逻辑对应电平,相对TTL标准都要大得多,这是为了增强串口通讯的远距离传输及抗干扰能力。

2.2 信号线

一般来说,进行信号传输的设备,分为数据终端设备 DTE(计算机、路由)和数据通讯设备 DCE(调制调解器)。

旧式的RS-232串口线,以针式引出信号线的称为公头,以孔式引出信号线的称为母头。两者均由九根信号线组成,如下图:

在这里插入图片描述
各编号线名称以及相应的说明,如下表所示:

序号 名称 符号 数据方向 说明
1 载波检测 DCD DTE → DCE Data Carrier Detect,DTE 接收载波信号后的应答
2 接收数据 RXD DCE → DTE Receive Data,接收信号,即输入数据。通讯设备的 RXD、TXD 应交叉相连
3 发送数据 TXD DTE → DCE Transmit Data,发送信号,即输出数据。通讯设备的 RXD、TXD 应交叉相连
4 数据终端就绪 DTR DTE → DCE Data Terminal Ready,DTE 告知 DCE:本机已准备好
5 信号地 GND - 地线,通讯设备之间必须共地
6 数据设备就绪 DSR DCE → DTE Data Set Ready,DCE 告知 DTE:已准备好发送数据
7 请求发送 RTS DTE → DCE Request To Send,DTE 请求 DCE 发送数据,用于流控
8 允许发送 CTS DCE → DTE Clear To Send,DCE 回应 DTE 的 RTS,用于流控
9 响铃指示 RI DCE → DTE Ring Indicator,响铃指示,表示 DCE 端与线路已接通

其中,RTS、CTS、DSR、DTR 及 DCD 信号,使用逻辑 1 表示有效,逻辑 0 为信号无效。(例如,当计算机端控制 DTR 信号线表示为逻辑 1 时,它是为了告知远端的调制调解器,本机已准备好接收数据, 0 则表示还没准备就绪。)

在目前的其它工业控制使用的串口通讯中,一般只使用 RXD、TXD 以及 GND 三根信号线,直接传输数据信号,而 RTS、CTS、DSR、DTR 及 DCD,都被裁剪掉了。

三、串口的软件协议

在RS-232的通讯中,定义了信号的软件协议标准。双方必须按照约定,以一致的通讯速率、包格式进行交互,否则将会出现数据异常。

在这里插入图片描述

3.1 波特率

每秒钟传送的码元个数(注意: 不是bit位个数),严格来说,波特率描述的是单位时间内调制(数模转换)信号的能力,而不是传输速率。

拓展:

  1. 码元,是指信息传输通道中,携带数据信息的模拟信号单元。通过不同的调制(数模转换)方式,一个码元符号可能负载多个bit位信息,所以不能说“一个码元等于一个bit”。当采用“两相调制”处理时,比特率等于波特率;
  2. 串口的传输速率,一般由比特率(单位时间内传输的二进制代码的有效位(bit)数) 来进行衡量。

3.2 起始位与停止位

每个通讯的串口数据包,都是从起始位开始,结束于停止位。起始位是一个逻辑0的数据位;而停止位可由0.5、1、1.5 或 2 个逻辑1的数据位表示,只要双方约定一致即可。

3.3 有效数据

紧跟着起始位之后,便是串口数据包的主体内容,也称为有效数据,有效数据的长度可以是5、6、7、8个数据位,通讯开始前需要双方约定。

3.4 校验位

校验位是一个可选的数据位,紧跟在有效数据之后,用来校验,以防止因外部干扰而导致的传输偏差。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity)

  1. 奇校验:令传输的数据(有效数据和校验位)中1的个数为奇数(例如:某个串口数据包中,有效数据共有偶数个位为1,则校验位取“1”,使整体1的个数为奇数);
  2. 偶校验:与奇校验相反;
  3. 0校验:无论主体数据是什么,校验位保持为0;
  4. 1校验:无论主体数据是什么,校验位保持为1。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章