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:嗅探模式

Guru**** 2540720 points
Other Parts Discussed in Thread: CC1200, CC1190, CC1120

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/664543/cc1200-sniff-mode

部件号:CC1200
主题中讨论的其他部件: CC1190CC1120

您好,

我正在将C1200与MSP432 CPU配合使用,我想使用嗅探模式。

我将解释如何使用它,我想听听是否可能有概念。

首先,我的数据包必须处于无限模式,因为我发送的数据包大于RX FIFO缓冲区。 我不使用CRC。  

这是CC1200 RX和TX的配置:

载波频率:869.52.5024万 MHz

RXFilter BW:10.96.4912万kHz

调制格式:4GFSK

符号率:0.25 ksps.

偏差:3.98.6359万kHz

PA斜坡和美白功能已启用

使用CC1190范围扩展器,因此TX功率为27dBm,禁用高增益模式(RX)

已启用病变检测并启用LBT

CRC和附加状态已禁用。 由于数据包的长度是可变的,并且可能大于FIFO缓冲区,而且我们使用的是Reed-Solomon,因此CRC被禁用。


下面是使用RFStudio进行的注册配置,但做了一些小改动:

const cc1200Register_s cc1200_speed0Config[]=
{
	{CC1200_address_IOCFG3, 		0x33},
	{CC1200_address_IOCFG2, 		0x33},
	{CC1200_address_IOCFG1, 		0x33},
	{CC1200_address_IOCFG0, 		0x33},
	{CC1200_address_SYNC3, 0x93},
	{CC1200_address_SYNC2, 0x0B},
	{CC1200_address_SYNC1, 0x51},
	{CC1200_address_SYNC0, 0xDE},
	{CC1200_address_sync_CFG1, 0xA8},
	{CC1200_address_sync_CFG0, 0x03},
	{CC1200_address_deviation _M, 0xD1},
	{CC1200_address_MODCFG_DEP_E, 0x28},
	{CC1200_address_DCFILT_CFG, 0x5D},
	{CC1200_address_Preamber_CFG1, 0x34},
	{CC1200_address_Preamber_CFG0, 0x8A},
	{CC1200_address_IQIC, 0xCB},
	{CC1200_address_chan_bw, 0xA6},
	{CC1200_address_MDMMCFG1, 0x48},
	{CC1200_address_MDMCFG0, 0x05},
	{CC1200_address_symbol_Rate2, 0x1A},
	{CC1200_address_symbol_rate1, 0x36},
	{CC1200_address_symbol_RATE0, 0xE2},
	{CC1200_address_AGC_REF, 0x20},
	{CC1200_address_AGC_CS_thr, 0x0E},
	{CC1200_address_AGC_Gain _adjust,0x00},
	{CC1200_address_AGC_CFG3, 0xB1},
	{CC1200_address_AGC_CFG2, 0x20},
	{CC1200_address_AGC_CFG1, 0x40},
	{CC1200_address_AGC_CFG0, 0x83},
	{CC1200_address_FIFO,CFG 0x00},
	{CC1200_address_dev_ADDR, 0x00},
	{CC1200_address_sending_CFG, 0x03},
	{CC1200_address_FS_CFG, 0x12},
	{CC1200_address_WOR_CFG1, 0x08},
	{CC1200_address_WOR_CFG0, 0x20},
	{CC1200_address_WOR_EVENT0_MSB, 0x93},
	{CC1200_address_WOR_EVENT0_LSB, 0x5A},
	{CC1200_address_RXDCM_time, 0x00},
	{CC1200_address_PKT_CFG2, 0x10},
	{CC1200_address_PKT_CFG1, 0x40},
	{CC1200_address_PKT_CFG0, 0x40},
	{CC1200_address_RFEND_CFG1, 0x0F},
	{CC1200_address_RFEND_CFG0, 0x01},
	{CC1200_address_PA_CFG1, 0x77},
	{CC1200_address_PA_CFG0, 0x56},
	{CC1200_address_ASK_CFG, 0x0F},
	{CC1200_address_PKT_LEN, 0x1E},
	{CC1200_address_if_mix _CFG, 0x1C},
	{CC1200_address_FREQOFF _CFG, 0x22},
	{CC1200_address_TOC_CFG, 0x0B},
	{CC1200_address_marc_spare, 0x00},
	{CC1200_address_ECG_CFG, 0x00},
	{CC1200_address_MDMCFG2, 0x0C},
	{CC1200_address_EXT_CTRL, 0x01},
	{CC1200_address_RCCAL_Fine, 0x00},
	{CC1200_address_RCCAL_gr粗糙, 0x00},
	{CC1200_address_RCCAL_offset, 0x00},
	{CC1200_address_FREQOFF1, 0x00},
	{CC1200_address_FREQOFF0, 0x00},
	{CC1200_address_FREQ2, 0x56},
	{CC1200_address_FREQ1, 0xF3},
	{CC1200_address_FREQ0, 0xD7},
	{CC1200_address_if_ADC2, 0x02},
	{CC1200_address_if_ADC1, 0xEE},
	{CC1200_address_if_ADC0, 0x10},
	{CC1200_address_FS_DIG1, 0x07},
	{CC1200_address_FS_DIG0, 0xAF},
	{CC1200_address_FS_CAL3, 0x00},
	{CC1200_address_FS_CAL2, 0x20},
	{CC1200_address_FS_CAL1, 0x40},
	{CC1200_address_fs_cal0, 0x0E},
	{CC1200_address_FS_CHP, 0x28},
	{CC1200_address_FS_DIVTWO, 0x03},
	{CC1200_address_FS_DSM1, 0x02},
	{CC1200_address_FS_DSM0, 0x33},
	{CC1200_address_FS_DVC1, 0xF3},
	{CC1200_address_FS_DVC0, 0x13},
	{CC1200_address_FS_LBI, 0x00},
	{CC1200_address_FS_PFD, 0x00},
	{CC1200_address_fs_pre, 0x6E},
	{CC1200_address_FS_REG_DIV_CML, 0x1C},
	{CC1200_address_fs_spare, 0xAC},
	{CC1200_address_FS_VCO4, 0x14},
	{CC1200_address_FS_VCO3, 0x00},
	{CC1200_address_FS_VCO2, 0x00},
	{CC1200_address_FS_VCO1, 0x00},
	{CC1200_address_FS_VCO0, 0xB8},
	{CC1200_address_GBIAS6, 0x00},
	{CC1200_address_GBIAS5, 0x02},
	{CC1200_address_GBIAS4, 0x00},
	{CC1200_address_GBIAS3, 0x00},
	{CC1200_address_GBIAS2, 0x10},
	{CC1200_address_GBIAS1, 0x00},
	{CC1200_address_GBIAS0, 0x00},
	{CC1200_address_IFAMP, 0x01},
	{CC1200_address_LNA, 0x01},
	{CC1200_address_RXMIX, 0x01},
	{CC1200_address_XOSC5, 0x0E},
	{CC1200_address_XOSC4, 0xA0},
	{CC1200_address_XOSC3, 0x03},
	{CC1200_address_XOSC2, 0x04},
	{CC1200_address_XOSC1, 0x01},
	{CC1200_address_XOSC0, 0x00},
	{CC1200_address_analog_spare, 0x00},
	{CC1200_address_PA_CFG3, 0x00},
; 

首先,GPIO为HW到0,但当接收消息  时,当FIFO溢出 时,IO0为1,当FIFO填充到给定阈值时,IO2为1,当传输类似但对该问题不重要的消息时,IO2为1。

因此,建议采用基于CS RX终端的嗅探模式(具有无穷大数据包长度),当C1200接收到一定数量的字节时 ,IO2唤醒CPU和带DMA的CPU读取FIFO检查是否已接收到数据包(检查消息长度) 如果不是,它将进入休眠状态并等待IO2触发的另一个中断。 在收到消息之后,C1200被再次发送到嗅探之前,一直如此

是否因为我没有使用CRC或其他内容而出现任何问题? 我假设sniff接下来执行以下操作:唤醒CC1200检查载波传感器,如果有载波,它检查同步字(顺便说一下是32位),然后开始接收数据包。

我正在询问此概念是否可行,因为我不会收到任何消息,并且我不明白为什么它不起作用,因为我使用RFStudio,并且我导出寄存器状态时进行了一些小更改(CRC禁用,追加状态禁用,无穷大数据包长度,LBT启用,冲突启用)。 当我通过将RFEND_CFG0更改为0x00禁用sniff时,它接收到消息但不一致(我猜是因为WOR控制寄存器)。 这是我的第二个问题。  

当使用嗅探模式和RFStudio显示TRx时,Twakeup和Tsleep分别为时间间隔RXTimeout,Tevent1和(Tevent0-Tevent1-RXTimeout),或为通过嗅探算法提供的某些特殊功能所提供的时间间隔。 我提出这一问题是因为:

TRx = 1.969毫秒

通过唤醒= 0.4335ms

Tsleep = 940.648ms  

我从具有上述配置的RFStdion中获得的配置已填充,我看不到能够实现此时间的寄存器配置。 当激活嗅探模式时,C1200甚至使用此相应的寄存器(REFEND_CFG0,WOR_CFG1/0和WOR_EVENT0_MSB/LSB),因为例如对于Twakeup, WOR_EVENT1应该是17.34 (由于其分次编号已不可能),并且没有17的配置。 您可以在 WOR_CFG1中看到(以上),EVENT1设置为4 (000b)。 如果我计算的是Wright (frosc = 40kHz) Twakeup = 1毫秒。

附注:在NDA下不能发布任何代码

此致,

Ugljesa。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    -您写的是您的数据包比FIFO长。 是有效载荷还是前导码+有效载荷长于FIFO。 这两种方法都不会限制您不使用CRC。

    在您一次性完成所有操作之前,我会尝试测试您设置的每个部分。
    ->使用SmartRF Studio等工具使用20字节数据包测试RX设置。 由于您使用10 kHz RX BW,我假设您使用的TCXO非常精确,能够达到所需的频率精度。
    ->使用默认设置测试无限模式。 我假设您已经看过CC1120/CC1200的1200的代码示例。
    ->测试嗅探模式。

    当所有零件都按您的需要工作时,您可以开始组合它们。

    我假设您已经查看 了www.ti.com/.../swra428a.pdf 和此AppNote中链接到的Excel工作表,以及如何计算事件时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    还没有看到过那份文件... 谢谢。
    前导码是30字节,因此其前导码+有效载荷可以说比FIFO长。 它取决于各种因素,但这并不重要。 我可以说,在连续的时候,所有的东西都能正常工作。 我的同事在为射频模块开发此软件已有半年,现在他离开了,我一直在继续开发。 我现在看到他因为电流消耗而没有很好地嗅探,并且修复了一些配置方面的风险,降低了电流消耗,但失去了接收消息的一致性,所以现在我正在寻找我的风险:D. 您可以说,我对射频方面的知识非常新,尽管我在频谱分析方面有一些背景知识,但我并不知道有关TX BW和调制的配置是否依赖于它们所依赖的,只是使用RFStudios中提供的各种配置。 因此,如果有一些文件,这将很有帮助。
    尽管如此,我还是会尝试按照你的建议逐步进行,看看会发生什么。不使用CRC的信息是可以的,它应该起作用,这是一个良好的开端。

    您是否在注册配置中看到了一些风险.. 例如,启用前导码检测(在与peramble相关的寄存器中)和使用基于CS的RX终端的i'am (我认为在寄存器RFEND_CFG0中)是否错误。 它又是从RFStudio导出的,所以我不认为它错了。
    此致,

    Ugljesa
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RX BW:所需的RX滤波器带宽可近似为:信号BW +4*ppm xtal*操作频率。 RX BW等于11 kHz且在869.525 MHz上运行时,这意味着频率精度要求高于1 ppm。

    由于您对RF相对较新,并且正在接管一个项目,因此,一步一步地进行此操作以更好地理解所有构建模块似乎是一个更好的主意。

    我尚未完成所有注册设置。 我假设这些是从SmartRF Studio生成的,具有1.2 kbps设置的基本设置,应该可以,但应该进行一些测试以验证。 您正在发送一个非常长的前导码,因此前导码检测应该不是问题。