模块串口RTS与CTS的理解与流控测试

模块串口RTS与CTS的理解与测试

RTS: Request To Send

CTS : Clear To Send

SIMCOM公司解释:

RTS是模块的输入端,用于MCU通知模块,MCU是否准备好,模块是否可向MCU发送信息,RTS的有效电平为低。

CTS是模块的输出端,用于模块通知MCU,模块是否准备好,MCU是否可向模块发送信息,CTS的有效电平为低

正常标准理解:

RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。

CTS (Clear ToSend,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。

以上理解都不错,见下图:

   SIMCOM公司模块芯片,EVB与PC串口连接示意图

在这里插入图片描述

如上图所示:

SIMCOM官方解释为EVB与PC通信时,RTS作为模块的输入端,CTS作为模块的输出端。
而正常标准理解为芯片内部与PC通信,RTS作为芯片的输出端,CTS作为芯片的输入端

上述理解差别在于SIMCOM公司设计模块时,把芯片内部的RTS和CTS与EVB上的RTS和CTS交叉连接,导致理解歧义。

测试硬件流控时,主要测试的是串口与串口中间的通信,也即模块串口与PC串口(如SSCOM)的通讯过程,TCP的透传只是作为辅助测试的内容,不影响硬件流控的测试结果。

如下测试需提前打开硬件流控:at+ifc=2,2

RTS测试:

由于RTS作为模块的输入端,当PC端(SSCOM)拉高或者拉低RTS时,输出的高低电平作用于模块的输入端,也即EVB的RTS,也即芯片内部的CTS。

CTS为低电平有效,故当CTS拉高时,若通过SSCOM发送AT指令,但串口无上报,则证明RTS硬件流控有效。

由于SSCOM运行在电脑上,理论上来说缓存无限大,人为的拉高RTS后,AT发送后,模块会正常执行AT指令,只是执行内容以及结果都在模块内部缓存暂放,当RTS为低时,会一次性把缓存数据输出到SSCOM中

CTS测试:

一般可以直接通过SSCOM给模块发送文件,但此时发送的数据都会当作AT指令处理,导致一直返回error且发送速率慢。所以使用透传的方式辅助测试,发送文件。

模块连接到透出模式后,选在一个文件,进行发送,同时使用示波器测量CTS的电平,

发送文件时,尽量把模块的波特率改到一个比较大的数值,如921600,at+ipr=921600;

需要多次测量,抓取CTS的高电平。

如果模块的缓存不满,CTS不会输出高电平。

下图为测的CTS起效的示波器波形
在这里插入图片描述


版权声明:本文为weixin_37662982原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。