今天分享 USART 设计前的基础知识 我们先来了解一下有关通信的基本概念: 通信:两个设备之间进行数据交换时,称这个过程为两个设备间的通信 并行通信:设备之间的数据是以一位一位的二进制数进行传输的,并行通信的方 式就是传输的二进制数同时从主机发送,然后同时到达从机,其优点就是传输速 度快、效率高,但当需要传输很多位数据时,就需要很多根数据线,造成成本偏 高,还有就是其传输距离不远 早期的打印机就使用并口来传输数据。下图为并口数据线: ![]() 串行通信:两设备之间的数据是一位一位的从主机发送,然后一位一位的到达从 机,数据传送可在一根线上进行传输,其传输速度相对并行通信较慢,但其优点 是成本低,可以远距离传输。下图为 9 针串口数据线 ![]() 串行通信的分类:当在串行通信方式下,发送数据是在时钟的控制下进行的,当 主机和从机都用同一时钟(时钟的相位和幅值均相同)来进行数据传输时,称这种 方式为同步串行通信。当主机和从机不使用同一时钟来进行数据传输时,称这种 方式为异步串行通信方式 主机:两个设备进行通信时,对另一个设备发送数据的设备称为主机 从机:两个设备进行通信时,接收数据的设备称为从机 我们已经知道并行通信方式虽然传输速度快,但传输数据位数多时,其所需要的 数据线就很多,成本偏高,传输距离远,然而串行通信因其成本低,需要数据线 少,传输距离远,而且随着技术的发展串行通信的数据传输速度也变得很快了, 有些甚至比并行通信传输速度更快了,所以基于这些优点,串行通信的方式被广 泛的使用。下面我们重点介绍串行通信 串行通信 串行通信因其优势突出,被广泛运用,因此产生了一些串行通信的接口标准,如 RS-232 标准、RS-485 标准、RS-422 标准等,各个标准在使用过程中又衍生出了 一些子标准,如 RS-232 标准下又有 RS-232C 类型等,因其各个标准特点不同, 所以使用场合也就不同了,但相对于其他标准,RS-232 使用较广泛(如大家的台 式电脑主机后都有一个 RS-232 接口),所以下面我们就以 RS-232 为例给大家进 行介绍 RS-232 是串行通信的一种标准,在 RS-232 标准中主要规定了其通信接口、信号 的电平标准、信号的用途。下图描述了基于 RS-232 标准的两设备之间的通信原 理图: ![]() 从上图我们可以了解两个串口设备 1 和设备 2 之间使用 RS-232 标准进行通信的 原理,因为控制器 1/2 使用 TTL 电平标准(正逻辑标准,逻辑“0”为 0V,逻辑 “1”为 5V),但 RS-232 标准使用的是电平标准是负逻辑标准(逻辑“0”为+3 至+15V,逻辑“1”为-3 至-15V),所以当使用 RS-232 标准对这两个串行设备进 行数据传输时,就需要在 RS-232 接口与控制器之间接一个电平转换芯片,两设 备之间通过 RS-232 接口线连接(有 25 针或 9 针接口),这样才能确保两设备正常 通信。下面我们分别介绍一下 RS-232 标准的接口标准和电平标准 1. 接口标准 RS-232 标准有两种接口定义,一种为 DB25 接口,一种为 DB9 接口,DB25 接口现已很少使用,大多数都使用 DB9 接口,下面我们对这两种接口进行介绍: DB25 接口 ![]() 接口的各个引脚含义如上图所示,其中第2脚和第3脚分别为数据发送和接收脚, 第 7 脚为信号地,其他脚为一些状态标志引脚,在使用时,将接口线对应接在两 个设备上,即可正常通信 DB9 接口 ![]() 从上图可以看出,DB9 接口对 DB25 接口进行了简化,同样也能传输数据,且 DB9 被广泛使用,下面我们对 DB9 的各个引脚功能进行简要说明 第一脚(DCD): 该引脚为接收线路信号检测,该信号是从发送设备->接收设备,用于告知接收设 备是否收到载波信号 第二脚(RXD): 数据接收引脚,用于接收数据 第三脚(TXD): 数据发送引脚,用于发送数据 第四脚(DTR): 数据终端准备就绪引脚,用于告知接收设备,发送设备是否准备就绪 第五脚(SG): 信号地,用于给两个设备共地,因为两个设备之间地电位可能不一致,不一致就 会影响数据收发的电平信号,所以必须给两设备进行共地,保证数据的正确传输 第六脚(DSR): 数据准备好引脚,该信号用于接收设备告知发送设备数据发送准备就绪,随时可 以发送数据 第七脚(RTS): 请求发送引脚,该信号用于发送设备请求向接收设备发送数据 第八脚(CTS): 清除发送引脚,该信号用于接收设备告知发送设备是否可以发送数据 第九脚(RT): 振铃提示,表示接收端与线路已经接通 在两个设备通信时,发送设备的 TXD 应该接接收设备的 RXD,发送设备的 RXD 应 该接接收设备的 TXD,SG 接 SG,在现在的串口通信中,一般就使用这三根线来 传输数据信号,具体接线图如下所示: ![]() 按上图对应接线正确,两设备就可正常通信 |