串口硬件原理

更新时间:
2024-03-14
下载文档

串口硬件原理

串口通信原理

串行接口简称串口,也称串行通信接口,是采用串行通信方式的扩展接口。串口是计算机领域最简单的通信接口,也是使用最广泛的通信接口。

串行接口(Serial Interface)是指数据按位顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,但传送速度较慢,串行通讯的距离可以从几米到几千米。根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。单工是指在任何时刻都只能进行单向通信,如进程通信中的管道。半双工是指同一时刻只能进行单方向数据传输,如 I2C 总线,在同一时刻只能进行读或写操作。而全双工是指能够在任何时刻都可以进行双向通信,如串口。

串口通信参数

串口通信的参数有波特率、数据位、停止位和奇偶校验位等。对于两个进行通信的端口,这些参数必须匹配。

  1. 波特率:用于衡量通信速度的参数,具体表示每秒钟传送的 bit 的个数。当提到时钟周期时,即指波特率。在通信过程中传输距离和波特率成反比。
  2. 数据位:用于衡量通信中实际数据位的参数,数据位的标准值有 5/6/7/8 位。数据位的具体设置取决于传送的信息类型。例如,对于标准的 ASCII 码是 0~127,因此数据位可设为 7 位。扩展的 ASCII 码是 0~255,则数据位设置为 8 位。
  3. 停止位:用于表示单个包的最后一位,典型的值有 1,1.5 和 2 位。停止位不仅表示传输的结束,而且提供计算机校正时钟机会。因此停止位的位数越多,时钟同步的容忍程度越大,同时数据传输率也越慢。
  4. 校验位:在串口通信中一种简单的检错方式。有四种检错方式:奇/偶校验以及高/低校验。对于奇和偶校验的情况,串口会对校验位进行设置,用该值确保传输的数据有奇数个或者偶数个逻辑高位。对于高/低校验位来说,高位和低位不是用来进行数据的检查,而是简单置位逻辑高或者逻辑低进行校验。

串口的分类

串行接口按电气标准及协议来分包括 RS-232-C、RS-422、RS-485 等。RS-232-C、RS-422 与 RS-485 标准只对接口的电气特性做出规定,对软件编程基本没有影响。

针对 RS-232-C 标准,目前较为常用的串口有 9 针串口(DB9)和 25 针串口(DB25)。通信距离较近时(<12m),可以用电缆线直接连接标准 RS-232-C 端口(RS-422,RS-485 较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连。其他线用于握手,可根据实际使用条件选用。

RS-232-C 的 9 针串口引脚定义如下表所示。

引脚号功能说明缩写
1数据载波检测DCD
2接收数据RXD
3发送数据TXD
4数据终端准备DTR
5信号地GND
6数据设备准备好DSR
7请求发送RTS
8清除发送CTS
9振铃指示BELL

RS-232-C 的 25 针串口引脚定义如下表所示:

引脚号功能说明缩写
8数据载波检测DCD
3接收数据RXD
2发送数据TXD
20数据终端准备DTR
7信号地GND
6数据设备准备好DSR
4请求发送RTS
5清除发送CTS
22振铃指示BELL

串行通信又可分为异步通信与同步通信两类。

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是设备间进行异步通信的关键模块。其作用如下:

  1. 处理数据总路线和串行口之间的串/并、并/串转换;
  2. 通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx 和 Tx)就可以完成通信过程;
  3. 采用异步方式,数据收发完毕后,可通过中断或置位标志位的方式通知微控制器进行处理,大大提高微控制器的工作效率。

相比于异步通信,同步通信需要额外提供时钟线,以保证数据传输时,发送方和接收方能够保持完全的同步,因此,要求接收和发送设备必须使用同一时钟信号。

串口通信工作方式

由于 CPU 与串口缓存区之间数据是按并行方式传输,而串口 FIFO 与外设之间按串行方式传输,因此在串行接口模块中,必须要有“Receive Shifter”(串→并)和“Transmit Shifter”(并→串)。

在数据输入过程中,数据按位从外设进入接口的“Receive Shifter”,当“Receive Shifter”中已接收完 1 个字符的全部位后,数据就从“Receive Shifter”进入“数据输入寄存器”。CPU 从“数据输入寄存器”中读取接收到的字符(并行读取,即 D7~D0 同时被读至累加器中)。“Receive Shifter”的移位速度由“接收时钟”确定。

在数据输出过程中,CPU 把要输出的字符(并行地)送入“数据输出寄存器”,“数据输出寄存器”的内容传输到“Transmit Shifter”,然后由“Transmit Shifter”移位,把数据按位地送到外设。“Transmit Shifter”的移位速度由“发送时钟”确定,因此,在两个设备之间进行串口通信时,必须将两个设备的波特率设置一致才能正常通信。

接口中的“控制寄存器”用来容纳 CPU 送给此接口的各种控制信息,这些控制信息决定接口的工作方式。

“状态寄存器”的各位称为“状态位”,每一个状态位都可以用来指示数据传输过程中的状态或某种错误。例如,状态寄存器的 D5 位为“1”表示“数据输出寄存器”空,D0 位表示“数据输入寄存器满”,D2 位表示“奇偶检验错”等。

能够完成上述“串/并”转换功能的电路,通常称为“通用异步收发器”( UART:Universal Asynchronous Receiver and Transmitter ),典型的芯片有:Intel 8250/8251,16c550。

文档内容是否对您有所帮助?
有帮助
没帮助