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:如何将 CC1310 GPIO 控制逻辑设置为关闭

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1279394/cc1310-how-to-set-cc1310-gpio-control-logic-off

器件型号:CC1310
主题中讨论的其他器件:TMP112

IC:CC1310F128RHB

用例:rfEasyLinkTX....nortos_css  

我的演示射频 PA SKY66115, LDO 控制 SKY66115电源,LDO EN 为  IOID_9。

ioID_8为 tmp112 功率  

我的演示 MCU 使用引脚  IOID_2,IOID_1  ,IOID_9,IOID_8 ,  

我目前只达到 GPIO 高-->发送数据--> 睡眠  

但消耗电流相对较大、无法满足实际使用要求

程序假设:

CC1310 系统通电并进入睡眠状态--> GPIO high--> 发送数据

--> GPIO 关闭-->  休眠  

Q1.如何关闭 CC1310 GPIO 控制逻辑

Q2.用例:rfEasyLinkTX ... tirtos_css  更合适  

但休眠电流必须满足瞬态保护的

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

    您好 Likang:

    您使用的是定制电路板还是 TI Launchpad?

    您能否尝试运行 pinStandby 示例(pinStandby (TI.com))并检查电流消耗是否满足您的要求?

    此致
    曼努埃尔

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

     我的演示 使用定制板 。

    TI  Launchpad  使用案例:rfEasyLinkTX....nortos_css  

    关闭所有 GPIO、测试电流符合要求。

    睡眠后的平均电流为1uA。

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

    尊敬的 Likang:

    您是否认为 在定制电路板上运行代码时电流消耗过高、但在 TI LaunchPad 上运行相同代码时、电流消耗是可以接受的? 您说的是睡眠电流还是 TX 电流?

    您提到 TI LaunchPad 上的睡眠电流为1uA、您的定制电路板上得到了多少?

    此致、

    Hg

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

     我的演示 使用定制板 。 CURRENT = 35mA 、  对于大睡眠电流、GPIO 为高电平  

     尝试 :  在休眠失败之前尝试关闭 GPIO

     TI LaunchPad 无 PA Sky66115,相同的代码在 TI LaunchPad 上运行 ,在测试电流时没有必要进行

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

    尊敬的 Likang:

    电流消耗很可能是因为启用 LDO 的 GPIO 未设置为低电平、或您已测量的电流是 TX 电流。

    您是否能够将您定制电路板的原理图发布在后? 我想看看你是如何连接一切的。 您能否将代码部分发布到您将 GPIO 设置为高电平和低电平的位置?

    此致、

    Hg

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

    大家好、我的 演示 对休眠电流的要求相对较高、

    下面是相关电路图,改善 sky66115睡眠模式 电流

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

    嗨、  用例:rfEasyLinkTX……tirtos_css  更合适  

     *  ======== rfEasyLinkTx_nortos.c ========
     */
    /* Application header files */
    #include "smartrf_settings/smartrf_settings.h"
    
    /* Board Header files */
    #include "Board.h"
    
    /* Standard C Libraries */
    #include <stdlib.h>
    #include <stdint.h>
    #include <unistd.h>
    
    /* TI Drivers */
    #include <ti/drivers/pin/PINCC26XX.h>
    #include <ti/drivers/Power.h>
    #include <ti/drivers/rf/RF.h>
    #include <ti/devices/DeviceFamily.h>
    #include <ti/drivers/GPIO.h>
    /* EasyLink API Header files */
    #include "easylink/EasyLink.h"
    
    /* Undefine to not use async mode */
    #define RFEASYLINKTX_ASYNC
    
    #define RFEASYLINKTX_BURST_SIZE         10
    #define RFEASYLINKTXPAYLOAD_LENGTH      30
    
    /* Pin driver handle */
    static PIN_Handle pinHandle;
    static PIN_State pinState;
    /*
     * Application LED pin configuration table:
     *   - All LEDs board LEDs are off.
     */
    #define IO_CTX                     IOID_2 // =0:RX妯″紡,    =1:TX妯″紡
    #define IO_CSD                     IOID_1 // =0:Sleep妯″紡, =1:姝e父妯″紡
    #define LDO_EN                     IOID_9
    #define TMP112x_POWER              IOID_8
    PIN_Config pinTable[] = {
        //Board_PIN_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
       // Board_PIN_LED2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
        IO_CTX| PIN_GPIO_OUTPUT_EN  | PIN_GPIO_HIGH | PIN_PUSHPULL| PIN_DRVSTR_MAX,
        IO_CSD | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH  | PIN_PUSHPULL| PIN_DRVSTR_MAX,
        LDO_EN | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH  | PIN_PUSHPULL| PIN_DRVSTR_MAX,
        TMP112x_POWER  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH  | PIN_PUSHPULL| PIN_DRVSTR_MAX,
        PIN_TERMINATE
    };
    //初始化GPIO
    static uint16_t seqNumber;
    
    #ifdef RFEASYLINKTX_ASYNC
    static volatile bool txDoneFlag;
    static volatile uint8_t txSleepPeriodsElapsed;
    #endif //RFEASYLINKTX_ASYNC
    
    #ifdef RFEASYLINKTX_ASYNC
    void txDoneCb(EasyLink_Status status)
    {
        if (status == EasyLink_Status_Success)
        {
            /* Toggle LED1 to indicate TX */
        //    PIN_setOutputValue(pinHandle, Board_PIN_LED1,!PIN_getOutputValue(Board_PIN_LED1));
        }
        else if(status == EasyLink_Status_Aborted)
        {
            /* Toggle LED2 to indicate command aborted */
        //    PIN_setOutputValue(pinHandle, Board_PIN_LED2,!PIN_getOutputValue(Board_PIN_LED2));
        }
        else
        {
            /* Toggle LED1 and LED2 to indicate error */
         //   PIN_setOutputValue(pinHandle, Board_PIN_LED1,!PIN_getOutputValue(Board_PIN_LED1));
        //    PIN_setOutputValue(pinHandle, Board_PIN_LED2,!PIN_getOutputValue(Board_PIN_LED2));
        }
        txDoneFlag = true;
        txSleepPeriodsElapsed = 0;
    }
    #endif //RFEASYLINKTX_ASYNC
    
    void *mainThread(void *arg0)
    {
    
       uint32_t absTime;
    
        /* Open LED pins */
        pinHandle = PIN_open(&pinState, pinTable);
        if (pinHandle == NULL)
        {
            while(1);
    
    }
        /* Clear LED pins */
        //PIN_setOutputValue(pinHandle, Board_PIN_LED1, 0);
       // PIN_setOutputValue(pinHandle, Board_PIN_LED2, 0);
         PIN_setOutputValue(pinHandle, IOID_1, 1);
         PIN_setOutputValue(pinHandle, IOID_2, 1);
         PIN_setOutputValue(pinHandle, IOID_9, 1);
        PIN_setOutputValue(pinHandle, IOID_8, 1);
        static uint8_t txBurstSize = 0;
    // PIN_close(pinHandle);
    
    #ifdef RFEASYLINKTX_ASYNC
        /* Reset the sleep period counter */
        txSleepPeriodsElapsed = 0;
        /* Set the transmission flag to its default state */
        txDoneFlag = false;
    #endif //RFEASYLINKTX_ASYNC
    
        // Initialize the EasyLink parameters to their default values
        EasyLink_Params easyLink_params;
        EasyLink_Params_init(&easyLink_params);
    
        /*
         * Initialize EasyLink with the settings found in easylink_config.h
         * Modify EASYLINK_PARAM_CONFIG in easylink_config.h to change the default
         * PHY
         */
        if (EasyLink_init(&easyLink_params) != EasyLink_Status_Success){
            while(1);
        }
    
    
        /*
         * If you wish to use a frequency other than the default, use
         * the following API:
         * EasyLink_setFrequency(868000000);
         */
    
        while(1) {
            EasyLink_TxPacket txPacket =  { {0}, 0, 0, {0} };
    
            /* Create packet with incrementing sequence number and random payload */
            txPacket.payload[0] = (uint8_t)(seqNumber >> 8);
            txPacket.payload[1] = (uint8_t)(seqNumber++);
            uint8_t i;
            for (i = 2; i < RFEASYLINKTXPAYLOAD_LENGTH; i++)
            {
                txPacket.payload[i] = rand();
            }
    
            txPacket.len = RFEASYLINKTXPAYLOAD_LENGTH;
    
            /*
             * Address filtering is enabled by default on the Rx device with the
             * an address of 0xAA. This device must set the dstAddr accordingly.
             */
            txPacket.dstAddr[0] = 0xaa;
    
            /* Add a Tx delay for > 500ms, so that the abort kicks in and brakes the burst */
            if(EasyLink_getAbsTime(&absTime) != EasyLink_Status_Success)
            {
                // Problem getting absolute time
            }
            if(txBurstSize++ >= RFEASYLINKTX_BURST_SIZE)
            {
                /* Set Tx absolute time to current time + 1s */
    
                txPacket.absTime = absTime + EasyLink_ms_To_RadioTime(1000);
                txBurstSize = 0;
            }
            /* Else set the next packet in burst to Tx in 100ms */
            else
            {
                /* Set Tx absolute time to current time + 100ms */
                txPacket.absTime = absTime + EasyLink_ms_To_RadioTime(100);
            }
    
    
    #ifdef RFEASYLINKTX_ASYNC
            /*
             * Set the Transmit done flag to false, callback will set it to true
             * Also set the sleep counter to 0
             */
            txDoneFlag = false;
            txSleepPeriodsElapsed = 0;
    
            /* Transmit the packet */
            EasyLink_transmitAsync(&txPacket, txDoneCb);
    
    
            while(!txDoneFlag){
    
                PIN_close(pinHandle);
     //           GPIO_write(Board_PIN_LED0, Board_GPIO_LED_ON)
                if (pinHandle == NULL)
                {
                    while(1);
    
            }
    
                /* Clear LED pins */
                //PIN_setOutputValue(pinHandle, Board_PIN_LED1, 0);
               // PIN_setOutputValue(pinHandle, Board_PIN_LED2, 0);
                 PIN_setOutputValue(pinHandle, IOID_1, 0);
                 PIN_setOutputValue(pinHandle, IOID_2, 0);
                 PIN_setOutputValue(pinHandle, IOID_9, 0);
                PIN_setOutputValue(pinHandle, IOID_8, 0);
                /*
                            * Set the device to sleep for 108ms. The packet transmission is
                            * set 100 ms in the future but takes about 7ms to complete and
                            * for the execution to hit the callback. A 1ms buffer is added to
                            * the sleep time to ensure the callback always execute prior to
                            * the end of usleep().
                            */
    
                usleep(10108000);//US休眠
    
                /* check to see if the transmit flag was set during sleep */
                if(!txDoneFlag){
                    txSleepPeriodsElapsed++;
                    
                    if(txSleepPeriodsElapsed == 3){
                        /* 324 ms have passed. We need to abort the transmission */
                        if(EasyLink_abort() == EasyLink_Status_Success)
                        {
                            /*
                             * Abort will cause the txDoneCb to be called and the
                             * txDoneFlag to be set
                             */
                            while(!txDoneFlag){};
                        }
                        break;
                    }
                }
            }
    #else
            EasyLink_Status result = EasyLink_transmit(&txPacket);
    
            if (result == EasyLink_Status_Success)
            {
                /* Toggle LED1 to indicate TX */
            //    PIN_setOutputValue(pinHandle, Board_PIN_LED1,!PIN_getOutputValue(Board_PIN_LED1));
            }
            else
            {
                /* Toggle LED1 and LED2 to indicate error */
             //   PIN_setOutputValue(pinHandle, Board_PIN_LED1,!PIN_getOutputValue(Board_PIN_LED1));
             //   PIN_setOutputValue(pinHandle, Board_PIN_LED2,!PIN_getOutputValue(Board_PIN_LED2));
            }
    #endif //RFEASYLINKTX_ASYNC
        }
    }
    

    尝试修改代码,基本可以实现 GPIO 高低电平

    出现新问题;使用 SmartRF Studio 7测试发送器至接收器的情况

    经过多次测试、发现 PA 有时不工作、

    分析原因:它应该是代码上的 GPIO 控制计时问题、

    GPIO 9提前关闭,导致 PA 处于电源未通电状态,需要在代码中添加延迟机制,

    您是否有更好的建议来控制此 PA 代码?

    谢谢!

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

    抱歉、在校验代码中未驱动 MCU GPIO 9

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

    尊敬的 Likang:

    请共享  SmartRF 中使用的引脚配置。 我认为 禁用 LDO 不是一个好主意。 如果您只禁用外部 PA、这是否足够呢? LDO 具有较长的启动时间、因此在唤醒后会立即不可用。  

    此致、

    Hg

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

    您好,HG

    LDO 具有较长的启动时间、因此在唤醒后会立即不可用。  

    准备尝试:添加一个延迟机制到代码.

    代码: CPUdelay (16129032);

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

    尊敬的 Likang:

    您是否已使用您分享的引脚配置进行过此尝试? 它在 SmartRF 中是否工作?

    此致、

    Hg

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

    您好,HG

    我已重新更改代码,已成功驱动所有使用的 GPIO、

    准备尝试:添加一个延迟机制到代码.

    准备就绪:为您的代码添加 GPIO 延迟机制。

    #include "smartrf_settings/smartrf_settings.h"
    
    /* Board Header files */
    #include "Board.h"
    
    /* Standard C Libraries */
    #include <stdlib.h>
    #include <stdint.h>
    #include <unistd.h>
    
    /* TI Drivers */
    #include <ti/drivers/pin/PINCC26XX.h>
    #include <ti/drivers/Power.h>
    #include <ti/drivers/rf/RF.h>
    #include <ti/devices/DeviceFamily.h>
    
    /* EasyLink API Header files */
    #include "easylink/EasyLink.h"
    
    /* Undefine to not use async mode */
    #define RFEASYLINKTX_ASYNC
    
    #define RFEASYLINKTX_BURST_SIZE         10
    #define RFEASYLINKTXPAYLOAD_LENGTH      30
    
    /* Pin driver handle */
    static PIN_Handle pinHandle;
    static PIN_State pinState;
    
    /*
     * Application LED pin configuration table:
     *   - All LEDs board LEDs are off.
     */
    #define IO_CTX                     IOID_2 // =0:RX妯″紡,    =1:TX妯″紡
    #define IO_CSD                     IOID_1 // =0:Sleep妯″紡, =1:姝e父妯″紡
    #define LDO_EN                     IOID_9
    #define TMP112_EN                 IOID_8
    //GPIO_setConfig(Board_GPIO_TMP112_EN, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
    PIN_Config pinTable[] = {
        //Board_PIN_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
       // Board_PIN_LED2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
        IO_CTX| PIN_GPIO_OUTPUT_EN  | PIN_GPIO_HIGH | PIN_PUSHPULL| PIN_DRVSTR_MAX,
        IO_CSD | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH  | PIN_PUSHPULL| PIN_DRVSTR_MAX,
        LDO_EN | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH  | PIN_PUSHPULL| PIN_DRVSTR_MAX,
        TMP112_EN  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH  | PIN_PUSHPULL| PIN_DRVSTR_MAX,
        PIN_TERMINATE
    };
    
    
    static uint16_t seqNumber;
    
    #ifdef RFEASYLINKTX_ASYNC
    static volatile bool txDoneFlag;
    static volatile uint8_t txSleepPeriodsElapsed;
    #endif //RFEASYLINKTX_ASYNC
    
    #ifdef RFEASYLINKTX_ASYNC
    void txDoneCb(EasyLink_Status status)
    {
        if (status == EasyLink_Status_Success)
        {
            /* Toggle LED1 to indicate TX */
    //        PIN_setOutputValue(pinHandle, Board_PIN_LED1,!PIN_getOutputValue(Board_PIN_LED1));
            PIN_setOutputValue(pinHandle, IO_CTX,!PIN_getOutputValue(IO_CTX));
            PIN_setOutputValue(pinHandle, IO_CSD,!PIN_getOutputValue(IO_CSD));
            PIN_setOutputValue(pinHandle, LDO_EN,!PIN_getOutputValue(LDO_EN));
            PIN_setOutputValue(pinHandle, TMP112_EN,!PIN_getOutputValue(TMP112_EN));
    
        }
        else if(status == EasyLink_Status_Aborted)
        {
            /* Toggle LED2 to indicate command aborted */
    //        PIN_setOutputValue(pinHandle, Board_PIN_LED2,!PIN_getOutputValue(Board_PIN_LED2));
        }
        else
        {
            /* Toggle LED1 and LED2 to indicate error */
    //        PIN_setOutputValue(pinHandle, Board_PIN_LED1,!PIN_getOutputValue(Board_PIN_LED1));
    //        PIN_setOutputValue(pinHandle, Board_PIN_LED2,!PIN_getOutputValue(Board_PIN_LED2));
        }
        txDoneFlag = true;
        txSleepPeriodsElapsed = 0;
    }
    #endif //RFEASYLINKTX_ASYNC
    
    
    void *mainThread(void *arg0)
    {
       uint32_t absTime;
    
        /* Open LED pins */
        pinHandle = PIN_open(&pinState, pinTable);
        if (pinHandle == NULL)
        {
            while(1);
        }
    
        /* Clear LED pins */
        CPUdelay(16129032);  //延时1S
        PIN_setOutputValue(pinHandle, IO_CTX, 0);
        CPUdelay(16129032);  //延时1S
        PIN_setOutputValue(pinHandle, IO_CSD, 0);
        CPUdelay(16129032);  //延时1S
        PIN_setOutputValue(pinHandle, LDO_EN, 0);
        CPUdelay(20000000);  //
        PIN_setOutputValue(pinHandle, TMP112_EN, 0);
        // 3 cycles per loop: 1 loop @ 48 Mhz ~= 62 ns *
        //  CPUdelay(16129032);//增加延时机制
    //    GPIO_setConfig(TMP112_EN, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
    //    GPIO_setConfig(TMP112_EN, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
    //    GPIO_write(TMP112_EN, TMP112_EN_ON);
        static uint8_t txBurstSize = 0;
    
    #ifdef RFEASYLINKTX_ASYNC
        /* Reset the sleep period counter */
        txSleepPeriodsElapsed = 0;
        /* Set the transmission flag to its default state */
        txDoneFlag = false;
    #endif //RFEASYLINKTX_ASYNC
    
        // Initialize the EasyLink parameters to their default values
        EasyLink_Params easyLink_params;
        EasyLink_Params_init(&easyLink_params);
    
        /*
         * Initialize EasyLink with the settings found in easylink_config.h
         * Modify EASYLINK_PARAM_CONFIG in easylink_config.h to change the default
         * PHY
         */
        if (EasyLink_init(&easyLink_params) != EasyLink_Status_Success){
            while(1);
        }
    
    
        /*
         * If you wish to use a frequency other than the default, use
         * the following API:
         * EasyLink_setFrequency(868000000);
         */
    
        while(1) {
            EasyLink_TxPacket txPacket =  { {0}, 0, 0, {0} };
    
            /* Create packet with incrementing sequence number and random payload */
            txPacket.payload[0] = (uint8_t)(seqNumber >> 8);
            txPacket.payload[1] = (uint8_t)(seqNumber++);
            uint8_t i;
            for (i = 2; i < RFEASYLINKTXPAYLOAD_LENGTH; i++)
            {
                txPacket.payload[i] = rand();
            }
    
            txPacket.len = RFEASYLINKTXPAYLOAD_LENGTH;
    
            /*
             * Address filtering is enabled by default on the Rx device with the
             * an address of 0xAA. This device must set the dstAddr accordingly.
             */
            txPacket.dstAddr[0] = 0xaa;
    
            /* Add a Tx delay for > 500ms, so that the abort kicks in and brakes the burst */
            if(EasyLink_getAbsTime(&absTime) != EasyLink_Status_Success)
            {
                // Problem getting absolute time
            }
            if(txBurstSize++ >= RFEASYLINKTX_BURST_SIZE)
            {
                /* Set Tx absolute time to current time + 1s */
    
                txPacket.absTime = absTime + EasyLink_ms_To_RadioTime(1000);
                txBurstSize = 0;
            }
            /* Else set the next packet in burst to Tx in 100ms */
            else
            {
                /* Set Tx absolute time to current time + 100ms */
                txPacket.absTime = absTime + EasyLink_ms_To_RadioTime(100);
            }
    
    #ifdef RFEASYLINKTX_ASYNC
            /*
             * Set the Transmit done flag to false, callback will set it to true
             * Also set the sleep counter to 0
             */
            txDoneFlag = false;
            txSleepPeriodsElapsed = 0;
    
            /* Transmit the packet */
            EasyLink_transmitAsync(&txPacket, txDoneCb);
    
            while(!txDoneFlag){
                /*
                 * Set the device to sleep for 108ms. The packet transmission is
                 * set 100 ms in the future but takes about 7ms to complete and
                 * for the execution to hit the callback. A 1ms buffer is added to
                 * the sleep time to ensure the callback always execute prior to
                 * the end of usleep().
                 */
    
                           //PIN_setOutputValue(pinHandle, Board_PIN_LED1, 0);
                          // PIN_setOutputValue(pinHandle, Board_PIN_LED2, 0);
               //            CPUdelay(16129032);//增加延时机制
               //             PIN_setOutputValue(pinHandle, IOID_6, 0);
               //             CPUdelay(16129032);
               //             PIN_setOutputValue(pinHandle, IOID_7, 0);
               //             CPUdelay(16129032);
               //             PIN_setOutputValue(pinHandle, IOID_27, 0);
               //             CPUdelay(16129032);
               //            PIN_setOutputValue(pinHandle, IOID_26, 0);
                usleep(5108000);//US休眠
    
                /* check to see if the transmit flag was set during sleep */
                if(!txDoneFlag){
                    txSleepPeriodsElapsed++;
                    if(txSleepPeriodsElapsed == 3){
                        /* 324 ms have passed. We need to abort the transmission */
                        if(EasyLink_abort() == EasyLink_Status_Success)
                        {
                            /*
                             * Abort will cause the txDoneCb to be called and the
                             * txDoneFlag to be set
                             */
                            while(!txDoneFlag){};
                        }
                        break;
                    }
                }
            }
    #else
            EasyLink_Status result = EasyLink_transmit(&txPacket);
    
            if (result == EasyLink_Status_Success)
            {
                /* Toggle LED1 to indicate TX */
                PIN_setOutputValue(pinHandle, Board_PIN_LED1,!PIN_getOutputValue(Board_PIN_LED1));
            }
            else
            {
                /* Toggle LED1 and LED2 to indicate error */
                PIN_setOutputValue(pinHandle, Board_PIN_LED1,!PIN_getOutputValue(Board_PIN_LED1));
                PIN_setOutputValue(pinHandle, Board_PIN_LED2,!PIN_getOutputValue(Board_PIN_LED2));
            }
    #endif //RFEASYLINKTX_ASYNC
        }
    }
    

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

    HI HG  

    如果尝试调试 GPIO 9延迟、那么调试也不会产生更理想的效果、

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

    您好、 HG  

    取消 LDO 测试,GPIO DIO_1 DIO_2控制 SKY66115

    使用 SmartRF Studio 7测试 RX RSSI。

    15:17:07.366 | 1f | 43520 | 34 93 b1 bc 60 ed 55 db 8d 66 27 79 16 b1 78 a7 18 b6 8f 98 fb 20 44 0e 6e a5 5e 88 26  |  -95
    15:17:19.334 | 1f | 43520 | 35 14 ae 28 56 20 e8 66 ed ee 44 77 92 60 d8 7b 60 1f b4 69 61 6b bb bb cc a2 44 d9 fe  |  -53
    15:17:32.242 | 1f | 43520 | 36 91 74 46 3a 7e 59 8c 21 f1 c7 e8 f0 46 f3 b6 7b f4 d1 9b ed 9b 2d 74 3d cf 8b 01 6f  |  -96
    15:17:43.264 | 1f | 43520 | 37 a7 c0 51 8f 04 4d ed 6e a1 7e c4 1b df 47 da 20 4e d9 af 82 fb 07 70 76 7c 5c e0 e3  |  -53
    15:17:55.221 | 1f | 43520 | 38 bc f8 04 9c 87 2f 91 5a d4 e0 16 7a d6 95 e9 7c c1 5f d3 37 5c 6f 7b dd 4b 74 93 b3  |  -96
    15:18:07.185 | 1f | 43520 | 39 1a b8 c4 8d 09 fa 5a 0a 9a 09 af 95 db 25 59 17 74 15 13 7c 6f 08 6c ec ca 2c 31 c6  |  -50
    15:18:19.148 | 1f | 43520 | 3a be 10 9b 5c cd ba 39 71 8e 88 9c 73 38 c7 c4 78 f0 15 4d fb d2 77 59 53 c1 39 3c f7  |  -96
    15:18:31.118 | 1f | 43520 | 3b ef 89 ea 73 2b d2 21 29 ee d9 56 c8 24 9a 61 8e ba e0 e8 3d eb a7 8b de 4b 31 d4 39  |  -53
    15:18:43.080 | 1f | 43520 | 3c 90 ea dd 0f 23 fd be 1e 6b b2 bd d2 d4 8e 35 cb a1 29 42 13 77 cd 32 1b a5 d3 ab 7a  |  -96
    15:18:55.052 | 1f | 43520 | 3d 34 be 9c 66 b2 14 e4 ee bf 00 c5 fd 54 a9 07 0f d6 50 ec b0 df 2c d7 b9 c7 05 bb 4a  |  -54
    15:19:07.004 | 1f | 43520 | 3e f4 92 44 86 e6 94 c8 11 01 af ec 4b 19 0b 16 49 c0 ae 96 97 4f 97 93 b0 b5 9b b7 3a  |  -96


    发现问题 PA 50%操作失败、

    设置 SKY66115 TI 相关 swra528.pdf 后、我想检查射频通信通过率。

    谢谢

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

    您好!

    我不知道到底发生了什么。 如果您看看平均 RSSI、它对于每个其他数据包都变为低电平、 这对我来说有点奇怪。 是具有 SKY66115的发送器和接收器 CC1310。 您在运行哪个 PHY? 您每次如何发送不同的有效载荷? 是否要手动更改有效载荷并逐个发送数据包?

    此致、

    Hg

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

    我的 TX 演示 CC1310+sky66115、RX 演示 CC1310

    TX 发送数据代码上的当前是随机数据

    我将检查 TX 问题是否受代码影响

    谢谢