为什么是串行接口?
使用串行接口有许多不同的原因。常见的问题之一是在开发期间和/或在现场需要与 PC 连接。大多数(如果不是全部)PC 都具有某种可用于连接外围设备的串行总线接口。对于必须与通用计算机连接的嵌入式系统,串行接口通常比 ISA 或 PCI 扩展总线更容易使用。
串行通信的一个优点是引脚数少。串行通信只需一个 I/O 引脚即可执行,而并行通信则需要八个或更多引脚。许多常见的嵌入式系统外设,例如模数转换器、数模转换器、LCD 和温度传感器,都支持串行接口。
如果您愿意的话,串行总线还可以提供处理器间通信——网络。这使得通常需要较大处理器的大型任务可以通过多个廉价的较小处理器来处理。串行接口允许处理器进行通信,而无需共享内存和信号量以及它们可能产生的问题。
这并不是说并行总线没有用处。对于操作读取、地址和数据总线以及其他微程序控制,并行总??线始终是明显的赢家。“内存映射”外设是一种常用于具有地址和数据总线的系统的技术。这种趋势允许并行访问片外外设。然而,对于许多没有可用于设计的外部地址/数据总线的 8 位微控制器(更不用说 8 引脚),存储器映射不是一种选择。
串行通信术语
在我们讨论各个接口的细节之前,我们应该定义几个术语:
在异步总线上,数据的发送没有定时时钟。同步总线通过定时时钟发送数据。
全双工意味着数据可以同时发送和接收。半双工是指可以发送或接收数据,但不能同时发送或接收数据。
主/从描述了一种总线,其中一个设备是主设备,其他设备是从设备。主/从总线通常是同步的,因为主总线通常为双向发送的数据提供定时时钟。
多主总线是一种可以有多个主设备的主/从总线。这些总线必须有一种仲裁方案,可以在多个主设备同时控制总线时解决冲突。
点对点或对等接口是两个设备彼此具有对等关系的接口;没有主人或奴隶。对等接口通常是异步的。
术语“多点”描述了一种接口,其中有多个接收器和一个发送器。
多点描述了其中有两个以上对等收发器的总线。这与多点接口不同,因为它允许通过同一组电线进行双向通信。
通信协议类型
RS-232协议
TIA/EIA-232-F(通常称为 RS-232)是几乎每台个人计算机上都可以找到的通用接口。RS-232 是一个完整的标准,不仅包括电气特性,还包括物理和机械特性,例如连接硬件、引脚排列和信号名称。RS-232 是一种点对点接口,能够以高达 20Kbps 的速度传输中等距离。虽然规范中没有特别指出,但只要连接较短且使用正确的接地,速度可以超过 115.2Kbps。30 英尺的电缆长度很常见,并且可以使用低电容电缆获得超过 200 英尺的电缆。
RS-232 总线是一种非平衡总线,能够在两个接收器/发送器对(称为数据终端设备 (DTE) 和数据通信设备 (DCE))之间进行全双工通信。每个都有一个发送信号,该信号连接到另一端的接收信号。因此,两侧之间存在引脚差异。(您的 PC 是 DTE,而连接的外围设备是 DCE。)
每个发射器通过改变线路上的电压来发送数据。高于 3V 的电压是二进制 0,而低于 –3V 的电压是二进制 1。在这些电压之间,该值是不确定的。为了在逻辑电平(0 和 5V)与这些电平之间进行转换,可以使用 RS-232 转换 IC,例如 1488、1489 或无处不在的 MAX232。
典型的 RS-232 通信由起始位、数据位、奇偶校验位(如果有)和停止位组成。与 PC 通信时,典型格式为 8 个数据位、无奇偶校验和 1 个停止位 (8N1)。七个数据位、偶校验和一个停止位 (7E1) 也很常见。起始位通常是 0,停止位通常是 1,如图 1 所示。规范没有描述任何通信协议,包括起始/停止位的使用。
RS-232 协议
图 1:RS-232
许多使用 RS-232 总线的嵌入式系统与 PC 或 PC 外围设备(例如调制解调器)连接。其他系统使用 RS-232,以便可以使用廉价的协议分析仪或配备两个串行端口的 PC 轻松监控总线流量。
几乎每个微控制器供应商都提供包含 RS-232 硬件支持的产品,称为通用异步接收发送器 (UART)。UART 通常是中断驱动的,速度高达 115.2Kbps,软件开销很小,尽管这因架构而异。
RS-422 和 RS-485协议
TIA/EIA-422-B(通常称为 RS-422)和 TIA/EIA-485-A(通常称为 RS-485)是平衡双绞线接口,速度可达 10Mbps,距离可达4,000 英尺。作为差分总线,每条总线都使用 1.5V 至 6V 的信号来传输数据。(使用差分平衡总线,与 RS-232 等类似的单端不平衡总线相比,抗噪能力得到了提高。)
RS-422 接口是一种多点接口,可通过一对电线从一个发射器到多个接收器(多 10 个单位负载 (UL))进行单向通信。如果接收数据的设备希望与发送器进行通信,设计人员必须在每个接收器和发送器之间使用单独的专用总线。(使用此返回总线将允许全双工传输。)因此,RS-422 很少在两个以上的节点之间使用。
另一方面,RS-485 接口是多个收发器之间通过一对电线进行的双向通信。规范规定总线多可包含 32 个 UL 收发器。许多制造商生产部分 UL 收发器,从而将设备的数量增加到远超过 100 个。
RS-422 和 RS-485 接口通常使用与 RS-232 相同的起始位/数据/停止位格式。事实上,有多种转换器可以实现 RS-232 与 RS-485 之间的相互转换。但请记住,RS-232 是全双工接口,而 RS-485 是半双工接口。
一些微控制器制造商提供了具有特殊 RS-485 功能的内置 UART。
I 2 C协议
内部集成电路总线(I 2 C)是飞利浦半导体开发的接口。(为了让 IC 制造商在硬件中实现 I 2 C 总线,他们必须获得 Philips 的许可。)
I 2 C 总线是半双工、同步、多主总线,仅需要两条信号线:数据 (SDA) 和时钟 (SCL)。这些线通过上拉电阻拉高,并由硬件通过开漏驱动器控制,从而提供线与接口。
I 2 C 使用可寻址通信协议,允许主设备使用 7 位或 10 位地址与各个从设备进行通信。每个设备都有一个由飞利浦分配给设备制造商的地址。此外,还存在一些特殊地址,包括“通用调用”地址(对总线上的每个设备进行寻址)和高速启动地址。
在与从设备通信期间,主设备生成用于与从设备之间的通信的所有时钟信号。每次通信都以主机生成启动条件、8 位数据字、确认位开始,然后是停止条件或重复启动。每个数据位转换均在 SCL 为低电平时发生,启动和停止条件除外。启动条件是 SCL 线为高电平时 SDA 线从高电平到低电平的转换。停止条件是当 SCL 线为高电平时 SDA 线从低电平到高电平的转换(参见图 2)。确认位由消息接收器通过将 SDA 线拉低而生成,同时主设备释放该线并允许其浮高。如果主机读取确认位为高,I2C 协议。
图 2:I 2 C
I 2 C 有一个相当有趣的功能,称为时钟拉伸,当从设备无法处理该位并希望有更多时间时会执行此操作。发生这种情况时,从设备会将 SCL 线拉低。由于信号表现为线与,因此当主器件释放 SCL 线而从器件“拉伸”时钟时,主器件应注意到该线保持低电平。看到这一点后,主设备会等待,直到从设备处理完数据位并释放线路。一旦被从机释放,SCL 线就会浮回高电平,向主机发出信号以发送下一个数据位。
I 2 C总线具有三种速度:慢速(低于100Kbps)、快速(400Kbps)和高速(3.4Mbps),每种速度都向下兼容。如果信号需要离开电路板,飞利浦指定了推荐的接线布置。