ZHDU116G January 2018 – June 2024 CC1312PSIP , CC1312R , CC1352P , CC1352R , CC2642R , CC2642R-Q1 , CC2652P , CC2652PSIP , CC2652R , CC2652RB , CC2652RSIP , CC2662R-Q1
正在接收的数据包存储在接收缓冲区中。首先,根据 RX 条目中 config.lenSz 的配置,会存储一个长度字节或长度字。该长度是根据无线接收到的长度以及附加信息的配置计算得出的;对于部分读取 RX 缓冲区,则初始化为该段的最大可能大小,并在完成后设置为一个缓冲区中的段长度。
在可选长度字段之后,如果 rxConf.bIncludeHdr 为 1,则接收到的标头将按无线接收到的原始形式存储。此标头是 CMD_PROP_RX 的长度字节,对于 CMD_PROP_RX_ADV 来说是一个最多 32 位的字段。在后一种情况下,如果位数不是 8 的倍数,则标头的最后一个字节在 MSB 中补零填充,后跟接收到的地址(如果已配置)和有效载荷。
如果 rxConf.bIncludeCrc 为 1,则接收到的 CRC 值将存储在 RX 缓冲区中;否则,它不会进行存储,而仅用于检查 CRC 结果。如果 rxConf.bAppendRssi 为 1,则会附加一个字节,指示接收到的 RSSI 值。如果 rxConf.bAppendStatus 为 1,则会附加一个状态字节,其类型定义见表 26-180。如果 rxConf.bAppendTimeStamp 为 1,则附加一个指示数据包起始时间的时间戳。该时间戳对应于 ratmr_t 数据类型。虽然时间戳是多字节的,但不会进行字地址对齐,因此必须按字节写入和读取时间戳。
如果数据包的接收被中止,则数据包将立即从接收队列中移除,除非使用了部分读取 RX 条目。如果配置了 RSSI、时间戳和状态字段(除非没有更多的缓冲区空间可用),则会附加这些字段,并且状态字节会指示接收已中止。
图 26-11 显示了 RX 队列中条目元素的格式。
图 26-11 接收缓冲区条目元素当 RX 条目将其状态更改为“已完成”时,会产生 RX_ENTRY_DONE 中断。根据使用的 RX 条目类型,这意味着:
对于部分读取条目,每当将数据写入接收缓冲区时,会产生 RX_Data_Written 中断。自数据包开始以来,每当写入 config.irqIntv(在数据条目中给出)字节的倍数时,会产生 RX_N_Data_Written 中断。