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.

[参考译文] CC1121:不同步时终止的智能前导码

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1169292/cc1121-smart-preamble-with-termination-on-no-sync

器件型号:CC1121

大家好、我希望有人能帮助我指出我所面临的问题的正确方向。  

在我的应用中、我有一个 TXS 1106字节使用无限 TX 模式的 TX、该 TX 实际上由多个小数据包组成(如智能前导码示例)。  

我还有一个电池供电 的 Rx'er、它使用 EWOR 监听模式来检测此传输。 这一切正常。。。 我可以正确地进行 TX 和 RX。  

我的问题是、在测试过程中、我激活了一个静态载波(在另一台设备上)、并注意到载波处于激活状态时、RX'er 保持在 RX 模式。

这是不可接受的、因为电池很快就会耗尽。  

在 EWOR 监听模式下、如果在有限的一段时间后未检测到同步、是否有任何方法可以自动关闭 Rx'er?  

这是我的 EWOR 监听模式配置函数  

@brief	
@param[in]
@return					
*/
void rf_radio_ewor_enable(void)
{
	uint8_t reg;

	rf_radio_idle();

	// PKT_CRC_OK (Inverted), Asserted when good packet Rx'd (passed CRC check), deasserted on entry to RX
	rf_spi_write_reg(CC112X_IOCFG0, 0x53);

	// Set Sync word Byte 1 & 0
	// Sync Word Detection Configuration Reg1, 16 bits [SYNC15_8: SYNC7_0], SYNC_NUM_ERROR = 11b [Bit error qualifier disabled. No check on bit errors]
	rf_spi_write_reg(CC112X_SYNC1, 		0xB3);
	rf_spi_write_reg(CC112X_SYNC0, 		0x0D);
	rf_spi_write_reg(CC112X_SYNC_CFG0, 	0x0B);

	// Carrier Sense Threshold Configuration, Threshold = -100DBM
	// Automatic Gain Control Configuration Reg3, RSSI threshold is 3 dB
	// Automatic Gain Control Configuration Reg1, 8 sample AGC integration window, Wait time between AGC gain adjustments = 24 samples
	rf_spi_write_reg(CC112X_AGC_CS_THR, 0x02); 
	rf_spi_write_reg(CC112X_AGC_CFG3, 	0x11);
	rf_spi_write_reg(CC112X_AGC_CFG1, 	0xA0);

	// eWOR Configuration Reg0, Event 2 timeout disabled, RCOSC calibration disabled, RCOSC is running
	// eWOR Event 0 Configuration MSB. event 0 timeout, Tevent0 = 441.7582418 mSecs  (assumes only 1106bits TX'd for margin)
	// eWOR Event 0 Configuration LSB. event 0 timeout, Tevent0 = 441.7582418 mSecs (assumes only 1106bits TX'd for margin)
	rf_spi_write_reg(CC112X_WOR_CFG0,			0x20);
	rf_spi_write_reg(CC112X_WOR_EVENT0_MSB, 	0x37);
	rf_spi_write_reg(CC112X_WOR_EVENT0_LSB, 	0x38);

	// RFEND Configuration Reg1, Continue RX mode on RX timeout if sync word is found
	// RFEND Configuration Reg0, Terminate on bad packet enabled, RX termination based on CS is enabled 
	rf_spi_write_reg(CC112X_RFEND_CFG1, 		0x0E);
	rf_spi_write_reg(CC112X_RFEND_CFG0, 		0x09);

	// Packet Length Configuration, max length = 125
	rf_spi_write_reg(CC112X_PKT_LEN, 0x7D);

	// Crystal Oscillator Configuration2, The XOSC will be turned off if the SXOFF, SPWD, or SWOR command strobes are issued
	rf_spi_write_reg(CC112X_XOSC2, 	 0x00);

	// calibrate internal 32khz OSC
	// enable RC calibration
 	reg = rf_spi_read_reg(CC112X_WOR_CFG0);

    // Enable ROSC calibration 
	reg &= ~RF_RCOSC_CALIBRATE_MASK;
	reg |= RF_RCOSC_CALIBRATE_ENABLED;
	rf_spi_write_reg(CC112X_WOR_CFG0, reg);

	// must strobe idle to calibrate
	rf_radio_strobe_idle_and_wait();

	// disable RC calibration,
	// NB must issue the SWOR as next strobe command after disabling calibration
	reg &= ~RF_RCOSC_CALIBRATE_MASK;
	rf_spi_write_reg(CC112X_WOR_CFG0, reg);

	// Enable RX Sniff Mode
	rf_spi_command_strobe(SWOR);

	// enable GDO0 interrupt
	hal_radio_irq_clear();
	hal_radio_irq_enable();
	g_radio.ewor_enabled = true;
	g_radio.event_mask = false;	
}

此致

Trevor

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

    你(们)好、Trevor

    恐怕这是不容易解决的。 请查看 https://www.ti.com/lit/an/swra428中的"RX 超时"一章 以了解相关说明。

    由于您不能有 RX 超时、只要有载波(RSSI 高于阈值)和/或前导码、您就将保持在 RX 中。

    在许多情况下、添加前导码终止将使系统更加稳健、因为它需要具有特定信号强度的前导码才能继续 RX。

    在具有正常前导码而不是智能前导码的实现中、可以使用这种方法、因为无线电将在前导码内的某个位置唤醒。

    使用智能前导码时、您可能会在时间戳数据包的有效负载部分唤醒、然后您不想退出、而是保持 RX 状态、直到您接收到下一个时间戳数据包的同步。

    因此、您只能具有 RX 的 CS 终端、您需要在 MCU 上实施一些代码来监控无线电处于 RX 中的时间。

    Siri

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

    您好、Siri、

    我想了、但希望我错过了一些东西  

    谢谢  

    Trevor