This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC1311P3:启用载波侦听会导致在使用 RX ADV 监听模式时不会对数据进行解码

Guru**** 2492385 points
Other Parts Discussed in Thread: CC1311P3

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1550978/cc1311p3-enabling-carrier-sense-results-in-no-data-being-decoded-when-using-rx-adv-sniff-mode

器件型号:CC1311P3


工具/软件:

我们正在根据您的 433MHz 频段参考设计设计的定制电路板上使用 CC1311P3。 我们使用部分缓冲区读取机制、以无限 RX 为 RX_ADV_sniff_CMD 配置以下参数。

当在 RX_ADV_snif_CMD 中启用载波侦听 (CS) 时、不会发生同步字匹配、从而不会对数据进行解码。 但是、当 CS 被禁用时、RX_ADV_Sniff 模式正常工作、数据被成功解码。 此外、我们希望在有效的 RSSI 阈值标准满足时连续接收数据。  


您能否交叉检查载波侦听启用和 RSSI 阈值配置的配置 ? 此外、请告知我们在 RSSI 阈值满足时启用载波感应以及连续数据接收的可能方法。  

.csConf.bEnaRssi = 0x1、//0x0、//0x1、//0x0、
.csConf.bEnaCorr = 0x0、
.csConf.operation = 0x0、
.csConf.busyOp = 0x0、
.csConf.idleOp = 0x0、
.csConf.timeoutRes = 0x0、
.rssiThr = 0x00、//0xB0、//0x73、//0x00、
.numRssiIdle = 0x0、//0x1、//0x00、
.numRssiBusy = 0x00、
.corrPeriod = 0x0000、
.corrConfig.numCorrInv = 0x0、
.corrConfig.numCorrBusy = 0x0、
.csEndTrigger.triggerType = 0x0、
.csEndTrigger.bEnaCmd = 0x0、
.csEndTrigger.triggerNo = 0x0、
.csEndTrigger.pastTrig = 0x0、
.csEndTime = 0x00000000

然后触发 RUN CMD  

