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.

[参考译文] CC1120:RX FIFO 中的数据包接收未设置(314MHz、2-GFSK、100kbps)

Guru**** 651100 points
Other Parts Discussed in Thread: CC1120, CC1200, CC1312R, WMBUS, MSP430G2744
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1189937/cc1120-packet-reception-not-set-in-the-rx-fifo-314mhz-2-gfsk-100kbps

器件型号:CC1120
主题中讨论的其他器件: CC1200CC1312RWMBUSMSP430G2744

各位专家、您好!

我的客户正在使用 CC1120、即使它看起来是接收到的数据、它也不会在 RX FIFO 中设置。
您能否检查是否存在任何设置错误?

关于寄存器设置、它们指的是 SmartRF Studio 值。
附件是配置屏幕的屏幕截图、xml 文件和"register setting values"的 Excel 文件。

[环境]

[如何重现]
将寄存器值设置为"寄存器设置值"并切换到接收模式。
手动执行校准。
在轮询状态寄存器时接收一个6字节的数据包。
状态寄存器的变化就像接收到数据包一样、但 NUM_RXBYTES 不会从0变为0。

[结果]
数据包接收之前

寄存器   概述
MARCSTATE 0x6D MARC_STATE = RX
PQT_SYNC_ERR 0x1f、0x2F、0x3F
RX_STATUS
(MODEM_STATUS1)
0x11、0x13 RX FIFO 为空
LQI_VAL 0x00
MARC_STATUS1 0x00
MARC_STATUS0 0x00
DEM_STATUS 0x00
num_RXBYTES 0x00

数据包接收之后

寄存器   概述
MARCSTATE 0x41 MARC_STATE =空闲
PQT_SYNC_ERR 0x00
RX_STATUS
(MODEM_STATUS1)
0x91 SYNC_FOUND、RX FIFO 为空
LQI_VAL 0x81~0x84 Pkt_CRC_OK=CRC 校验正常
MARC_STATUS1 0x00
MARC_STATUS0 0x00
DEM_STATUS 0x00
num_RXBYTES 0x00 (接收到的数据在 FIFO 中未置位)

此外、如果您可以共享任何检查点或参考信息来解决问题、也会有所帮助。

此致、
还不错

e2e.ti.com/.../CC1120_5F00_314MHz_5F00_2gfsk_5F00_100kbaud_5F00_20221229.xml

