基于Linux的tty架构及UART驱动详解 (2)

在RS232中任何一条信号的电压均为负逻辑关系。即:逻辑“1”-5-15V;逻辑“0”,+5~+15V,噪声容限为2V。即要求接收器能识别低至+3V的信号作为逻辑“0”,高到-3V的信号的信号作为逻辑“1”。

RS232接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故使用电平转换电路方能与TTL电路连接。

RS485接口信号电平比RS232降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,方便与TTL电路连接。

1.1.5. 流控

数据在两个串口传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区以满,此时继续发送的数据就会丢失,流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。

因此流控制可以控制数据传输的进程,防止数据丢失。PC机中常用的两种流控为:硬件流控(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续/停止)。

1.1.5.1. 硬件流控

硬件流控制常用的有RTS/CTS流控制和DTR/DSR流控制两种。
DTR–数据终端就绪(Data Terminal Ready)
低有效,当为低时,表示本设备自身准备就绪。此信号输出对端设备,使用对端设备决定能否与本设备通信。
DSR-数据装置就绪(Data Set Ready)
低有效,此信号由本设备相连接的对端设备提供,当为低时,本设备才能与设备端进行通信。
RTS - 请求发送(数据)(Request To Send)
低有效,此信号由本设备在需要发送数据给对端设备时设置。当为低时,表示本设备有数据需要向对端设备发送。对端设备能否接收到本方的发送数据,则通过CTS信号来应答。
CTS - 接收发送(请求)(Clear To Send)
低有效,对端设备能否接收本方所发送的数据,由CTS决定。若CTS为低,则表示对端的以准备好,可以接收本端发送数据。

以RTS/CTS流控制分析,分析主机发送/接收流程:

物理连接

基于Linux的tty架构及UART驱动详解


主机的RTS(输出信号),连接到从机的CTS(输入信号)。
主机是CTS(输入信号),连接到从机的RTS(输入信号)。

1.主机的发送过程:
主机查询主机的CTS脚信号,此信号连接到从机的RTS信号,受从机控制。如果主机CTS信号有效(为低),表示从机的接收FIFO未满,从机可以接收,此时主机可以向从机发送数据,并且在发送过程中要一直查询CTS信号是否为有效状态。主机查询到CTS无效时,则中止发送。
主机的CTS信号什么时候会无效呢?
从机在接收到主机发送的数据时,从机的接收模块的FIFO如果满了,则会使从机RTS无效,也即主机的CTS信号无效。主机查询到CTS无效时,主机发送中止。

2.主机接收模式:
如果主机接收FIFO未满,那么使主机RTS信号有效(为低),即从机的CTS信号有效。此时如果从机要发送,发送前会查询从机的CTS信号,如果有效,则开始发送。并且在发送过程中要一直查询从机CTS信号的有效状态,如果无效则终止发送。是否有效由主机的RTS信号决定。如果主机FIFO满了,则使主机的RTS信号无效,也即从机CTS信号无效,主机接收中止。

1.1.5.2. 软件流控

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdgsp.html