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.

[参考译文] CC110L:Rx 配置。

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1041337/cc110l-rx-config

器件型号:CC110L

您好!

我正在尝试 CC110L 收发器、频率为434MHz。 我单独构建了两个 PCB:发送器和接收器。

在这两种情况下、SPI 总线以100KHz 工作、我可以将寄存器作为芯片版本、芯片状态、RSSI、TX 和 RX FIFO 中的字节数等写入/读取。 射频滤波器完全相同。

Tx 器件似乎正常。 我附上从 SA 拍摄的照片、该照片以434MHz 为中心。 发送带有地址检查的小变量数据包(< 20字节)、无广播、0x21。 首先、我在空闲状态期间清空 TX FIFO、然后将有效负载(加上长度和地址检查)写入 TX FIFO、然后校准  并启用合成器和发送器(使用选通命令)、并等待数字 GPIO-0在数据包发送完毕后下降。 GPIO-0配置为0x06

我遇到的问题是在接收器中:初始化过程中从 SmartRFStudio 充电的参数相同。 然后、我对合成器和接收器进行校准和启用(使用 STROBE 命令)。 两个问题:

在接收器中、我每2秒执行一次 SPI 轮询、并且 RX FIFO 有一个特定的可变字节数、每次我读取 FIFO 时都会减小。 但 GPIO0-O 不发送任何有效的数据包。 GPIO-0配置为0x06。 我在控制台上附上我观察到的内容的屏幕截图。 这是预期行为吗? 为什么 FIFO 中应该填充"有效数据包"?

2.-当我开始从发送器发送数据包时、我在接收器的 GPIO-0中看不到任何活动、所以它可能不会检测到我理解的前导码或同步字。 我使用了 Smart RF Studio 中给出的建议参数。 我也连接它。 那么、可能会发生什么情况? 在 开始更改调制解调器中的参数或频率偏移、数据速率或 RX BW 或其他任何内容之前,我想向我提供一些建议。

非常感谢。

何塞