e2e.ti.com/.../CC1120_5F00_314MHz_5F00_2gfsk_5F00_100kbaud_5F00_20230126.xlsx

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

    我没有适用于您所需频段的任何硬件、因此我在868MHz 下进行了测试。

    如下由 SmartRF Studio 导出的设置:

    // Address Config = No address check 
    // Bit Rate = 100 
    // Carrier Frequency = 868.000000 
    // Deviation = 82.763672 
    // Device Address = 0 
    // Manchester Enable = false 
    // Modulation Format = 2-GFSK 
    // PA Ramping = true 
    // Packet Bit Length = 0 
    // Packet Length = 255 
    // Packet Length Mode = Variable 
    // Performance Mode = High Performance 
    // RX Filter BW = 200.000000 
    // Symbol rate = 100 
    // TX Power = 15 
    // Whitening = false 
    
    static const registerSetting_t preferredSettings[]= 
    {
      {CC1120_IOCFG3,             0xB0},
      {CC1120_IOCFG2,             0x06},
      {CC1120_IOCFG1,             0xB0},
      {CC1120_IOCFG0,             0x40},
      {CC1120_SYNC_CFG1,          0x07},
      {CC1120_DEVIATION_M,        0x53},
      {CC1120_MODCFG_DEV_E,       0x0F},
      {CC1120_DCFILT_CFG,         0x04},
      {CC1120_PREAMBLE_CFG1,      0x18},
      {CC1120_FREQ_IF_CFG,        0x00},
      {CC1120_IQIC,               0x00},
      {CC1120_CHAN_BW,            0x01},
      {CC1120_MDMCFG0,            0x05},
      {CC1120_SYMBOL_RATE2,       0xA9},
      {CC1120_SYMBOL_RATE1,       0x99},
      {CC1120_SYMBOL_RATE0,       0x99},
      {CC1120_AGC_REF,            0x3C},
      {CC1120_AGC_CS_THR,         0xEC},
      {CC1120_AGC_CFG3,           0x83},
      {CC1120_AGC_CFG2,           0x60},
      {CC1120_AGC_CFG1,           0xA9},
      {CC1120_AGC_CFG0,           0xC0},
      {CC1120_FIFO_CFG,           0x78},
      {CC1120_SETTLING_CFG,       0x03},
      {CC1120_FS_CFG,             0x12},
      {CC1120_PKT_CFG0,           0x20},
      {CC1120_PA_CFG0,            0x01},
      {CC1120_PKT_LEN,            0xFF},
      {CC1120_IF_MIX_CFG,         0x00},
      {CC1120_TOC_CFG,            0x0A},
      {CC1120_FREQ2,              0x6C},
      {CC1120_FREQ1,              0x80},
      {CC1120_FS_DIG1,            0x00},
      {CC1120_FS_DIG0,            0x5F},
      {CC1120_FS_CAL1,            0x40},
      {CC1120_FS_CAL0,            0x0E},
      {CC1120_FS_CHP,             0x27},
      {CC1120_FS_DIVTWO,          0x03},
      {CC1120_FS_DSM0,            0x33},
      {CC1120_FS_DVC0,            0x17},
      {CC1120_FS_PFD,             0x50},
      {CC1120_FS_PRE,             0x6E},
      {CC1120_FS_REG_DIV_CML,     0x14},
      {CC1120_FS_SPARE,           0xAC},
      {CC1120_FS_VCO4,            0x11},
      {CC1120_FS_VCO2,            0x4B},
      {CC1120_FS_VCO1,            0x9C},
      {CC1120_FS_VCO0,            0xB4},
      {CC1120_XOSC5,              0x0E},
      {CC1120_XOSC1,              0x03},
      {CC1120_DCFILTOFFSET_I1,    0x24},
      {CC1120_DCFILTOFFSET_I0,    0x68},
      {CC1120_DCFILTOFFSET_Q1,    0x09},
      {CC1120_DCFILTOFFSET_Q0,    0x31},
      {CC1120_RSSI1,              0x2C},
      {CC1120_RSSI0,              0x27},
      {CC1120_LQI_VAL,            0x8D},
      {CC1120_PQT_SYNC_ERR,       0x10},
      {CC1120_FREQOFF_EST1,       0xFF},
      {CC1120_FREQOFF_EST0,       0x2C},
      {CC1120_AGC_GAIN3,          0x15},
      {CC1120_AGC_GAIN2,          0x9E},
      {CC1120_AGC_GAIN1,          0x0C},
      {CC1120_MAGN1,              0x02},
      {CC1120_MAGN0,              0xEC},
      {CC1120_ANG1,               0x01},
      {CC1120_ANG0,               0xE9},
      {CC1120_CHFILT_I2,          0x0F},
      {CC1120_CHFILT_I1,          0xFD},
      {CC1120_CHFILT_I0,          0x0C},
      {CC1120_CHFILT_Q0,          0x8C},
      {CC1120_PARTNUMBER,         0x48},
      {CC1120_PARTVERSION,        0x21},
      {CC1120_MODEM_STATUS1,      0x91},
      {CC1120_MARC_STATUS1,       0x80},
      {CC1120_RXFIRST,            0x07},
      {CC1120_RXLAST,             0x07},
    };

    发送一个6字节长的数据包后、接收器从 RX 状态进入空闲状态。

    状态寄存器如下:

    MODEM_STATUS1:0x81 (SYNC_FOUND = 1、PQT_VALID = 1)

    LQI_VAL:          0x8D (PKT_CRC_OK = 1)

    num_RXBYTES:   0x08 (包括长度的6个数据字节、和2个状态字节)

    在我读出 FIFO 后、这些值为:

    MODEM_STATUS1:0x91 (SYNC_FOUND = 1、RXFIFO_EMPTY = 1、PQT_VALID = 1)

    LQI_VAL:          0x8D (PKT_CRC_OK = 1)

    num_RXBYTES:   0x00 (FIFO 为空)

    如您所见、我无法再现您看到的内容。

     

    请为您的接收例程提供代码/伪代码、以及数据包接收期间/之后 SPI 轮询的逻辑分析仪图

    Siri

     

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

    以下是几个问题:

    -为什么要将 CC1120用于100kbps? 如果您需要收发器、CC1200将是更好的选择

    -在 Excel 文件中,您似乎使用的是默认 IF 频率,是这样吗?  

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

    您好、Siri、

    感谢你的答复。

    [引用 userid="2957" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1189937/cc1120-packet-reception-not-set-in-the-rx-fifo-314mhz-2-gfsk-100kbps/4483988 #4483988"]请提供接收例程的代码/伪代码以及数据包接收期间/接收后 SPI 轮询的逻辑分析仪图[/quot]

    我随函附上。 这是 SPI 轮询、不使用中断、并且正在检索状态寄存器以确定状态。

    抱歉。 它们没有逻辑分析仪、无法提供逻辑分析仪。

    e2e.ti.com/.../receive_5F00_routine.c

    此致、
    还不错

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

    您好 、TheGhostOf、

    感谢你的答复。  请参阅下面的客户回复。

    [引用 userid="526223" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1189937/cc1120-packet-reception-not-set-in-the-rx-fifo-314mhz-2-gfsk-100kbps/4484286 #4484286"]-为什么要将 CC1120用于100kbps? 如果您需要收发器、CC1200将是更好的选择[/报价]

    这是因为我们有一个发送器可以按照此规格进行传输、而我们手头上唯一可以接收的接收器是 CC1120。
    顺便提一下、CC1312R 能够接收来自该发送器的数据包、尽管它不支持该数据包。
    CC1120是否很难接收100kbps?

    [引用 userid="526223" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1189937/cc1120-packet-reception-not-set-in-the-rx-fifo-314mhz-2-gfsk-100kbps/4484286 #4484286"]从 Excel 文件中,您似乎正在使用默认 IF 频率,情况是这样吗?  [/报价]

    我们尚未从 SmartRF Studio 的数据输出中更改。 我们应该更改它吗?

    此致、
    还不错

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

    在 SmartRF Studio 中、100kbps、2GFSK 不是默认设置。 如果 CC1120上的数据速率为零、则必须使用零、如果无法提供最佳性能、则必须使用零。 TI 在一个点上开发了一些100kbps 设置(WMBUS C 模式、TI 的某人可以帮助您找到它们)

    如前所述、CC1200将会做得更好、因为对于该数据速率、它不需要零。   

    [引用 userid="402494" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1189937/cc1120-packet-reception-not-set-in-the-rx-fifo-314mhz-2-gfsk-100kbps/4486494 #4486494"]意外地,CC1312R 能够接收来自此发送器的数据包,尽管它不支持此发送器。

    不确定这里是什么意思?

    简单的逻辑分析仪相对便宜、如果您考虑了通过使用一个分析仪节省的时间、就会更便宜。   

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

    恐怕我不理解您的接收程序。  

     您在代码中的什么位置调用 receive_pkt(),以及调用它的次数是多少?

    如果您在数据包的中间调用它、例如、当仅接收到1个字节时、您从 FIFO 读取该字节、然后是什么?

    如果您需要使用 SPI 轮询而不是中断、则应轮询状态、直到对讲机在 RX 状态下完成、然后再退出完整的数据包晶圆 RX。

    只要您的数据包长度不超过 FIFO 大小、这将起作用。

    Siri

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

    您好 、TheGhostOf、

    感谢你的答复。

    [引用 userid="526223" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1189937/cc1120-packet-reception-not-set-in-the-rx-fifo-314mhz-2-gfsk-100kbps/4486509 #4486509"]
    顺便提一下、CC1312R 能够接收来自该发送器的数据包、尽管它不支持该数据包。

    不确定这里是什么意思?

    [/报价]

    我们深表歉意。 我们的错误。  

    如果客户 想要使用 CC1312R、可以自行对314MHz 进行全面评估和使用、这是否正确?
    因为支持314MHz、但我们没有测试数据。

    如果我们使用314MHz、是否建议使用 CC1312R 而不是 CC1200?

    此致、
    还不错

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

    您好、Siri、

    感谢你的答复。

    我们与客户分享我们收到的信息。 我们将在收到回复后立即再次与您联系。

    此致、
    还不错

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

    您好 Sira、

    请参阅下面的客户回复。

    [引用 userid="2957" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1189937/cc1120-packet-reception-not-set-in-the-rx-fifo-314mhz-2-gfsk-100kbps/4488095 #4488095"]

     您在代码中的什么位置调用 receive_pkt(),以及调用它的次数是多少?

    如果您在数据包的中间调用它、例如、当仅接收到1个字节时、您从 FIFO 读取该字节、然后是什么?

    [/报价]

    Receive_pkt()在 for 循环的主进程中调用。

    为了检查完整的数据包、我们计划实施一个连接和分析从 FIFO 读取的数据的过程。

    此致、
    还不错

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

    您好、TheGhostOf

    请参阅下面的客户回复。

    [引用 userid="526223" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1189937/cc1120-packet-reception-not-set-in-the-rx-fifo-314mhz-2-gfsk-100kbps/4486509 #4486509"]

    在 SmartRF Studio 中、100kbps、2GFSK 不是默认设置。 如果 CC1120上的数据速率为零、则必须使用零、如果无法提供最佳性能、则必须使用零。 TI 在一个点上开发了一些100kbps 设置(WMBUS C 模式、TI 的某人可以帮助您找到它们)

    如前所述、CC1200将会做得更好、因为对于该数据速率、它不需要零。   

    [/报价]

    如果在 CC1120上使用零将在 RX FIFO 中设置它、我想尝试一下。
    请告诉我寄存器设置的值吗?

    我们将考虑将 CC1200用于商业化、 但您能给我们提供您对 CC1312R 的看法吗?

    [引用 userid="402494" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1189937/cc1120-packet-reception-not-set-in-the-rx-fifo-314mhz-2-gfsk-100kbps/4489441 #4489441"]

    如果客户 想要使用 CC1312R、可以自行对314MHz 进行全面评估和使用、这是否正确?
    因为支持314MHz、但我们没有测试数据。

    如果我们使用314MHz、是否建议使用 CC1312R 而不是 CC1200?

    [/报价]

    此致、
    还不错

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

    为什么要在接收期间读取部分数据包? 这会使您的实施复杂化。

    如果我将花更多的时间进行此操作、您需要为我提供一个完整的代码示例、以触发您看到的条件、以便我可以在我们的套件上运行它并查看正在发生的情况。

    Siri

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

    您好、Siri、

    感谢您的支持、很抱歉耽误您的回复。

    [引用 userid="2957" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1189937/cc1120-packet-reception-not-set-in-the-rx-fifo-314mhz-2-gfsk-100kbps/4495836 #4495836"]如果我要花更多的时间来执行此操作,您需要向我提供一个完整的代码示例,该示例会触发您看到的条件,以便我可以在我们的套件上运行它并查看正在发生的情况。

    我们将分享我们从客户那里收到的代码。
    微控制器是 MSP430G2744、集成开发环境是 IAR 的 IDE。
    如果缺少任何信息、请告知我们。

    e2e.ti.com/.../cc1120_5F00_not_5F00_set_5F00_in_5F00_the_5F00_rxfifo.zip

    此致、
    还不错

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

    我获取了代码并在 项目中实现了 Receive_pktt 函数。

    我在接收数据包时使用逻辑分析仪监视所有内容。

    没有读取 RX_STATUS 和 TX_STATUS 寄存器、因为它们未针对 CC1120进行定义(在我测试后确实意识到这是 MODE_STATUS 寄存器:

    如您所见、数据包被接收、所有寄存器都被自动更新。

    如果您在使其正常工作时遇到问题、我强烈建议您购买一个便宜的逻辑分析仪、以便能够调试正在发生的情况。

    我看不到任何不应该的事情,也不能再花更多的时间来做。

    BR

    Siri

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

    还不错 :您是否使用已知硬件和 SmartRF Studio 的设置测试了代码?  

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

    您好、Siri、

    感谢您的友好支持。

    客户现在需要再次检查、包括硬件。

    如果出现其他问题、如果您能在新主题中讨论这些问题、我们将不胜感激。

    此致、
    还不错