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.

WOR broken on version 0x14 parts

Other Parts Discussed in Thread: CC1101

Hi. I have an application that works perfectly on version 0x04 parts, but on version 0x14 it constantly wakes up spuriously under certain conditions. The code is the same in both cases.

FSCTRL1:        0x06
FSCTRL0:        0x00
FREQ2:          0x23
FREQ1:          0x31
FREQ0:          0x3B
MDMCFG4:        0xCA
MDMCFG3:        0x83
MDMCFG2:        0x13
MDMCFG1:        0x22
MDMCFG0:        0xF8
DEVIATN:        0x35
MCSM0:          0x18
FOCCFG:         0x16
BSCFG:          0x6C
AGCCTRL2:       0x43
AGCCTRL1:       0x40
AGCCTRL0:       0x91
FREND1:         0x56
FREND0:         0x10
FSCAL3:         0xE9
FSCAL2:         0x2A
FSCAL1:         0x00
FSCAL0:         0x1F
TEST2:          0x81
TEST1:          0x35
TEST0:          0x09

	rf_write_reg(RF_IOCFG2, 0x06);		// assert when sync word received
	rf_write_reg(RF_PKTCTRL0, 0b00000010);			// infinite packet length, no whitening
	rf_write_reg(RF_SYNC0, CFG_radio_config_cache.wakeup_sync_word & 0xFF);
	rf_write_reg(RF_SYNC1, (CFG_radio_config_cache.wakeup_sync_word >> 8) & 0xFF);

	// 2s polling
	rf_write_reg(RF_WORCTRL, 0b01111001);			// enable RC oscillator
	rf_write_reg(RF_WOREVT1, 0x08);					// 2s, WOR_RES = 1
	rf_write_reg(RF_WOREVT0, 0x76);
	rf_write_reg(RF_PKTCTRL1, 0b00000000);			// PQT = 0 (since we are not sending the preamble, but rather the sync word)
	rf_write_reg(RF_MCSM2, 0b00000100);				// RX_TIME_QUAL = 1, RX_TIME

	rf_strobe_reg(RF_SWOR);

The wake-up signal is just the sync word repeated over and over for two seconds.

The code seems to work okay under some circumstances and then not under others with the problematic radios. I'm trying to identify the sequence of commands that cause it to get into this state.

  • Sorry, I meant we are sending the sync word over and over, not the preamble.
  • On further investigation I have determined that the new 0x14 revision is picking up spurious sync words. The old ones don't do it, the new ones do. Same circuit, same PCB, same firmware. The new version appears to be more suitable to noise, or perhaps just has buggy firmware.

    If I drop the WOR on time down the number of spurious wake-ups decreases, but unfortunately the level below which they stop also makes the radio miss the real wake-up signal.
  • A further issue is that the behaviour of the GPIOs has changed when coming out of WOR mode by switching to IDLE mode.
  • - Please write which chip you are working with next time. Based on the registers I assume CC1101.

    - The change from version 0x04 and 0x14 is just a different packet and does not impact RF performance.

    - Do you see this if you have a 0x04 and 0x14 based device on at the same time?

    For CC1101 you will get false sync from time to time since it's a finite chance of finding the sync word in noise.

  • Sorry, I can confirm that it is the CC1101. I'm using an Anaran module if it makes any difference.

    You say that there is no difference between revisions other than the package, but the GPIOs definitely behave differently. Now I have accounted for that and cancelled the spurious interrupts everything works again.