e2e.ti.com/.../cc110L-config.txt

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

    你(们)好

    不幸的是、我本周不在办公室、也没有合适的硬件来自行测试这一点、并向您发送图、以显示 GDO 线路等上的情况。但我希望您检查以下几件事:

    请确保您连接到 GDO0的 GPIO 配置为输入、并且没有其他任何引脚连接/驱动该引脚。 如果您在此 GPIO 上配置了中断、请确保其按预期工作(引脚上不使用 CC110L GDO0作为输入、而是可以控制的已知信号、以确保一切正常)。

    读取 RXBYTES 毫无意义。

    除非您找到 SYNC 字、否则任何内容都不会被放入 RX FIFO 中、如果您找到 SYNC、则会在 GDO0上有一个上升沿(如果 IOCFG0 = 0x06)。 由于您还在使用地址过滤、因此如果地址不匹配(在这种情况下、RX FIFO 中没有任何内容)或地址匹配、则 GDO0信号可能再次失效、 您将收到长度字节(同步后接收到的第一个字节)指示的字节数。

    您可以在此处测试/检查几个方面。

    如果 RX FIFO 中的整个数据包还有空间、请确保使用长度过滤。 这将确保您不会遇到溢出情况。

    确保在 TX 侧传输正确的数据包。

    您正在使用可变数据包长度和地址过滤、因此发送的有效数据包例如:0x06、0x21、0x01、0x02、0x03、 0x04、0x05、其中0x06是长度字节、0x21是地址、0x01到0x05是有效载荷。

    在 RX 端、如果 GDO0未首先置位、然后置位、则可能有两个问题:

    1. 连接到 GDO0的引脚配置有问题(如上所述)或
    2. 您的设计有问题、因此射频性能不足以接收任何内容。

    如果是后一种情况、RX FIFO 中不会有任何内容、当您读取 RXBYTES 寄存器时、需要仔细检查 SPI 上实际发送的内容。 请记住、该寄存器是一个状态寄存器、在读取寄存器时需要设置突发位。

    如果由于您收到有效同步而置位 GDO0、 地址匹配、数据被放入 RX FIFO 中、RXBYTES 的读取将使数据从0 (空 FIFO)增加到0x09 (如果数据包是上面描述的数据包、则 FIFO 中接收到的完整数据包)。

    Siri

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

    你好、Siri、早上好、

    我检查了硬件、看起来是正确的。 晶振的两侧均为26MHz +/-30ppm (TX&Rx)、两个10pF 电容器根据晶振数据表中的预期值提供或多或少7.5pF 的 CLoad。 我附加了用于测试合成器精度的非调制载波的频谱:其中一侧仅漂移-2KHz、另一侧仅漂移-4kHz。 然后在 SmartRF Studio 中、我设置25KHz 的偏差、270KHz 的 RX BW 和5Kbps 的数据速率(慢数据速率)。 这应该足够了…… 是的、GDO0的 GPIO 配置为0x06、在我的微控制器中、它是一个没有内部上拉/下拉的数字输入(实际上我将尝试使用下拉)。 未定义中断(每次500ms、我在 while 循环中读取 GPIO、因为这是我必须在 GDO0上捕获断言和取消断言的唯一方式)。 一旦我捕获到 GPIO 上的高电平值(并非总是如此)、我会等待直到它失效、因此当前状态为空闲、所以现在我读取 RSSI、CRC 值、 以及消息的内容、长度(FIFO 中的第一个字节)和 RXBYTES (使用状态命令、然后在 FIFO 上使用读取突发来查看接收到的消息)。 令我惊讶的是、检索到的长度不一致、FIFO 中的 RXBYTES 也不一致。 和消息、(Hello World!) 总是在开头出现奇怪的字符(它们是前导码还是同步字??)。 让我们看一下我的控制台(图片随附,RSSI 非常好, CRC 是... 好吗?) 读取完所有数据后、我将刷新 RX FIFO (IAM 处于空闲状态、我可以这么做)、并首先选通 SFSTXON、然后选择 SRX 以再次打开接收器。

    此致

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

    我对您的设置有点困惑。 首先、您说您使用的是1.2kbps、现在您说您使用的是5kbps。 在启动并运行之前、我强烈建议您坚持使用 SmartRF Studio 的默认设置之一。

    您还应尝试使用固定的数据包长度并禁用地址过滤、以删除可能使数据包被过滤掉的内容。 在固定数据包长度= x 的情况下、如果接收到 SYNC、无线电将始终在 FIFO 中放置5个字节(+ 2个状态字节)。

    每500ms 轮询 GDO0不是您可以使用的解决方案。 在数据速率为5kbps 的情况下,如果地址过滤拒绝数据包,则信号的有效时间不会超过2*8/5000=3.2ms,即使您完全填充 FIFO (64字节),信号的有效时间也只能是64*8/5000=102.4ms

    如果您错过了断言、您将不会读取/清空 FIFO、并且旧数据仍将存在。

    另一件事是、您向我展示的 SPI 读数几乎没有用处、因为它不会告诉我您是否正确解释数据。 您需要通过逻辑分析仪提供图、以显示 MCU 和无线电之间实际进行的 SPI 流量。

     

    请尝试以下设置:

    // Address Config = No address check
    // Base Frequency = 433.999969
    // CRC Autoflush = false
    // CRC Enable = true
    // Carrier Frequency = 433.999969
    // Channel Spacing = 199.951172
    // Data Format = Normal mode
    // Data Rate = 1.19948
    // Deviation = 5.157471
    // Device Address = 0
    // Manchester Enable = false
    // Modulated = true
    // Modulation Format = GFSK
    // Packet Length = 10
    // Packet Length Mode = Fixed packet length mode. Length configured in PKTLEN register
    // Preamble Count = 4
    // RX Filter BW = 58.035714
    // Sync Word Qualifier Mode = 30/32 sync word bits detected
    // TX Power = unknown
    // PA table
    
    #define PA_TABLE {0x50,0x00}
    
    static const registerSetting_t preferredSettings[]=
    {
        {CC110L_IOCFG0, 0x06},
        {CC110L_FIFOTHR, 0x47},
        {CC110L_PKTLEN, 0x0A},
        {CC110L_PKTCTRL0, 0x04},
        {CC110L_FSCTRL1, 0x06},
        {CC110L_FREQ2, 0x10},
        {CC110L_FREQ1, 0xB1},
        {CC110L_FREQ0, 0x3B},
        {CC110L_MDMCFG4, 0xF5},
        {CC110L_MDMCFG3, 0x83},
        {CC110L_MDMCFG2, 0x13},
        {CC110L_DEVIATN, 0x15},
        {CC110L_MCSM0, 0x18},
        {CC110L_FOCCFG, 0x16},
        {CC110L_RESERVED_0X20, 0xFB},
        {CC110L_FSCAL3, 0xE9},
        {CC110L_FSCAL2, 0x2A},
        {CC110L_FSCAL1, 0x00},
        {CC110L_FSCAL0, 0x1F},
        {CC110L_TEST2, 0x81},
        {CC110L_TEST1, 0x35},
        {CC110L_TEST0, 0x09},
    };
    

    这些是434MHz 时的标准1.2kbps 设置、无地址过滤、固定数据包长度设置为10。

    您的代码应该执行以下操作、而不执行任何其他操作:

    初始化 MCU

    初始化无线电(使用上述设置复位+配置寄存器)

    Strobe SRX

    连续开始轮询 MARCSTATE (不是每 x ms 一次)

    MARCSTATE 将报告您处于 RX 状态(如果您的 SPI 速度非常快、您可能会在 IDLE (0x01)和 RX (0x0D)之间看到一些状态、但它最终应报告0x0D

    确认接收器处于 RX 状态后发送数据包。

    如果您的射频设计正常、您将不会检测到同步字、并且10 (PKTLEN)字节将与2个状态字节一起放入 RX FIFO 中。 之后、对讲机将进入空闲模式

    当 MARCSSTATE 报告空闲时、您应该读取 RXXBYTES、它将报告0x0C

    您现在可以读取 RX FIFO 中的12个字节

    请执行上述测试并将 SPI 图发送给我进行分析。

    BR

    Siri

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

    CC110L 数据表中的数据。 xtal 的负载最小值为10pF。  

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

    您好、Siri、

    我完全做到了你的说法、但它仍然无法使用这些设置。 我看不到任何东西。

    我发现 MARCSATE 到空闲状态变化的唯一方法是:数据速率100kbps/偏差25KHz / RX BW 为300kHz

    虽然使用我的设置、当我发送一个固定长度(10字节)的数据包时、我会得到一个空闲状态(我也会在 GPIO0中看到一个脉冲)、但是从 RXFIFO 读取的长度是没有意义的。 此时,我们可以说数据包处理程序检测到前导码和同步字,但检索到的长度仍然不一致,更不用说消息...

    我已经检查 了两侧(发送器和接收器)在使用相同电容器时具有相同的26MHz 晶体、并且能够以434MHz 的频率传输偏差< 5kHz 的未调制载波。 如果我缺少更多校准、我不知道。

    何塞。

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

    如果您的硬件无法使用 SmartRF Studio 的建议设置、则您的硬件存在问题。

    我在434MHz 下测试了 Studio 的1.2kbps 设置、但已更改为固定数据包长度模式、并将数据包长度设置为10。

    设置如下:

    // Address Config = No address check 
    // Base Frequency = 433.999969 
    // CRC Autoflush = false 
    // CRC Enable = true 
    // Carrier Frequency = 433.999969 
    // Channel Spacing = 199.951172 
    // Data Format = Normal mode 
    // Data Rate = 1.19948 
    // Deviation = 5.157471 
    // Device Address = 0 
    // Manchester Enable = false 
    // Modulated = true 
    // Modulation Format = GFSK 
    // Packet Length = 10 
    // Packet Length Mode = Fixed packet length mode. Length configured in PKTLEN register 
    // Preamble Count = 4 
    // RX Filter BW = 58.035714 
    // Sync Word Qualifier Mode = 30/32 sync word bits detected 
    // TX Power = unknown 
    // PA table 
    #define PA_TABLE {0x50,0x00}
    
    static const registerSetting_t preferredSettings[]= 
    {
      {CC110L_IOCFG0,           0x06},
      {CC110L_FIFOTHR,          0x47},
      {CC110L_PKTLEN,           0x0A},
      {CC110L_PKTCTRL0,         0x04},
      {CC110L_FSCTRL1,          0x06},
      {CC110L_FREQ2,            0x10},
      {CC110L_FREQ1,            0xB1},
      {CC110L_FREQ0,            0x3B},
      {CC110L_MDMCFG4,          0xF5},
      {CC110L_MDMCFG3,          0x83},
      {CC110L_MDMCFG2,          0x13},
      {CC110L_DEVIATN,          0x15},
      {CC110L_MCSM0,            0x18},
      {CC110L_FOCCFG,           0x16},
      {CC110L_RESERVED_0X20,    0xFB},
      {CC110L_FSCAL3,           0xE9},
      {CC110L_FSCAL2,           0x2A},
      {CC110L_FSCAL1,           0x00},
      {CC110L_FSCAL0,           0x1F},
      {CC110L_TEST2,            0x81},
      {CC110L_TEST1,            0x35},
      {CC110L_TEST0,            0x09},
      {CC110L_CRC_REG,          0x1F},
      {CC110L_RSSI,             0x80},
      {CC110L_MARCSTATE,        0x01},
    };

    然后、我发送了一个10字节长的数据包:0x01、0x02、0x03、0x04、0x05、 0x06、0x07、0x07、0x08、0x09、 0x0A

    在接收端、我等待 GDO0上的下降沿中断、读取 RXBYTES (它按预期返回0c0C)、并从 RX FIFO 读取10个有效载荷字节+ 2个状态字节:

    您在制作自己的硬件时是否遵循了我们的参考设计?

    BR

    Siri

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

    除了 SPI 图外:  

    如果您将 CCDebugger 连接到 SPI 接口并让 SmartRF Studio 控制 CC110L、您是否能够接收?  

    请提供 CC110L 器件的原理图、以验证这是否正常。