接收数据:读取循环数据,最大化数据吞吐量

概述

与发送不同,在接收时,模块的与 MTU 使用有关的行为取决于配置。

配置

如要最大程度提高数据吞吐量,请按如下方式配置:

o允许 MTU 内的多段:控制字节位置 = 1。段的最后一个数据字节后面紧接下一段的控制字节。

o段大小可以超过 MTU 大小:仅段的第一个 MTU 包含段的控制字节,后续 MTU 块仅包含数据。

o使用 Block Forward 机制:模块最多传输七个未确认的 MTU 块。

步骤

操作

1

检查自上个循环之后,接收序列号是否已更改。

如果其是帧的开头,则初始化接收器缓冲区(写入指针位于缓冲区开头,接收帧长度 = 0,等等)。优化的传输意味着,在一个 MTU 中可包含多个短帧,这样,就必须要能够使用应用程序管理足够数量的接收缓冲区。

确定 MTU 中的控制字节位置。如果 RxByte1 是控制字节,则它是不包含前一段(帧)的余留数据的 MTU。如果第一个未分配的 RxBytex 是新段的控制字节,则它是包含前一帧的余留数据的 MTU。段内的 MTU 块不必具有控制字节。

2

评估来自 RxBytex 的控制字节信息。确定数据长度、段长度和下一控制字节位置。如果设置了帧结束检测,则它是最后一段。

3

如果有数据可用,则复制从 RxBytex 开始的串行数据块。保存当前写入指针位置,并添加新帧长度。

计算段的余留长度。下一个 RxBytex 可能已经是下一段或帧的控制字节。在设置了帧结束检测且复制了数据后,将此帧标记为完整。

4

增大 OutputSequence 中接收器序列号确认的值。

5

重复步骤 1 至 4,直到以数据块的形式接收了串行数据。

数据接收流程图:优化数据吞吐量

G-SE-0064579.2.gif-high.gif

 

 

划分控制字节和传输数据的示例

MTU 被配置为 15 字节,帧正被接收:27 字节、20 字节、11 字节...

G-SE-0064580.2.gif-high.gif