ZHDU116G January 2018 – June 2024 CC1312PSIP , CC1312R , CC1352P , CC1352R , CC2642R , CC2642R-Q1 , CC2652P , CC2652PSIP , CC2652R , CC2652RB , CC2652RSIP , CC2662R-Q1
通用接收器命令可用于接收物理层测试数据包,也可用于接收任何数据包,例如在数据包嗅探器应用中。
通用接收器操作由 CMD_BLE_GENERIC_RX 或 CMD_BLE5_GENERIC_RX 命令启动。在命令结构中,它应包含具有表 26-101 中定义类型的 pParams 参数和具有表 26-114 中定义类型的 pOutput 参数。在通用接收器操作开始时,无线电 CPU 应等待启动触发条件。然后,它应根据命令结构的通道参数来编程频率。对于 CMD_BLE5_GENERIC_RX,还应设置 phyMode.mainMode 中给出的 PHY 模式。无线电 CPU 应设置 pParams->accessAddress 中定义的访问地址,并使用 pParams->crcInit 中定义的 CRC 初始化值。应按照白化参数中的定义设置白化器。然后,无线电 CPU 应配置接收器。
在通用接收器操作中,对数据包格式的唯一假设是,第二个收到的字节是一个长度字段,指示该字节之后的载荷长度,并且数据包末尾附加了一个标准的 BLE 类型 CRC。假设长度字段中的位数与广播数据包相同,即如果使用 CMD_BLE5_RADIO_SETUP 配置,则默认为 8 位,否则为 6 位。
调谐到正确的通道后,无线电 CPU 应开始侦听数据包。如果在解调器上获得同步,则将消息接收到 RX 队列中(如果有)。如果长度大于 BLE 传统广播数据包允许的最大长度(37,但可覆盖),则应停止接收并重新开始。
如果 pParams->pRxQ 为 NULL,则不应存储收到的数据包。计数器仍应更新,并产生中断。
如果收到的数据包存在 CRC 错误,应置位 bCrcErr 位。对于通用 RX 命令,bIgnored 标志永远不会置位。
如果正在接收的数据包无法放入 RX 队列,则该数据包应被接收到末尾,但收到的字节不会存储。如果该数据包通常不会从 RX 缓冲区中丢弃,操作应结束。
结束操作的触发条件由 pParams->endTrigger 和 pParams->endTime 设置。如果该参数定义的触发条件发生,无线电操作应尽快结束。如果触发条件在等待同步时发生,操作应立即结束。如果在其他时间发生,操作应继续执行到当前数据包完整接收,然后结束。如果无线电 CPU 收到即时命令 CMD_STOP(请参阅节 26.3.3.2.2),其含义与发生结束触发条件时相同,但结束后的状态代码应为 CMD_DONE_STOPPED。
输出结构 pOutput 包含的字段提供有关正在运行的命令的信息。无线电 CPU 不会初始化这些字段,因此当需要复位计数器时,必须由系统 CPU 完成此操作。无线电 CPU 将按照下方列表所述更新这些字段。该列表还指明了何时应在系统 CPU 中引发中断。
收到数据包后,如果 pParams->bRepeat = 1、未观察到结束事件且数据包可放入接收队列,则应在同一通道上重新开始接收。如果 pParams->bRepeat = 0,则操作始终应在收到数据包后结束。
通用 RX 操作应以表 26-164 中列出的状态之一结束。操作结束后,命令结构中的状态字段指示操作结束的原因。在所有情况下,都会引发 Command_Done 中断。每种情况都会指示 TRUE、FALSE 或 ABORT 结果,这将决定下一步的操作,如节 26.3.2.5.2中所定义。通用 RX 命令结构的 pNextOp 字段可指向同一命令结构。这样,可以持续执行 RX,直到结束触发条件发生或 RX 缓冲区填满。
| 条件 | 状态代码 | 结果 |
|---|---|---|
| 收到数据包,CRC 正确且 pParams->bRepeat = 0 | BLE_DONE_OK | 真 |
| 收到数据包,CRC 错误且 pParams->bRepeat = 0 | BLE_DONE_RXERR | 真 |
| 等待同步时,观察到 pParams->endTrigger 指示的触发条件 | BLE_DONE_ENDED | 否 |
| 观察到 pParams->endTrigger 指示的触发条件,随后完成数据包接收 | BLE_DONE_ENDED | 否 |
| 等待同步时,观察到 CMD_STOP | BLE_DONE_STOPPED | 否 |
| 观察到 CMD_STOP,随后完成数据包接收 | BLE_DONE_STOPPED | 否 |
| 收到了 CMD_ABORT | BLE_DONE_ABORT | ABORT |
| RX 缓冲区中没有空间来存储收到的数据包 | BLE_ERROR_RXBUF | 否 |
| 通道值非法 | BLE_ERROR_PAR | ABORT |