RS232 DB9阵脚定义如下:
1 DCD 载波检测
2 RXD Receive Data 接收数据
3 TXD Transmit Data 发送数据
4 DTR Data Terminal Ready 数据终端准备
5 GND System Ground 接地
6 DSR Data Set Ready 数据准备完成
7 RTS Request to Send 请求发送
8 CTS Clear to Send 允许发送
9 RI Ring Indicator 振铃提示
经常串口经常使用的为2/3/5 Pin,本文主要关注流控制功能故不做过多介绍。
流控制在串行通讯中的通过在收/发设备之间进行握手操作来协调二者间的数据发送,以解决数据丢失问题。
流控制所使用的针主要为7_RTS/8_CTS(请求发送/允许发送)Pin 。
在全双工模式下,配置的为双向通道,故不需要RTS/CTS联络信号,使其变高。
在半双工模式下:
当DTE接收接收数据时,RTS为ON(1),不能接收数据时,RTS为OFF(0);
当DCE准备接收数据时,使CTS为ON(1),不能接收数据时,使CTS为OFF(0);
从而避免了发送设备在 接收设备未准备好的情况下发送数据所导致的数据丢失。
流控制是 接收方 通过控制 准备好信号 来控制 发送方 是否发送数据,也就是说接收方有一个开关信号。
若现有A、B两个设备,各情况分析如下:
若AB都采用流控制,则发送方被接收方控制是否发送,机制正常;
若仅有一方启用流控制,如:A启用,数据由A→B时,B无法给A开关信号,A的数据始终无法发送;数据由B→A时,B发送不需要A控制,就强制向A发送数据,一般情况下A会正常接收到数据。
在运行ZStack里 SerialApp例程过程中,程序中启用了流控制功能,出现现象是串口调试助手(默认是没有开启流控制)不显示对方所发送的数据!就是因为双方设备在流控配置不一致所造成的。
因此在串口通讯里要注意流控是否开启(后面ZTool的使用同样会出现这样的问题,发现不了设备或串口发送的请求无响应信息)!
联系客服