rfPostHandle = RF_runCmd (rfHandle、(RF_Op*)&RF_cmdPropRxAdvSnif_cst、
RF_PriorityNormal、&ReceivedOnRFcallback、
RF_EventRxEntryDone);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Theiv:

    我已指定某人下周查看您的问题。

    同时,我建议在论坛上搜索 Sniff 模式。

    谢谢、
    Marie H

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、 Marie H 

    我们在论坛上提到了以下例子:
    https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/549574/cc1310-rx_adv_sniff-cannot-receive-anything?tisearch=e2e-sitesearch&keymatch=rx_adv_sniff

    使用此示例、我们能够在启用载波侦听的情况下成功解码数据。 但是、我们在解析从接收到的数据字节附加的 RSSI 值时面临问题。

    收到 RX 数据后、我们将索引递增 1 并读取 RSSI 值。 这将返回0xF8、即-8被解释为有符号值时。 然而、这与我们的预期不符。 使用getRSSI() API 读取 RSSI 时、我们观察到值为-75、与附加到数据字节的 RSSI 值相冲突。

    您能帮助我们了解 RSSI 值之间的这种差异吗?

    共享 CS 配置以供参考  

    #define  WOR_RSSI_THRESHOLD –100

    RFC_CMD_PROP_RX_ADV_snif_t RF_cmdPropRxAdvSniff =

    .commandNo = 0x3809、
    .status = 0x0000、
    .pNextOp = 0、//插入适用指针:(UINT8_t*)&xxx
    .StartTime = 0x00000000、
    .startTrigger.triggerType = 0x0、
    .startTrigger.bEnaCmd = 0x0、
    .startTrigger.triggerNo = 0x0、
    .startTrigger.pastTrig = 0x1、//0x0、
    .condition.rule = 0x1、
    .condition.nSkip = 0x0、
    .pktConf.bFsOff = 0x0、
    .pktConf.brepeatOk = 0x0、
    .pktConf.brepeatNok = 0x0、
    .pktConf.bUseCrc = 0x0、
    .pktConf.bCrcIncSw = 0x0、
    .pktConf.bCrcIncHdr = 0x0、
    .pktConf.endType = 0x0、
    .pktConf.filterOp = 0x0、
    rxConf.bAutoFlushIgnored = 0x1、//0x0、
    .rxConf.bAutoFlushCrcErr = 0x0、
    .rxConf.bIncludeHdr = 0x0、
    .rxConf.bIncludeCrc = 0x0、
    rxConf.bAppendRssi = 0x1、//0x0、
    .rxConf.bAppendTimestamp = 0x0、
    .rxConf.bAppendStatus = 0x0、
    .syncWord0 = 0x00000000、
    .syncWord1 = 0x00000000、
    .maxPktLen = 0x0000、
    .hdrConf.numHdrBits = 0x0、
    .hdrConf.lenPos = 0x0、
    .hdrConf.numLenBits = 0x0、
    .addrConf.addrType = 0x0、
    .addrConf.addrSize = 0x0、
    .addrConf.addrPos = 0x0、
    .addrConf.numAddr = 0x0、
    .lenOffset = 0x00、
    .endTrigger.triggerType = 0x1、//0x0、
    .endTrigger.bEnaCmd = 0x0、
    .endTrigger.triggerNo = 0x3、//0x0、
    .endTrigger.pastTrig = 0x0、
    .EndTime = 0x00000000、
    .pAddr = 0、//插入适用指针:(Uint8_t*)&xxx
    .pQueue = 0、//插入适用指针:(dataQueue_t*)&xxx
    .pOutput = 0、//插入适用指针:(Uint8_t*)&xxx
    .csConf.bEnaRssi = 0x1、//0x0、//0x1、
    .csConf.bEnaCorr = 0x0、//0x1、//0x0、
    .csConf.operation = 0x0、
    .csConf.busyOp = 0x0、//0x0、
    .csConf.idleOp = 0x1、//0x0、
    .csConf.timeoutRes = 0x0、
    rssiThr =(int8_t) WOR_RSSI_THRESHOLD、
    .numRssiIdle = 0x1、//0x0、//0x1
    .numRssiBusy = 0x1、//0x00、
    .corrPeriod = 0x0000、
    .corrConfig.numCorrInv = 0x0、
    .corrConfig.numCorrBusy = 0x0、
    .csEndTrigger.triggerType = 0x1、//、//0x1、//0x0、
    .csEndTrigger.bEnaCmd = 0x0、
    .csEndTrigger.triggerNo = 0x0、
    .csEndTrigger.pastTrig = 0x0、
    .csEndTime = 0x00000000、//0x00000000
    };

    此外、让我们了解如何在 RSSI 阈值达到时通过启用载波检测来连续接收数据、而在 RSSI 阈值降至阈值以下时停止接收数据。  现在、我们正在接收 RX 数据、即使在接收到有效数据(即噪声)后也是如此。

    //用于触发 RX ADV Sniff CMD 的 CFG

    使用 RX_ADV_Sniff 模式触发 RUN CMD、并使用部分读取数据类型在每个 Rx 完成中断时读取 RX 数据。  

    谢谢、

    Thiv B.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    “感谢您的回答、 Siri  顺便说一下、我们观察到 RSSI 值为–14。 您能否说明此值的测量单位?“ 报告的值看起来像饱和点。 我们正在处理–128 噪声级别到–90dBm 良好信号条件的信号强度范围。 但是、在数据包中观察到的值与我们的理解不符。  

    “另外、您能否澄清您的最新回复中未涉及的载波感知查询?“

    谢谢、

    专题 B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    RSSI 以 dBm 为单位显示。

    不确定我是否理解您的问题:

    从数据表中可以看出、从灵敏度限值开始、RSSI 的动态范围通常为 95dB。

    我的测试使用 rfPacketRX 和 rfPacketTx 示例中的默认 50kbps 设置执行、该示例的灵敏度限制为–110dBm、这意味着 RSSI 的测量范围可达到(–110)+ 95 =–15(通常)。

    我以 20dBm 进行传输、桌上放着两个 LP、–14dBm 最意味着我已达到 RSSI 的饱和水平。

    我不知道您使用的设置、测试的硬件或有关测试条件的任何内容、因此我不能评论您应该使用什么 RSSI(除非在测试设置中)。

    当您使用只有 RSSI(而不是相关器)的监听模式时、只要 RSSI 高于阈值、无线电就将保持在 RX 中并查找同步字、直到您到达命令的结束时间。

    您的设置显示您使用的长度不限或未知、因此对讲机将在找到同步后一直保持在 RX 状态(或直到您通过取消 RX 命令或设置长度或溢出缓冲区来手动退出 RX)。

    为什么您使用无限数据包长度模式和部分读取条目?

    Siri

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的澄清、 Siri 

    对于同一主题、我们想阐明RF_getRssi(rfHandle) API 的返回值。 当我们调用这个函数时,它返回-75。 您能否确认此返回值的单位?

    此外、我们还观察到附加到接收数据的 RSSI 值与返回的值之间存在差异RF_getRssi(rfHandle)。 您能帮助我们了解这些值为什么不同吗?

    谢谢、

    专题 B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     RF_getRssi 返回–75、达到 RSSI 为–75dBm。

    附加到数据包的 RSSI 是检测到同步字时的 RSSI。

    如果使用  RF_getRssi、则将获得执行 CMD_GET_RSSI 时的 RSSI 值。

    Siri