ZHDU116G January 2018 – June 2024 CC1312PSIP , CC1312R , CC1352P , CC1352R , CC2642R , CC2642R-Q1 , CC2652P , CC2652PSIP , CC2652R , CC2652RB , CC2652RSIP , CC2662R-Q1
接收 ACK 操作是一个在接收操作之上运行的前台级操作。该操作从 CMD_IEEE-RX_ACK 命令开始,并使用表 26-66 中列出的命令结构。
在接收 ACK 操作开始时,无线电 CPU 会等待启动触发。如果在接收 ACK 操作之前由于 TX 操作而暂停接收器,则在发生启动触发之前不会恢复后台级 RX 操作。
当接收 ACK 操作运行时,后台级 RX 操作正常运行。但是,除了查找数据包之外,操作还会查找 seqNo 中给出了序列号的 ACK 数据包。仅当数据包配置为在后台级接收操作 (frameTypes.bAcceptFt2Ack = 1) 中时,数据包才会存储在接收队列中。如果在后台 RX 操作中滤除 ACK 数据包,则对于 ACK 数据包,将接收序列号,如果匹配,还将接收 FCS。
如果接收到带有所请求序列号的 ACK 数据包,则会检查 FCS。如果 CRC 为 OK,则接收 ACK 操作结束,否则它会继续。如果 ACK 接收到 OK,则检查标头的挂起数据位。
除了如前所述在接收到 ACK 后结束的接收 ACK 操作之外,该操作还可以根据 endTrigger 和 endTime 或命令给出的结束触发条件而结束。可结束接收 ACK 操作的命令为立即命令 CMD_ABORT、CMD_STOP、CMD_IEEE-ABORT_FG 及 CMD_IEEE-STOP_FG。
接收 ACK 操作由于表 26-87 中列出的原因之一而结束。命令结束后命令结构的状态字段指示操作结束的原因。在所有情况下都会产生 FG_COMMAND_DONE 中断。在每种情况下,都会指示结果是 TRUE、FALSE 还是 ABORT。这指示是在 pNextOp 中启动下一个命令(如果有),还是返回到 IDLE 状态。
| 条件 | 状态代码 | 结果 |
|---|---|---|
| 已成功接收到请求的 ACK 并清除挂起数据位 | IEEE_DONE_ACK | FALSE |
| 在设置了挂起数据位的情况下成功接收到请求的 ACK | IEEE_DONE_ACKPEND | TRUE |
| 发生结束触发 | IEEE_DONE_TIMEOUT | FALSE |
| 收到 CMD_STOP 或 CMD_IEEE-STOP_FG | IEEE_DONE_STOPPED | FALSE |
| 收到的 CMD_ABORT 或 CMD_IEEE-ABORT_FG | IEEE_DONE_ABORT | ABORT |
| 后台操作已结束 | IEEE_DONE_BGEND | ABORT |
| 观察到的非法参数 | IEEE_ERROR_PAR | ABORT |