工具与软件:
如何在 Strobe PWD 后唤醒我的 cc1200?
在《用户指南》中、将 CSN 拉低。 但它无法正常工作。
如果我执行"reset" Strobe、cc1200将被唤醒。 但使用"空闲"选通时、cc1200仍处于休眠状态。
有人能解释一下、如何在没有复位的情况下唤醒 cc1200吗?
此致
Marco
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.
要将器件置于睡眠状态、您应该发出 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
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
我有以下寄存器设置:
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