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.

CC1310: PROP_ERROR_RXBUF

Part Number: CC1310

PROP_ERROR_RXBUF错误 怎么解决

  • 您好,

    感谢您的提问。

    问题是 PROP_ERROR_RXBUF,则可能意味着缓冲区溢出,并且您发送的数据包大于 Rx 缓冲区。

    一般来说,您可以修改 #define MAX_LENGTH   RF_cmdPropRx.maxPktLen 来解决这个问题。

  • RF_cmdPropRx.maxPktLen已修改为正常通信的2倍   但是还出错

  • 请问下怎么可以复位其状态  用RF_runCmd调用rfc_CMD_CLEAR_RX_t这个命令后卡死了

  • 您好,

    能给我们提供更多的信息吗?这将会很有帮助。

    您在使用什么工程做什么测试?(什么版本的SDK使用了哪个示例?)

  • SDK为:simplelink_cc13x0_sdk_4_20_02_07     

    例程:rfPacketRx、rfPacketTx

  • 还有个问题 看门狗计时结束后系统没有复位,调用SysCtrlSystemReset函数也不能复位

    
    
    #include "bsp_watchdog.h"
    
    #define TIMEOUT_MS      1000
    #define SLEEP_US        500000
    
    /*
     *  ======== watchdogCallback ========
     */
    void watchdogCallback(uintptr_t watchdogHandle)
    {
        /*
         * If the Watchdog Non-Maskable Interrupt (NMI) is called,
         * loop until the device resets. Some devices will invoke
         * this callback upon watchdog expiration while others will
         * reset. See the device specific watchdog driver documentation
         * for your device.
         */
        myPrintf("Watchdog reset!\r\n");
        usleep(SLEEP_US);
        SysCtrlSystemReset();
        while (1) {}
    }
    
    /*
     *  ======== gpioButtonIsr ========
     */
    void gpioButtonIsr(uint_least8_t index)
    {
    //    GPIO_write(Board_GPIO_LED0, Board_GPIO_LED_ON);
    
        /*
         * Simulate the application being stuck in an ISR. This ISR can be
         * preempted by the watchdog Non-Maskable Interrupt (NMI).
         */
        while (1) {}
    }
    
    
    void WatchdogTask(UArg arg0, UArg arg1)
    {
        Watchdog_Handle watchdogHandle;
        Watchdog_Params params;
        uint32_t        reloadValue;
    
        /* Call driver init functions */
        Watchdog_init();
    
        /* Open a Watchdog driver instance */
        Watchdog_Params_init(&params);
        params.callbackFxn = (Watchdog_Callback) watchdogCallback;
        params.debugStallMode = Watchdog_DEBUG_STALL_ON;
        params.resetMode = Watchdog_RESET_ON;
    
        watchdogHandle = Watchdog_open(Board_WATCHDOG0, &params);
        if (watchdogHandle == NULL) {
            /* Error opening Watchdog */
            while (1) {}
        }
    
        /*
         * The watchdog reload value is initialized during the
         * Watchdog_open() call. The reload value can also be
         * set dynamically during runtime.
         *
         * Converts TIMEOUT_MS to watchdog clock ticks.
         * This API is not applicable for all devices.
         * See the device specific watchdog driver documentation
         * for your device.
         */
        reloadValue = Watchdog_convertMsToTicks(watchdogHandle, TIMEOUT_MS);
    
        /*
         * A value of zero (0) indicates the converted value exceeds 32 bits
         * OR that the API is not applicable for this specific device.
         */
        if (reloadValue != 0) {
            Watchdog_setReload(watchdogHandle, reloadValue);
        }
        
        Power_disablePolicy();
    
        while (1) {
    
            /*
             * Disabling power policy will prevent the device from entering
             * low power state. The device will stay awake when the CPU is
             * idle.
             */
    //        Power_disablePolicy();
    
            /* Sleep for SLEEP_US before clearing the watchdog */
            usleep(SLEEP_US);
            Watchdog_clear(watchdogHandle);
    //        GPIO_toggle(Board_GPIO_LED0);
    
            /*
             * Enabling power policy will allow the device to enter a low
             * power state when the CPU is idle. How the watchdog peripheral
             * behaves in a low power state is device specific.
             */
    //        Power_enablePolicy();
    //
    //        /* Sleep for SLEEP_US before clearing the watchdog */
    //        usleep(SLEEP_US);
    //        Watchdog_clear(watchdogHandle);
    //        GPIO_toggle(Board_GPIO_LED0);
        }
    }
    

  • 您好,

    RF_cmdPropRx.maxPktLen已修改为正常通信的2倍   但是还出错

    您修改了 maxPktLen,那您有没有修改相应的  packet size 和RF队列中数据条目的大小?

    请问下怎么可以复位其状态  用RF_runCmd调用rfc_CMD_CLEAR_RX_t这个命令后卡死了

    您这边指得是什么状态?RX commands 的状态?您不需要清空相关的命令。

    看门狗计时结束后系统没有复位,调用SysCtrlSystemReset函数也不能复位

    请参考看门狗的示例,有相关如何使用看门狗的方法介绍。要注意的是看门狗不会在standby模式下运行。

  • 调用函数Power_disablePolicy  后 是不是关闭了所有低功耗模式

  • 您好,

    您的问题已同步给工程师,有结论会及时联系您。

  • 您好,

    是这样的,您可以查看这个文档:Power.h File Reference (ti.com)