模块串口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起效的示波器波形
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值