四:OSI模型的数据链路层 RS-485 是一种双工通信系统,其中同一总线上的多个设备可以双向通信。RS-485 最常用作半双工,如上图所示,只有一条通信线路(“A”和“B”成对)。在半双工中,设备轮流使用同一条线路,在该线路中主机将断言对总线的控制并发送命令,所有其他设备都在监听。接收者将监听其地址,然后该设备将断言控制并做出响应。
相反,在全双工系统中,例如串行外设接口 (SPI) 或通用异步收发器 (UART),主机和从设备可以使用专用输入和输出线同时通信。 在数据层,RS-485 通常使用 UART 进行串行通信,主机 UART 以全双工方式驱动和接收串行通信。它连接到构成物理层的 RS-485 差分收发器,并将信号转换为半双工差分格式,以便在 RS-485 总线上使用。然后主机将通过 UART 与 RS-485 通信,并告诉收发器何时在发送和接收之间切换。从设备也将以同样的方式使用它们的 UART。 UART 具有专用的发送和接收线路,使其能够以全双工、半双工甚至单工方式运行,这意味着数据只能通过一条线路输出或输入。由于 RS-485 通常是半双工的,因此连接到它的 UART 也将以半双工方式运行。
UART 接口是异步的,这意味着通信不包括时钟。主机和从设备必须使用它们自己的内部时钟,并且两个设备都必须知道数据将以何种时钟速率传输。 这与串行外设接口 (SPI) 等同步系统不同,其中一条信号线包含一个时钟,总线上的监听设备可以在该时钟上捕获数据。 此外,UART 通常具有大多数设备将使用的正常格式,但可以配置许多选项来更改规范。UART 的空闲状态是高电压,因此要开始传输,UART 使用一个称为起始位的低脉冲,然后是 8 位数据,并以高停止位完成,图 8。
主处理器将使用 IO 引脚将 RS-485 收发器置于发送模式,并将一个字节从 UART TX 线发送到 RS-485 收发器的数据(D 或 DI)线。收发器会将单端 UART 比特流转换为 A 和 B 线上的差分比特流,图 3。数据离开收发器后,主机立即将收发器模式切换为接收。 从机系统是相同的,这意味着从机 RS-485 收发器接收传入的比特流,将其转换为单端信号,并通过从机的 UART RX 线将其发送到主机设备。当从设备准备好响应时,它会像主机最初那样发送,而主机现在接收,如下图9。
|