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.

[参考译文] CC1200:切换到 EWOR 状态失败

Guru**** 2482105 points
Other Parts Discussed in Thread: CC1200

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1232684/cc1200-switching-to-ewor-state-fails

器件型号:CC1200

您好!

我要求以特定模式在 EWOR (PQT 机制)和 PWDn 状态之间切换。  

我在切换到 EWOR 状态后尝试读取 Marc 状态、因为有时无法接收数据包。

以下是我的钥匙:

MARC 状态读取为0x41 (IDLE 状态)时、我能够接收数据包。  

但有时它会读取为0x00 (建立状态)、这是因为我没有获得任何数据包。

请告诉我如何解决这些问题

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

    使用 eWOR 时无法读取 MARCSTATE。

    在 eWOR 状态下、无线电在没有 MCU 帮助(应处于睡眠状态)的情况下在睡眠和 RX 之间自动切换、并且仅在接收到数据包时才应将 MCU 唤醒。

    使用 eWOR 时、无线电在 RX 的大部分时间(仅为短周期)都处于休眠状态、因此、一旦将 CSn 拉低以读取 MARCSTATE、基本上就会将无线电唤醒至空闲状态(退出 eWOR)。 (将 CSn 拉低是将无线电从休眠模式切换到空闲模式的方法)。

    如果在对讲机自动进入 RX (或正在进入 RX)的短时间内碰巧拉低 CSn、MARSCATE 将报告空闲以外的内容。

    要调试 eWOR 模式、您应该输出 GPIO 上的 LNA 信号并对其进行监控、以查看无线电何时处于 RX 模式以及何时处于睡眠模式。

    我还强烈建议您使用下面的监听模式示例作为参考

    http:www.ti.com/lit/zip/swrc274

    并阅读此应用手册:

    CC112x/CC120x RX 监听模式(修订版 A)(TI.com)

    提供了额外的成本。

     

    Siri.

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

    感谢您的意见。

    我不会因此而检查 Marc 状态。

    您能否指导我如何调试在微模式下无法始终接收数据包的问题

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

    我已经完成了这样的操作:"要调试 eWOR 模式、您应该输出 GPIO 上的 LNA 信号、并监视该信号以查看无线电何时处于 RX 模式以及何时处于睡眠状态。"

    大多数时候、人们在使用此功能时会遇到问题、因为他们认为接收器不在 RX 中。 通过监测此信号、您可以确认对讲机处于 RX 中、其速率与您编程的速率相同、也可以确认当发射器处于 TX 中时对讲机处于 RX 中。

    如果也使用 CC1200作为发送器、则可以监控 TX 端的 PA 信号。

    同样、从您知道有效的软件示例开始、当您确认一切正常后、您可以逐步开始进行更改。

    Siri.

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

    您好!

    如果我在 GPIO 上探测 LNA 线路、可以看到线路分别根据其 PWD 和 Rx 状态变为高电平和低电平。

    但当我读取同一 GPIO 线路以检查其是否为低电平、从而确认 RF 状态实际为 RX 时、读数不是0。

    您能建议我通过其他方式在固件中验证 RF 是否进入 RX 状态吗

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

    正如我已经说过的、您无法通过读取 SPI 上的任何内容来调试大部分时间处于睡眠状态的应用、因为这会唤醒器件。

    您只能在 GDO 引脚上输出不同的信号。

    我不知道您在使用什么硬件。 您是否制作了自己的产品?或者您是否在我们的 EM 上运行?

    您应该做的第一件事是、首先使用相同的射频参数测试非常简单的 RX 应用、以验证您的硬件是否正常工作并可以接收数据(例如、将 SmartRF Studio 用作发送器、并将我们的套件用作发送器)。

    验证硬件是否正常且射频设置是否正常后、应进入监听模式。

    当您说无线电按预期进入 RX 和睡眠模式时、您的 TX 会怎么样? 您是否已验证接收器处于 RX 中时它实际上是在发送前导码?

    Siri.

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

    我已经测试了正常的 RX 和 TX。 这是工作正常的。。。

    我要将射频的 GPIO3配置为 LNA 信号、并在选通 SWOR 命令选通后、尝试读取 MCU 侧的相应 GPIO 是否为低电平以确认 RX 状态。 但它始终读数很高

    我正在检查 CRO 中的线路(GPIO3)、并且可以看到 LNA 信号在 EWOR 的 Rx 状态下为高电平、在 Rx 状态下为低电平。

    但我无法接收几个数据包。  

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

    您能否提供在接收器和发送器上运行代码时 SPI 总线和 GPIO 的一些逻辑分析仪图。

    下面是以38.4kbps 运行并启用 PQT 端接的监听模式示例。  

    发送器正在发送30字节长的前导码、这意味着无线电每5.85ms 应进入 RX、在搜索前导码时应停留在 RX 0.42ms。

    在接收器上、我设置 IOCFG3 = 0x59 (RX 时为高电平、否则为0)、而在 TX 上、我设置 IOCFG3 = 0x58 (TX 中为高电平、否则为0)

    您可以看到、接收器以预期的间隔进入 RX、并在无线传输中没有数据包时再次终止。

    一旦我发送了数据包(B1:PA 信号有效)、接收器将在唤醒(B2)后留在 RX 中、并保持该状态、直到发送器完成发送(C1)。

    请根据您的测试结果提供类似的曲线图以及您使用的寄存器设置。

    没有这个,我不知道发生了什么,为什么你没有收到任何东西。

    Siri.

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

    寄存器设置以.doc 文件的形式附加。  

    如下面的波形所示、我使用射频时、射频处于 PWD 模式的时间为1.5秒、处于 eWOR 模式的时间为150秒。 eWOR 被配置为具有 PQT 终端的监听模式。 射频配置为30字节 TX/Rx。 下面的图片是当没有数据包在空中的时候,为了你理解我的模型。

    /resized-image/__size/484x118/__key/communityserver-discussions-components-files/156/pastedimage1686121359599v2.png

    我正在使用 SMART RF 作为发送器,这是传输一个107字节的数据包带有30字节的前导码.. 电压。

    当我开始传输时、您可以在下面的文件中看到、RX 窗口会扩展、但不接收107个字节、我仅接收42个字节

    /resized-image/__size/320x240/__key/communityserver-discussions-components-files/156/pastedimage1686122170188v3.png

    如果您需要更多信息、请告诉我、可能会出现什么错误

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

    当以19.2kbps 的速率进行传输并传输30字节的前导码时、会发送前导码12.5ms。

    这意味着您需要在不到这个时间的时间内处于睡眠状态才能接收数据包。  

    此数据速率和前导码长度的监听模式设置和唤醒间隔可通过 SmartRF Studio 找到:

    // Address Config = No address check 
    // Bit Rate = 19.2 
    // Carrier Frequency = 867.915955 
    // Deviation = 54.931641 
    // Device Address = 0 
    // Manchester Enable = false 
    // Modulation Format = 2-GFSK 
    // Packet Bit Length = 0 
    // Packet Length = 255 
    // Packet Length Mode = Variable 
    // RX Filter BW = 208.333333 
    // Symbol rate = 19.2 
    // Whitening = false 
    // Rf settings for CC1200
    RF_SETTINGS code rfSettings = {
        0x06,  // IOCFG2              GPIO2 IO Pin Configuration
        0xA9,  // SYNC_CFG1           Sync Word Detection Configuration Reg. 1
        0x68,  // DEVIATION_M         Frequency Deviation Configuration
        0x0C,  // MODCFG_DEV_E        Modulation Format and Frequency Deviation Configur..
        0x8A,  // PREAMBLE_CFG0       Preamble Detection Configuration Reg. 0
        0x48,  // IQIC                Digital Image Channel Compensation Configuration
        0x82,  // CHAN_BW             Channel Filter Configuration
        0x42,  // MDMCFG1             General Modem Parameter Configuration Reg. 1
        0x05,  // MDMCFG0             General Modem Parameter Configuration Reg. 0
        0x7F,  // SYMBOL_RATE2        Symbol Rate Configuration Exponent and Mantissa [1..
        0x75,  // SYMBOL_RATE1        Symbol Rate Configuration Mantissa [15:8]
        0x10,  // SYMBOL_RATE0        Symbol Rate Configuration Mantissa [7:0]
        0x2A,  // AGC_REF             AGC Reference Level Configuration
        0xF7,  // AGC_CS_THR          Carrier Sense Threshold Configuration
        0x00,  // AGC_CFG1            Automatic Gain Control Configuration Reg. 1
        0x90,  // AGC_CFG0            Automatic Gain Control Configuration Reg. 0
        0x00,  // FIFO_CFG            FIFO Configuration
        0x03,  // SETTLING_CFG        Frequency Synthesizer Calibration and Settling Con..
        0x12,  // FS_CFG              Frequency Synthesizer Configuration
        0x20,  // WOR_CFG0            eWOR Configuration Reg. 0
        0x01,  // WOR_EVENT0_MSB      Event 0 Configuration MSB
        0xDB,  // WOR_EVENT0_LSB      Event 0 Configuration LSB
        0x00,  // PKT_CFG2            Packet Configuration Reg. 2
        0x20,  // PKT_CFG0            Packet Configuration Reg. 0
        0x0C,  // RFEND_CFG0          RFEND Configuration Reg. 0
        0x55,  // PA_CFG0             Power Amplifier Configuration Reg. 0
        0xFF,  // PKT_LEN             Packet Length Configuration
        0x1C,  // IF_MIX_CFG          IF Mix Configuration
        0x03,  // TOC_CFG             Timing Offset Correction Configuration
        0x02,  // MDMCFG2             General Modem Parameter Configuration Reg. 2
        0x56,  // FREQ2               Frequency Configuration [23:16]
        0xCA,  // FREQ1               Frequency Configuration [15:8]
        0xA6,  // FREQ0               Frequency Configuration [7:0]
        0xEE,  // IF_ADC1             Analog to Digital Converter Configuration Reg. 1
        0x10,  // IF_ADC0             Analog to Digital Converter Configuration Reg. 0
        0x07,  // FS_DIG1             Frequency Synthesizer Digital Reg. 1
        0xAF,  // FS_DIG0             Frequency Synthesizer Digital Reg. 0
        0x40,  // FS_CAL1             Frequency Synthesizer Calibration Reg. 1
        0x0E,  // FS_CAL0             Frequency Synthesizer Calibration Reg. 0
        0x03,  // FS_DIVTWO           Frequency Synthesizer Divide by 2
        0x33,  // FS_DSM0             FS Digital Synthesizer Module Configuration Reg. 0
        0x17,  // FS_DVC0             Frequency Synthesizer Divider Chain Configuration ..
        0x00,  // FS_PFD              Frequency Synthesizer Phase Frequency Detector Con..
        0x6E,  // FS_PRE              Frequency Synthesizer Prescaler Configuration
        0x1C,  // FS_REG_DIV_CML      Frequency Synthesizer Divider Regulator Configurat..
        0xAC,  // FS_SPARE            Frequency Synthesizer Spare
        0xB5,  // FS_VCO0             FS Voltage Controlled Oscillator Configuration Reg..
        0x09,  // IFAMP               Intermediate Frequency Amplifier Configuration
        0x0E,  // XOSC5               Crystal Oscillator Configuration Reg. 5
        0x03,  // XOSC1               Crystal Oscillator Configuration Reg. 1
    };

    不幸的是,你所附的图片的质量不足以让我看到必要的细节。

    Siri.

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

    我使用的寄存器设置与 Smart RF 相同、我还查阅了 TI Excel 工作表。 根据我的配置(30字节前导码、19.2Kbps 等)、我在上面提到的表格中提到了射频的睡眠和唤醒时间(~11ms 睡眠、~1ms 射频)

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

    抱歉,我误解了。 我想您的意思是、在进行嗅探时、无线电处于睡眠状态1.5秒、RX 处于150 ms。  您能否在图中也包括您的发送器、输出 PA_PD。

    我建议您将 PA 和 LNA 信号反转以获得可读性:-)  

    使用 IOCFG3 = 0x58且 IOCFG3 = 0x59

    Siri.

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

    是的,当然谢谢。 我反转了信号。

    下图是用于理解该模型的射频波形

    下面是150ms eWOR 窗口的放大图像

    下图是有107个字节的数据包从智能射频传输的时候、但您可以看到、射频 RX 窗口关闭、我仅接收42个字节或更少的数据包

    还有,添加到它。 如果我执行硬复位.. 我能够接收数据包一段时间.. 然后、我又无法接收

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

    因为我没有你的代码,很难判断发生了什么,我无法重现你看到的问题。

    此外、与 SmartRF Studio 建议的设置相比、您正在使用许多不同的寄存器设置、我不知道为什么要这样做。

    我使用了 Smart RF Studio 推荐的19.2kbps 设置、按照您所做的那样更改同步字、偏差、频率和 BW、并将其配置为传输107字节长、30字节长的数据包可预发布:

    在 RX 端、我使用了网络上的默认监听模式示例、采用了由 SmartRF Studio 生成的以下设置:

    // Address Config = No address check 
    // Bit Rate = 19.2 
    // Carrier Frequency = 915.999756 
    // Deviation = 54.931641 
    // Device Address = 0 
    // Manchester Enable = false 
    // Modulation Format = 2-GFSK 
    // Packet Bit Length = 0 
    // Packet Length = 255 
    // Packet Length Mode = Variable 
    // RX Filter BW = 208.333333 
    // Symbol rate = 19.2 
    // Whitening = false 
    
    static const registerSetting_t preferredSettings[]= 
    {
      {CC120X_IOCFG3,            0x58},
      {CC120X_IOCFG2,            0x06},
      
      {CC120X_SYNC3,             0xF0},
      {CC120X_SYNC2,             0xCC},
      {CC120X_SYNC1,             0xF0},
      {CC120X_SYNC0,             0xCC},
      {CC120X_SYNC_CFG1,         0xA9},
      {CC120X_DEVIATION_M,       0x68},
      {CC120X_MODCFG_DEV_E,      0x0C},
      {CC120X_PREAMBLE_CFG0,     0x8A},
      {CC120X_IQIC,              0x48},
      {CC120X_CHAN_BW,           0x82},
      {CC120X_MDMCFG1,           0x42},
      {CC120X_MDMCFG0,           0x05},
      {CC120X_SYMBOL_RATE2,      0x7F},
      {CC120X_SYMBOL_RATE1,      0x75},
      {CC120X_SYMBOL_RATE0,      0x10},
      {CC120X_AGC_REF,           0x2A},
      {CC120X_AGC_CS_THR,        0xF7},
      {CC120X_AGC_CFG1,          0x00},
      {CC120X_AGC_CFG0,          0x90},
      {CC120X_FIFO_CFG,          0x00},
      {CC120X_SETTLING_CFG,      0x03},
      {CC120X_FS_CFG,            0x12},
      {CC120X_WOR_CFG0,          0x20},
      {CC120X_WOR_EVENT0_MSB,    0x01},
      {CC120X_WOR_EVENT0_LSB,    0xDB},
      {CC120X_PKT_CFG2,          0x00},
      {CC120X_PKT_CFG0,          0x20},
      {CC120X_RFEND_CFG0,        0x0C},
      {CC120X_PA_CFG0,           0x55},
      {CC120X_PKT_LEN,           0xFF},
      {CC120X_IF_MIX_CFG,        0x1C},
      {CC120X_TOC_CFG,           0x03},
      {CC120X_MDMCFG2,           0x02},
      {CC120X_FREQ2,             0x5B},
      {CC120X_FREQ1,             0x99},
      {CC120X_FREQ0,             0x98},
      {CC120X_IF_ADC1,           0xEE},
      {CC120X_IF_ADC0,           0x10},
      {CC120X_FS_DIG1,           0x07},
      {CC120X_FS_DIG0,           0xAF},
      {CC120X_FS_CAL1,           0x40},
      {CC120X_FS_CAL0,           0x0E},
      {CC120X_FS_DIVTWO,         0x03},
      {CC120X_FS_DSM0,           0x33},
      {CC120X_FS_DVC0,           0x17},
      {CC120X_FS_PFD,            0x00},
      {CC120X_FS_PRE,            0x6E},
      {CC120X_FS_REG_DIV_CML,    0x1C},
      {CC120X_FS_SPARE,          0xAC},
      {CC120X_FS_VCO0,           0xB5},
      {CC120X_IFAMP,             0x09},
      {CC120X_XOSC5,             0x0E},
      {CC120X_XOSC1,             0x03},
      {CC120X_PARTNUMBER,        0x20},
      {CC120X_PARTVERSION,       0x11},
      {CC120X_MODEM_STATUS1,     0x10},
    };

    从下图中可以看到、所有数据包都正常接收(TX 在顶部、RX 在下方)

    您应该从我提供的默认示例和设置开始、然后使其按预期工作。

    完成该操作后、您可以开始更改寄存器(如有必要)并实现1.5s 睡眠等

    Siri.