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:如何在 Strobe PWD 后唤醒 CC1200

Guru**** 2387060 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/1454369/cc1200-how-to-awake-cc1200-after-strobe-pwd

器件型号:CC1200

工具与软件:

如何在 Strobe PWD 后唤醒我的 cc1200?

在《用户指南》中、将 CSN 拉低。 但它无法正常工作。

如果我执行"reset" Strobe、cc1200将被唤醒。 但使用"空闲"选通时、cc1200仍处于休眠状态。

有人能解释一下、如何在没有复位的情况下唤醒 cc1200吗?

此致  

Marco

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

    尊敬的 Marco:

    您可以在用户指南中看到、SPWD 的行为与 SRES 略有不同。

    这意味着要使器件进入休眠状态、必须将 CSn 拉至高电平。

    此致、

    Arthur

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

    若要再次唤醒 CSn、应再次将 CSn 拉低并发送空闲选通:

    当 SIDLE 命令未能唤醒设备时、您是否观察到设备的任何反应?

    此致、

    Arthur

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

    尊敬的 Arthur:
    感谢您的答复。

    我做了如下:

    GoToSleep:

    1. CS = LOW

    2.选通 SPWD

    3. CS = HIGH

    --->缝隙工作良好

    唤醒:

    1. CS = LOW

    2.选通空闲

    3. CS = HIGH

    --> CC1200仍处于睡眠模式

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

    尊敬的 Arthur:
    我得到了新的暗示。  

    是否必须在休眠之前激活 RCOSC?

    这似乎是解决办法

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

    只有在使用 eWOR 模式时似乎才是如此:

    但是从我在这里看到的内容来看、实际上不需要发送空闲选通:

    可以直接拉低 CSn 来尝试吗?

    此致、

    Arthur

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

    您好、Arthur、

    首先,我祝愿新年快乐。

    关于您的最后一个答案。  
    -->我理解 UsersGudie 中的条目与您一样,这只对 eWor 模式是必需的。 但是、 如果未激活 RCOS、它仍然无法工作。

    第二、 您是对的、空闲选通不是必需的。 CSn = 0就足够了。

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

    要将器件置于睡眠状态、您应该发出 SPWD 选通。 当 CSN 再次拉至高电平后、器件将进入睡眠状态。

    要退出睡眠模式、只需将 CSn 拉至低电平即可。

    您如何测试此视频并知道自己没有被唤醒?

    一个简单的测试是配置其中一个 GPIO 以输出 EXT_CLOCK (IOCFGx = 49)。

    当器件处于唤醒状态(IDLE 或 RX/TX)时、时钟将运行、而当器件处于睡眠状态时、时钟将不运行。

    之后可以进行一个简单的测试、首先使用 SPWD 选通将接收器置于 SLEEP 模式、然后再次将其唤醒并将 CSn 拉至低电平。

    使用逻辑分析仪将如下所示:

    放大 SPWD 可以看到、CSn 拉高后时钟停止

    通过拉低 CSN 来唤醒器件。 再次将其拉高只是因为在不导致 SPI 上的任何内容粗化时、它应该很高。

    您将看到 MISO 在唤醒器件后变为高电平、表示芯片尚未准备就绪。 芯片准备就绪后、MISO 再次被拉高

    (MISO 显示 CHIP_RDYn 信号、该信号必须在 SCLK 的第一个正边沿之前变为低电平。 CHIP_RDYn 信号表示晶体稳定)

    芯片唤醒后、再次输出 EXT_CLOCK

    Siri

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

    尊敬的 Siri:

    非常感谢您的响应。

    我做了所描述的测试,我看到,问题不是唤醒,问题是要睡觉。

    发出选通 SPWD 并再次将 CSn 拉至高电平后、cc1200仍会生成 EXT 时钟输出。
    -->但 MARC_2PIN_STATUS 从空闲变为稳定

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

     当您尝试将器件置于睡眠模式时、请向我展示完整 SPI 总线+ EXT 时钟信号的 SPI 图。

    BR

    Siri

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

    请查看随附的 SPI 图。


    D0 = TP (不相关)
    D1 = CSN
    D2 =时钟
    D3 = MISO
    D4 = MOSI
    D5 = EXT_CLOCK

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

    SPI 图看起来正常(EXT_CLOCK 不会停止)(它不会立即停止、因此请确保在将 CSn 拉至高电平后监视信号:

    我可以认为这可能导致这种情况。

    1)您的 SPI 不符合规格。 遇到 freq.cc1200 /rise-time/hold-time 等时、不会"理解"该 commnad

    2) 2)器件处于另一种状态、当您发出 SPWD 状态时该状态空闲。 您只能从空闲状态进入睡眠状态

    对于后者、请确保在发出 SPWD 选通脉冲之前遍历空闲(并清空 FIFO)。

    此外、您是在我们的 EM 边界上测试此项、还是制作了您自己的定制硬件?

    Siri

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

    EXT_CLOCK 未停止、我之前已经进行了测试。 我知道、只能从空闲状态进入睡眠状态、因此我在发出选通脉冲之前也进行了检查。

    我有一个自己的设计,这是工作的阴场作业与 eWor 选项。
    但现在我想从 eWor 更改为睡眠(从 MCU 而不是其他无线电芯片唤醒)。

    如果我启用 RCOSC (WOR_CFG0.RC_PD = 0)、也可以使用睡眠模式、但无论如何、我认为这应该不是必需的、并且会增加功耗。

    Marco

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

    我已经测试了设置为0和1的 RC_PD、并且行为没有差异。

    您能否共享您正在使用的寄存器设置?  

    您是否通过任何通道 将 XOSC_CORE_PD_OVERRIDE 设置为1?

    在制作自己的硬件时、您遵循了 TI 的哪种参考设计?

    Siri

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

    我有以下寄存器设置:

    SYNC_CFG1 = 0x48
    SYNC_CFG0 = 0x13
    DERATION_M = 0x99
    MODCG_DEV_E = 0x0D
    DCFILT_CFG = 0x26
    Preamble_CFG1 = 0x18
    IQIC = 0x00
    CHAN_BW = 0x02
    MDMCFG2 = 0x00
    MDMCFG1 = 0x42
    MDMCFG0 = 0x05
    symbol_Rate2 = 0xCE
    symbol_rate1 = 0xB8
    symbol_RATE0 = 0x52
    AGC_REF = 0x30
    AGC_GAIN_ADJUST = 0x92
    AGC_CS_THR = 0xEC
    AGC_CFG2 = 0x20
    AGC_CFG1 = 0x16
    AGC_CFG0 = 0x84
    FIFO_CFG = 0x8A
    DEV_ADDR = 0x11
    SETTLING_CFG = 0x03
    FS_CFG = 0x14
    WOR_CFG1 = 0x08
    WOR_CFG0 = 0x25
    WOR_EVENT0_MSB = 0x00
    WOR_EVENT0_LSB = 0x20
    Pkt_CFG2 = 0x00
    Pkt_CFG1 = 0x5B
    Pkt_CFG0 = 0x20
    RFEND_CFG1 = 0x00
    RFEND_CFG0 = 0x30
    PA_CFG1 = 0x7F
    PA_CFG0 = 0x50
    Pkt_LEN = 0xFF
    IF_MIX_CFG = 0x18
    TOC_CFG = 0x03
    FREQ2 = 0x59
    FREQ1 = 0xC9
    FREQ0 = 0xBA
    IF_ADC1 = 0xEE
    IF_ADC0 = 0x10
    FS_DIG1 = 0x04
    FS_DIG0 = 0x58
    FS_CAL1 = 0x40
    FS_CAL0 = 0x0E
    FS_DIVTWO = 0x03
    FS_DSM0 = 0x33
    FS_DVC1 = 0xF7
    FS_DVC0 = 0x0F
    FS_PFD = 0x00
    FS_PRE、0x6E);
    FS_REG_DIV_CML = 0x1C;
    FS_SPARE = 0xAC
    FS_VCO0 = 0xB5
    IFAMP = 0x0D
    XOSC5 = 0x0E
    XOSC1 = 0x03

    否未设置 XOSC_CORE_PD_OVERRIDE = 1

    关于设计、我不能告诉您一些事情、这是一位硬件设计师做的。 我们使用40MHz 振荡器、3、3V VCC、SPI 作为 MCU 接口

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

    我唯一可以确认的是您遇到的问题与寄存器设置无关。

    我在 CC1200 (EM 板)上运行了以下简单代码:

    void main(void) {
    
        // Initialize MCU and peripherals
        initMCU();
    
        // Reset the radio (SRES) and write radio registers
        registerConfig();
        
        waitUs(300); // Delay to make it easier to see on the Logic Analyzer when config is done
    
        trxSpiCmdStrobe(CC120X_SPWD);
        
        waitUs(300); // Stay in SLEEP for 300 us
        
        // Wake up the radio
        TRXEM_SPI_BEGIN(); // CSn Low
    
        TRXEM_SPI_END(); // CSn High
        
        while(1);
    }

    其中 registerConfig 首先发出一个 SRES 选通脉冲、然后写入以下寄存器:

    static const registerSetting_t preferredSettings[]= {
      {CC120X_IOCFG2,           49}, // Debug signal to monitor EXT_CLOCK
      {CC120X_SYNC_CFG1,		0x48},
      {CC120X_SYNC_CFG0, 		0x13},
      {CC120X_DEVIATION_M, 		0x99},
      {CC120X_MODCFG_DEV_E, 	0x0D},
      {CC120X_DCFILT_CFG, 		0x26},
      {CC120X_PREAMBLE_CFG1, 	0x18},
      {CC120X_IQIC, 		    0x00},
      {CC120X_CHAN_BW, 		    0x02},
      {CC120X_MDMCFG2,		    0x00},
      {CC120X_MDMCFG1, 		    0x42},
      {CC120X_MDMCFG0,		    0x05},
      {CC120X_SYMBOL_RATE2, 	0xCE},
      {CC120X_SYMBOL_RATE1, 	0xB8},
      {CC120X_SYMBOL_RATE0, 	0x52},
      {CC120X_AGC_REF, 		    0x30},
      {CC120X_AGC_GAIN_ADJUST, 	0x92},
      {CC120X_AGC_CS_THR, 		0xEC},
      {CC120X_AGC_CFG2, 		0x20},
      {CC120X_AGC_CFG1,		    0x16},
      {CC120X_AGC_CFG0, 		0x84},
      {CC120X_FIFO_CFG, 		0x8A},
      {CC120X_DEV_ADDR, 		0x11},
      {CC120X_SETTLING_CFG, 	0x03},
      {CC120X_FS_CFG, 		    0x14},
      {CC120X_WOR_CFG1, 		0x08},
      {CC120X_WOR_CFG0, 		0x25},
      {CC120X_WOR_EVENT0_MSB, 	0x00},
      {CC120X_WOR_EVENT0_LSB, 	0x20},
      {CC120X_PKT_CFG2, 		0x00},
      {CC120X_PKT_CFG1, 		0x5B},
      {CC120X_PKT_CFG0, 	    0x20},
      {CC120X_RFEND_CFG1, 		0x00},
      {CC120X_RFEND_CFG0, 		0x30},
      {CC120X_PA_CFG1, 		    0x7F},
      {CC120X_PA_CFG0, 		    0x50},
      {CC120X_PKT_LEN, 		    0xFF},
      {CC120X_IF_MIX_CFG, 		0x18},
      {CC120X_TOC_CFG, 		    0x03},
      {CC120X_FREQ2, 		    0x59},
      {CC120X_FREQ1,		    0xC9},
      {CC120X_FREQ0, 		    0xBA},
      {CC120X_IF_ADC1, 		    0xEE},
      {CC120X_IF_ADC0, 		    0x10},
      {CC120X_FS_DIG1, 		    0x04},
      {CC120X_FS_DIG0, 	        0x58},
      {CC120X_FS_CAL1, 		    0x40},
      {CC120X_FS_CAL0, 		    0x0E},
      {CC120X_FS_DIVTWO, 		0x03},
      {CC120X_FS_DSM0, 		    0x33},
      {CC120X_FS_DVC1, 		    0xF7},
      {CC120X_FS_DVC0, 		    0x0F},
      {CC120X_FS_PFD, 		    0x00},
      {CC120X_FS_PRE,		    0x6E},
      {CC120X_FS_REG_DIV_CML, 	0x1C},
      {CC120X_FS_SPARE, 		0xAC},
      {CC120X_FS_VCO0, 		    0xB5},
      {CC120X_IFAMP, 		    0x0D},
      {CC120X_XOSC5, 		    0x0E},
      {CC120X_XOSC1, 		    0x03},
    };

    在逻辑分析仪上、该图如下所示:

    如果您无法使用完全相同的测试重现此问题、则可能意味着存在这两种情况

    1) 1)您的 SPI 不符合规范(是否检查了所有参数?)

    2) 2)、硬件设计存在差异

    对于后者、您将需要为我们提供设计的原理图等。

    Siri

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

    尊敬的 Siri:

    非常感谢、
    我会在几天内再次检查并回复您。