串口概念

        在PC机的主板上,有一种类型的接口可能为我们所忽视,那就是RS-232C串行接口,在微软的Windows系统中称其为COM。我们可以通过设备管理器来查看COM的硬件参数设置,如图1。 

.

        迄今为止,几乎每一台PC都包含COM。本质而言,COM是PC为和外界通信所提供的一种串行数据传输的接口。作为一种物理通信的途径和设备,它和目前风靡的另一种串行接口――USB所提供的功能是一致的。不过RS-232C显然已经开始被后起之秀USB赶超,因为USB的传输速率已经远远超过了RS-232C。

     尽管如此,RS-232C仍然具有非常广泛的应用,在相对长的一段时间里,难以被USB等接口取代。RS-232C接口(又称EIA RS-232C),1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定,全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"。

       本文将对这一接口进行硬件原理的介绍,随后我们将逐章学习DOS平台的串口编程,及Windows平台下基于API、控件和第三方类的串口编程,最后本文将给出一个综合实例。

硬件原理

  众所周知,CPU与存储芯片和I/O芯片的通信是并行的(并行传输的最大位数依赖于CPU的字长、数据总线的宽度),一种叫做UART(通用异步收发器,Universal Asynchronous Receiver/Transmitter)的芯片提供了并行数据传输和RS-232C串行数据传输方式的转换。这样的设备通常有如图2所示的管脚分布,当其向外传输数据时,CPU并行的将数据写入这类芯片的寄存器,UART再将寄存器中的数据一位一位地移动并向外传输;当外界向其传输数据时,UART一位一位地接收数据,并将其移位组合为并行数据,CPU再并行地读取这些数据。实际上,由于UART芯片一般以TTL/CMOS电平工作,在UART连接接口之前,还要经过一个TTL/CMOS和RS-232C电平的转换。RS-232C规定了其标准的电气特性,逻辑1对应的电压必须在-5~-15V之间;逻辑0对应的的电压必须在+5~+15V之间。

图2 UART并/串转换  

      一个常见的TTL/CMOS和RS-232C电平转换芯片如图3。

 

图3 常见的TTL/CMOS和RS-232C电平转换芯片

     RS-232C通常以两类接插件与外界相连,分别称为DB9和DB25,如图4所示。

图4 DB9和DB25

 

表1 DB9和DB25引脚定义表

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


  RS-232C定义为数据通信设备(DCE)和数据终端设备(DTE)之间的互连,实现上,到现在为止,究竟一个设备属于DCE还是属于DTE已经没有明显的界限,PC即可作为DCE,又可作为DTE。两串口互连,连接方法主要有二:

  一种方法是,数据的发送和接收由软件控制,不进行硬件握手,其连接方法如图5(最常用DB9连接示意)和表2(DB9、DB25三线连接表),真正需要互相连接的是RXD、TXD和GND;

图5 无硬件握手时两串口连接

表2 DB9、DB25三线连接

9针-9针
5针-25针
2 9针-25针
2 3 3 2 2 2
3 2 2 3 3 3
5 5 7 7 5 7

  软件握手又称为XON/XOFF,通常以CTRL-S(0x13)和CTRL-Q(0x11)两个字符来实现流控制。前者用于请求对方暂停发送,后者用于清除暂停传送的请求,继续发送数据。

  另一种方法是,数据的发送和接收由硬件控制,进行硬件握手,其连接方法如图6(最常用DB9连接示意),需要连接的信号除RXD、TXD和GND外,还包括DTR、DSR、RTS和CTS。

  硬件握手依赖于RTS和CTS信号,当发送设备欲发送数据时,将RTS信号置为有效表示请求发送,接收设备准备好后,置CTS信号有效,接着发送设备通过信号线TXD开始发送串行数据。

  这里我们联想开来,RTS/CTS模式在许多领域里都出现过。回忆一下IEEE 802.11无线局域网协议标准,在其MAC协议中就使用了RTS/CTS,RTS/CTS抽象开来就是一种请求/应答。笔者曾经在拙作中多次以实例论证计算机领域里许多知识的相通性,这又是一个明证。

图6 有硬件握手时两串口连接

 实际上,目前我们经常使用的是方法一,即只连接RXD、TXD和GND,简单灵活。另外,串口之间互连还有诸多途径,如图7所示。


图7 其它互连方式



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
32位通信协议(I2C、SPI、串口)是用于在32位系统中进行数据通信的协议。下面是对每个协议的简要概念解释: 1. I2C(Inter-Integrated Circuit,又称IIC)是一种串行通信协议,用于在集成电路之间进行短距离通信。它使用两根线(SDA和SCL)来传输数据,并允许多个设备(从设备)与一个主设备(通常是微控制器或处理器)进行通信。I2C协议支持多主机和多从机配置,通过地址寻址来选择特定的设备进行通信。它适用于连接各种外设,如传感器、存储器、显示屏等。 2. SPI(Serial Peripheral Interface)是一种同步串行通信协议,用于在芯片之间进行高速数据传输。它使用四根线(MOSI、MISO、SCK和SS)进行全双工的通信。SPI通信中有一个主设备和一个或多个从设备。主设备控制通信的时序和数据传输,从设备响应主设备的指令并返回数据。SPI支持高速数据传输,适用于连接高速存储器、显示器、传感器等外围设备。 3. 串口(Serial Port)是一种基于串行通信的接口,用于在计算机系统和外部设备之间进行数据传输。串口通信使用一根数据线和一根时钟线进行数据传输。它通常以异步串行通信的形式存在,其中数据以字节的形式传输,并使用起始位、数据位、校验位和停止位进行帧同步。串口通信支持点对点连接,适用于连接各种外部设备,如调制解调器、传感器、控制器等。 这些通信协议在嵌入式系统和通信领域得到广泛应用,每种协议都有其适用的场景和特点。选择合适的通信协议取决于具体的应用需求和设备兼容性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值