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.

[参考译文] CC1101:CC1101代码

Guru**** 2538950 points
Other Parts Discussed in Thread: CC1101

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/943996/cc1101-cc1101-code

器件型号:CC1101

你(们)好

您能否解释一下附加到缓冲器长度的数字3是什么意思?

它与特定代码无关、但包含在许多代码中

#define CC1101_DATA_LEN CC1101_buffer_LEN - 3.

TX/RX FIFO 是否也意味着缓冲器?

当第一个字节是目的地址时、剂量是指 SYNC 还是前导码字节?

此致

穆斯塔法

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

    我指派了一名专家发表意见。

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

    您能否解释一下附加到缓冲器长度的数字3是什么意思?

    它与特定代码无关、但包含在许多代码中

    #define CC1101_DATA_LEN CC1101_buffer_LEN - 3.

    上述情况意味着 CC1101_DATA_LEN 为3 (字节??) 小于 CC1101_buffer_LEN

    正如我之前告诉过的、当我们不知道如何使用某些定义/变量时、我们无法回答为什么会以特定的方式设置它们。 您需要参考您正在查看的代码示例、以便我们能够给出正确的答案。

    TX/RX FIFO 是否也意味着缓冲器?

    TX_FIFO 和 RX_FIFO 是无线电的 FIFO。 什么是缓冲区、如果不知道您所引用的代码、我就无法回答。

    当第一个字节是目的地址时、剂量是指 SYNC 还是前导码字节?

    同样、您需要更加具体。 您谈论的是寄存器的 SPI 地址、还是无线发送的数据包中使用的地址?

    Siri

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

    您好 Siri

    我真诚的道歉,我知道当你不得不回答模糊的问题时,多么令人沮丧和烦恼

    对本主题有经验或缺乏足够的知识。

    无论 代码本身是什么、当数据包被写入 TR FIFO 并由 RX FIFO 读取时、就会有一个缓冲区(区域)、因此我的问题是这样的  

    在这种情况下、缓冲区的定义是什么?

    在本例 中#define CC1101_DATA_LEN CC1101_buffer_LEN - 3的字节数是什么决定或确定的?

    当数据包是可变的时、第一个字节是长度字节。

    当数据包被固定时、第一个字节为地址字节

    无论是可变数据包还是固定数据包、传输顺序分别是 (长度字节/地址字节、前导码、同步)、长度、地址、 数据、CRC。

    此致

    穆斯塔法

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    #ifndef _CCPACKET_H
    #define _CCPACKET_H
    
    #include "Arduino.h"
    
    /**
     * Buffer and data lengths
     */
    #define CC1101_BUFFER_LEN        64
    #define CC1101_DATA_LEN          CC1101_BUFFER_LEN - 3
    
    /**
     * Class: CCPACKET
     * 
     * Description:
     * CC1101 data packet class
     */
    class CCPACKET
    {
      public:
        /**
         * Data length
         */
        byte length;
    
        /**
         * Data buffer
         */
        byte data[CC1101_DATA_LEN];
    
        /**
         * CRC OK flag
         */
        boolean crc_ok;
    
        /**
         * Received Strength Signal Indication
         */
        byte rssi;
    
        /**
         * Link Quality Index
         */
        byte lqi;
    };
    
    #endif
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Mustafa

    CC1101具有 TX FIFO 和 RX FIFO、这是器件中的缓冲区/区域、可容纳64字节。

    在 MCU 上运行的应用中、通常会创建一个缓冲区、用于存储要写入 TX FIFO 和从 RX FIFO 读取的数据。 这些缓冲区的大小取决于您希望接收的数据包的大小。 如果对讲机使用数据包长度过滤、这样您永远不会接收到超过30字节(包括长度和状态字节)的数据包、则缓冲区不必大于30字节、即使 FIFO 大于30字节也是如此。

    在您所引用的示例代码中、我假设它们使用标准数据包格式、并启用可变数据包长度和 append_status。 我还将假定它们使用数据包长度过滤、并且它们希望整个数据包在 RX FIFO 中有空间。

    由于 CC1101_buffer_LEN 为64 (与 RX FIFO 的长度相同)、已将 CC1101_DATA_LEN 设置为61。 这将是实际有效载荷、并存储在称为"数据"的缓冲区中。

    CRC_OK、RSSI 和 LQI 变量表示它们也接收状态信息。

    它们可以接收的最大长度字节为61。 在 RX FIFO 中、将有长度字节(61)、61个有效载荷字节和2个状态字节(总共64字节)。 如果它们不使用长度滤波(PKTLEN = 61)、它们将有 RX FIFO 溢出的风险、并且它们将没有空间存储接收到的数据、因为"数据"缓冲区只有61字节长。

    关于数据包格式、数据表的第15.2节对此进行了说明。

    Siri

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

    您好 Siri

    非常感谢您的全面详细解释。

    此致

    穆斯塔法