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.

[参考译文] CC113L:CC113L 不接收任何数据

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1501734/cc113l-cc113l-does-not-receive-any-data

部件号:CC113L

工具/软件:

我的客户在开发与 CC113L 接口的程序时遇到问题、从 RXBYTES 寄存器(0x3B)读取的值始终为0。 您能否帮助检查配置中是否缺少任何内容?

发送器侧的参数:

  • 曼彻斯特编码
  • 数据速率:9.6kbps
  • 位宽:104us
  • 调制:FSK
  • 载波频率:433.92MHz ±30kHz
  • FSK 偏差:60kHz

CC113L SmartRF Studio 配置如下:

导出的寄存器值如下所示:

主机 MCU 代码如下所示:

主机 MCU 和 CC113L 之间的 SPI 通信已经过验证并正常处理、但 CC113L 未按预期接收数据。 请帮助查看设置、谢谢。

此致、

Shuyang

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

    这里有几件事可能是错的、所以我只是列举了我能想到的内容。

    设置:

    如果我将电路板连接到 SmartRF Studio 并尝试根据您的射频参数配置器件、我收到了100个数据包中的14个(由于偏差)。 如果您对10 kbps (19 kHz)的数据速率使用重新建议/表征偏差、则会收到所有数据包

    硬件:

    我想您正在使用您自己的硬件、我不知道参考引用是什么 等您使用过的设计。

    首先、您应该使用 Studio 中的某些特征设置验证您的硬件。 验证您正在接收所有包含这些设置的数据包并从数据表中获得灵敏度后、就可以开始更改射频参数

    代码:

    对于 SW、最简单的方法是限制数据包长度以适应 RX FIFO、然后等待 GDO0的下降沿中断读出整个数据包:

    static void runRX(void)
    {
        uint8 rxBuffer[64] = {0};
        uint8 rxBytes;
        uint8 marcstate;
    
        // Enable for falling edge interrupt on GDO0 (IOCFG0 = 0x06)
        ioPinIntRegister(IO_PIN_PORT_1, GPIO0, &radioRxISR);
        ioPinIntTypeSet(IO_PIN_PORT_1, GPIO0, IO_PIN_FALLING_EDGE);
        ioPinIntClear(IO_PIN_PORT_1, GPIO0);
        ioPinIntEnable(IO_PIN_PORT_1, GPIO0);
    
        // Set radio in RX
        trxSpiCmdStrobe(CC110L_SRX);
    
        // Infinite loop 
        while(TRUE)
        {
            // wait for packet received interrupt
            if(packetSemaphore == ISR_ACTION_REQUIRED)
            {
                // Read number of bytes in RX FIFO
                cc11xLSpiReadReg(CC110L_RXBYTES, &rxBytes, 1);
                
                // Check that we have bytes in FIFO
                if(rxBytes != 0)
                {
                    // Check for RX FIFO overflow (MSB of RXBYTES)
                    if(rxBytes & 0x80)
                    {
                        // Flush RX FIFO
                        trxSpiCmdStrobe(CC110L_SFRX);
                    }
                    else
                    {
                        // Read n bytes from RX FIFO
                        cc11xLSpiReadRxFifo(rxBuffer, rxBytes);
                        
                        // Check CRC ok (CRC_OK: bit7 in second status byte)
                        // This assumes status bytes are appended in RX_FIFO
                        // (PKTCTRL1.APPEND_STATUS = 1)
                        // If CRC is disabled the CRC_OK field will read 1
                        if(rxBuffer[rxBytes - 1] & 0x80)
                        {
                            packetCounter++;
                        }
                    }
                }
          
                // Reset packet semaphore
                packetSemaphore = ISR_IDLE;
    
                // Set radio back in RX
                trxSpiCmdStrobe(CC110L_SRX);
            }
        }
    }
    

    static void radioRxISR(void)
    {
        // Set packet semaphore
        packetSemaphore = ISR_ACTION_REQUIRED;
    
        // Clear ISR flag
        ioPinIntClear(IO_PIN_PORT_1, GPIO0);
    }

    Siri

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

    这里的 TX 端是什么?