首页 理论教育ARM嵌入式系统Linux串口工作原理

ARM嵌入式系统Linux串口工作原理

【摘要】:因为串口设备工作频率低且容易受到干扰,远距离传输会造成数据丢失。表7.5DB9(9针)接口的RS232串口数据线定义常见的串口工具软件都提供了RTS/CTS与XON/XOFF选项。这两个选项对应RS232串口的两种流量控制方式。RTS/CTS方式通过对串口控制器编程,设置接收缓冲区的高位标志和地位标志。高位标志和低位标志用于控制RTS和CTS信号线。

串口通过直接连接在两台设备间的连接线发送和接收数据,两台设备通信至少需要三根连接线(发送数据、接收数据和接地)才可以通信。以最常见的RS232串口为例,通信距离较近时(<12 m),可以用电缆线直接连接标准RS232端口。如果传输距离远,可以通过调制解调器(MODEM)传输。因为串口设备工作频率低且容易受到干扰,远距离传输会造成数据丢失。

表7.5是常见的9针接口串口各条线定义,RS232标准的串口不仅提供了数据发送和接收功能,同时可以进行数据流控制。对于普通应用来说,连接好两个数据线和地线就可以通信。

表7.5 DB9(9针)接口的RS232串口数据线定义

常见的串口工具软件都提供了RTS/CTS与XON/XOFF选项。这两个选项对应RS232串口的两种流量控制方式。串口流量控制主要应用于调制解调器的数据通信,对于普通的RS232串口编程,了解一点流量控制方面的知识是必要的。

在两个串口之间传输的数据,通常称做串口数据流。串口数据流的两端由于计算机处理能力差别,常会出现数据丢失的现象。如单片机和PC之间使用串口传输数据,单片机的处理能力远小于PC,如果PC按照自己的处理速度发送数据,串口另一端的单片机很快就会因为处理不过来而导致数据丢失。

解决串口传输数据丢失的办法是对串口数据传输两端进行流量控制。在串口协议中规定了传输数据的速率,即单位时间内传输的字节数。根据不同的传输速率,在接收端和发射端可以进行流量控制。接收端在接收缓冲区满之后,向发送端发出暂停发送信号;等接收缓冲区数据被取走之后,向发送端发出继续发送的信号;发送端收到暂停发送信号后停止数据发送,直到收到继续发送信号才会再次发送数据。

串口协议中规定了硬件流量控制(RTS/CTS和DTR/CTS)和软件流量控制(XON/OFF)方法。

1.硬件流量控制(www.chuimin.cn)

常见的串口硬件流量控制方法有以下两种。

●RTS/CTS称做“请求发送/清除发送”流量控制。使用时需要连接串口电缆两端的RTS和CTS控制线(表1中的第7针和第8针)。RTS/CTS流量控制方式中,终端是流量发起方。

●DTR/DSR称做“数据终端就绪/数据设置就绪”流量控制。使用时需要连接串口电缆的DTR和DSR控制线(表1中的第4针和第6针)。

RTS/CTS流量控制方法使用比较普遍。RTS/CTS方式通过对串口控制器编程,设置接收缓冲区的高位标志和地位标志。高位标志和低位标志用于控制RTS和CTS信号线。当接收端数据超过缓冲区的高位标志后,串口控制器把CTS信号线置为低电平,表示停止数据发送;当接收端数据缓冲区处理到低位以下,串口控制器置CTS为高电平,表示可以开始数据发送。数据接收端使用RTS信号表示是否准备好接收数据。

2.软件流量控制

使用软件流量控制需要占用多条数据信号线,在实际的串口通信中,为了简便通信通常使用软件流量控制。使用软件流量控制的串口通信电缆只需要三条数据线(数据发送、数据接收和地线)即可,软件流量控制使用XON/XOFF协议。

软件流量控制的原理与硬件流量控制原理类似。不同的是,软件流量控制使用特殊的字符表示硬件流量控制中的CTS信号。在软件流量控制中,首先设置数据接收缓冲高位和低位。当接收端数据流量超过高位的时候,接收端向发送端发出XOFF字符,XOFF字符通常是十进制数19,表示停止数据发送;当接收端数据缓冲数据低于低位的时候,接收端向发送端发送XON字符(通常是十进制数17),表示数据开始传输。