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:433MHz prueba de modos

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

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1055453/cc1310-433mhz-prueba-de-modos

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

Hola me gustaría modelficar el ejemplo rfCarrierWave para probar los distintos modos de transmisión ó n que se pueden en en este microcontroladorPero ME gustaría cambiar la frecencia a 433 MHz y que el recorator sea otro microcontrolador CC1310。 “¿Cómo podría 吗?

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

    请注意、本论坛使用的语言是英语。  

    在433MHz 下测试和评估 CC1310的最简单方法是获取 https://www.ti.com/tool/LAUNCHXL-CC1350-4 (CC1350具有与 CC1310相同的功能和性能)并使用 SmartRF Studio 设置频率。 频率在 CMD_FS 和 CMD_PROP_RADIO_DIV_SETUP 命令中设置、  有关更多详细信息、请参阅 www.ti.com/.../swcu117。  

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

    Hola de nuevo、他 trasnmisión 一个 cambiar la frecuencia a 4en dos ejemplos、el primero es rfEasyLinkTX y cambíe la frecencia de esta forma EasyLink_setFrequency (433000000);pero no funciona、¿tigo que cambiar algo 33MHz como el mudo de?  

    El segundo ejemplo es rfPacketTX que Cambie la frecuencia de esta forma ro  RF_cmdFs.frequency=433000000; pero tamboco funciona ¿hay que modificar algo más?

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

    请注意、本论坛使用的语言是英语。  

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

    大家好、我尝试在两个示例中将频率更改为433MHz、第一个示例是 rfEasyLinkTX、并以这种方式更改频率  EasyLink_setFrequency  (433000000);但它不起作用、我是否必须更改传输模式等其他内容?

    第二个示例是 rfPacketTX、它以这种方式更改频率 ro  RF_cmdFs.frequency=433000000;、但也不起作用、它是否必须进行其他修改?

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

    我建议使用 SmartRF Studio 并查看433MHz 设置。  

    需要另外两个覆盖/设置:

    -.lodiv 必须正确设置(0xA)  

    -//合成:将分频器偏置设置为禁用(特定于 loder=10)

    (uint32_t) 0x18000280、

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

    好的、非常感谢

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

    大家好、是 EasyLinkTX、

    我可以修改参数、将 FSK 的635bps 设置为曼彻斯特模式、还是只能建立 SmartRF Studio 中的通信以及此处所示的通信?
    
    只有这些组合才能实现?
    
    我能否将 EasyLink_Phy_625BPSLRM 置于智能设置中、然后将远距离模式更改为另一种模式? 

    typedef 枚举

    EasyLink_Phy_Custom = EasyLink_Phy_custom、//!<从 SmartRF Studio 导出的特定于客户 Phy 的设置
    EasyLink_Phy_50kbps2gfsk = EasyLink_Phy_50KBPS2GFSK、//!<低于1G 50kbps 数据速率的 PHY 设置、IEEE 802.15.4g GFSK。
    EasyLink_Phy_625bpsLrm = EasyLink_Phy_625BPSLRM、//!<适用于低于6251G bps 数据速率的 Phy 设置、远距离模式。
    EasyLink_Phy_2_4_200kbps2gfsk = EasyLink_Phy_2_4_200KBPS2GFSK、//!<适用于2.4GHz 200kbps 数据速率、IEEE 802.15.4g GFSK 的 PHY 设置。
    EasyLink_Phy_5kbpsSlLr = EasyLink_Phy_5KBPSSLLR、//!< SimpleLink 远距离(5kbps)
    EasyLink_Phy_2_4_100kbps2gfsk = EasyLink_Phy_2_4_100KBPS2GFSK、//!<适用于2.4GHz 100kbps 数据速率、IEEE 802.15.4g GFSK 的 PHY 设置。
    EasyLink_Phy_2_4_250kbps2gfsk = EasyLink_Phy_2_4_250KBPS2GFSK、//!<用于2.4GHz 250kbps 数据速率的 PHY 设置、IEEE 802.15.4g GFSK。
    EasyLink_Phy_200kbps2gfsk = EasyLink_Phy_200KBPS2GFSK、//!<用于200kbps 数据速率的 PHY 设置、IEEE 802.15.4g GFSK。
    EasyLink_Num_Phy_Settings、
    } EasyLink_PhyType;

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

    大家好、是 EasyLinkTX、

    我可以修改参数、将 FSK 的635bps 设置为曼彻斯特模式、还是只能建立 SmartRF Studio 中的通信以及此处所示的通信?
    
    只有这些组合才能实现?
    
    我能否将 EasyLink_Phy_625BPSLRM 置于智能设置中、然后将远距离模式更改为另一种模式? 

    typedef 枚举

    EasyLink_Phy_Custom = EasyLink_Phy_custom、//!<从 SmartRF Studio 导出的特定于客户 Phy 的设置
    EasyLink_Phy_50kbps2gfsk = EasyLink_Phy_50KBPS2GFSK、//!<低于1G 50kbps 数据速率的 PHY 设置、IEEE 802.15.4g GFSK。
    EasyLink_Phy_625bpsLrm = EasyLink_Phy_625BPSLRM、//!<适用于低于6251G bps 数据速率的 Phy 设置、远距离模式。
    EasyLink_Phy_2_4_200kbps2gfsk = EasyLink_Phy_2_4_200KBPS2GFSK、//!<适用于2.4GHz 200kbps 数据速率、IEEE 802.15.4g GFSK 的 PHY 设置。
    EasyLink_Phy_5kbpsSlLr = EasyLink_Phy_5KBPSSLLR、//!< SimpleLink 远距离(5kbps)
    EasyLink_Phy_2_4_100kbps2gfsk = EasyLink_Phy_2_4_100KBPS2GFSK、//!<适用于2.4GHz 100kbps 数据速率、IEEE 802.15.4g GFSK 的 PHY 设置。
    EasyLink_Phy_2_4_250kbps2gfsk = EasyLink_Phy_2_4_250KBPS2GFSK、//!<用于2.4GHz 250kbps 数据速率的 PHY 设置、IEEE 802.15.4g GFSK。
    EasyLink_Phy_200kbps2gfsk = EasyLink_Phy_200KBPS2GFSK、//!<用于200kbps 数据速率的 PHY 设置、IEEE 802.15.4g GFSK。
    EasyLink_Num_Phy_Settings、
    } EasyLink_PhyType;

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

    远距离模式(LRM)在以下位置介绍: https://www.ti.com/lit/pdf/swra642

    LRM 不使用曼彻斯特(请注意 、现代对讲机不需要曼彻斯特编码)

    您可以选择其中一个预定义设置,也可以使用您可以自己定义的“自定义”。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想 LRM 是最强大的模式、对吧? 但是、要获得更大的范围、最好的调制是什么? FSK、GFSK 或 OOK?
    
    如何定义设置? 我想使用 FSK、GFSK 和 OOK 测试 LRM 中的625bps。 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    -OOK 是一种传统格式。 对于新产品、不建议使用该器件、因为与其他格式相比、覆盖范围较差、频谱效率较差。

    - FSK 的频谱效率比 GFSK 差、这意味着通常使用 GFSK  

    您的总体系统规格是多少?   

    您是否了解过以下培训模块: dev.ti.com/.../node

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

    envar datos de humedad de varas plantaciones、estoy en Movimiento de una plantación a otra Middiendo la humedad y está lejos del nodo recipor。 tiene que ser 433Mhz

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

    抱歉、英文内容: 发送各种种植园的湿度数据、我正在从一个种植园移动到另一个测量湿度的种植园、它远离接收节点。 它必须为433Mhz。 我认为最好的是 LRM whit GFSK

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

    范围要求、网络类型(您是否希望多个节点向中央报告)或其他内容?  

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

    范围要求、网络类型(您是否希望多个节点向中央报告)或其他内容?  

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

    是的、许多节点将数据发送到中央设备。 范围大于500米。 当向中央发送数据时、中央会将数据 dor 4G 发送到一个平台、通过该平台、计算机可以查看数据。 I thibk 越好、即 simplelink LRM whit GFSK、DSSS=4 k=7且缩写=5kHz。 你怎么看?

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

    对于范围、是的。

    但该 phy 的频率容差很小、因此我宁愿选择2.5kbps 或5kbps LRM。

    这取决于节点发送数据的频率:如果有多个节点发送到中央、LRM 数据包需要很长时间才能传输。 确保您有足够的时间从所有节点传输数据,并有良好的冲突余量。

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

    非常好、我将采取措施、谢谢

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

    868MHz 可以比433MHz 更好吗?

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

    两个不同频带的性能相当相等。 但是:433MHz 频带上允许的输出功率远低于868MHz 频带上允许的输出功率、因此范围较差。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、如何设置输出以获得最大功率? 在 RF Studio 中、假设 TX 功率为15db、无论频带如何、它都是最大功率、对吧? 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    一件事是、您可以将其物理设置为最大输出功率。 但您还必须考虑允许发送的数量。 我强烈建议您查看您必须遵守的法规、以确保产品的使用位置符合要求。  

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

    好的、完美。

    由于我可以针对15dB Tx 功率将 CCFG_FORCE_VDDR_HH 设置为1、因此在 CCfg 中不会显示此标签、也不会显示在日志中。 
    或者不需要?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这位于 CCFG.c 文件的开头:

    //##############################
    //强制 VDDR 高电平设置(更高的输出功率但也更高的功耗)
    //##############################

    #ifndef CCFG_FORCE_VDDR_HH
    #define CCFG_FORCE_VDDR_HH 0x0 //使用默认 VDDR 调整
    //#define CCFG_FORCE_VDDR_HH 0x1 //强制 VDDR 电压达到工厂 HH 设置(FCFG1..VDDR_TRIM_HH)
    #endif

    您需要将其设置为获得最大输出功率。  

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

    您好、之三、   

    我有多个节点通过无线电传输、该微控制器实施了一些方法来避免碰撞、或者如何实现? 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请查看 SDK 中的"说前先听"示例、将其视为避免冲突的一种方法。  

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

    是的、我正在观看此视频、但在数据表中、我会这样说:

    • 自动说前监听(LBT)和清零通道辅助(CCA)

    但我想我应该对 LBT 进行编程、因为这不是自动的?

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

    大多数功能(即使它们是自动的)都必须设置和启动、因为没有为所有用户提供要使用该功能的功能、并且必须针对不同区域以不同的方式设置该功能。   

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

    我的代码中有问题、请不要初始化 EasyLink_params、并且始终在第223行出现泛化、而对于 EasyLink_STATUS_ERROR_params (1)、始终出现泛化。

    我使用 ADC 对模拟输入进行采样、并显示串行终端的此采样。 然后我要发送无线电。

    #include <stdint.h>
    #include <stdio.h>
    #include "smartrf_settings/smartrf_settings.h"
    /* For sleep() */
    /* 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"
    
    /* Driver Header files */
    #include <ti/drivers/ADCBuf.h>
    #include <ti/drivers/UART.h>
    
    /* Example/Board Header files */
    #include "Board.h"
    
    #define RFEASYLINKTXPAYLOAD_LENGTH      30
    #define ADCBUFFERSIZE    (20)
    #define UARTBUFFERSIZE   ((20 * ADCBUFFERSIZE) + 24)
    
    static uint16_t seqNumber;
    uint16_t sampleBufferOne[ADCBUFFERSIZE];
    uint16_t sampleBufferTwo[ADCBUFFERSIZE];
    uint32_t microVoltBuffer[ADCBUFFERSIZE];
    uint32_t buffersCompletedCounter = 0;
    char uartTxBuffer[UARTBUFFERSIZE];
    
    /* Driver handle shared between the task and the callback function */
    UART_Handle uart;
    
    
    /*
    void RADIO()
    {
        uint32_t absTime;
            EasyLink_Params easyLink_params;        // Cra los parametros
            //EasyLink_Params_init(&easyLink_params); // Initialize the EasyLink parameters to their default values
    
            // inicializa los parametros y abre el controlador de RF y configura un esquema de modulacion ne config.h
             // para configurarlo en mod largo alcance u otro modo cambiar en init el modo por EasyLink_PHY_5KBPSSLLR largo alcance
            if (EasyLink_init(&easyLink_params) != EasyLink_Status_Success){
                while(1);
            }
             // EasyLink_setFrequency(868000000);    //funciona este ejemplo si cambias los smartrf_setting
            EasyLink_setFrequency(868000000); //frecuencia 868 mhz
    
            uint16_t i;
            for(i=0; i<100; i++)
            {
    
                //creo un paquete 4bytes tiene 4 campos para tx(direccion destino, timepo absoluto, longitud paquete y payload)
                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();
                }
                //tamaño del paquete de 30
                txPacket.len = RFEASYLINKTXPAYLOAD_LENGTH;
    
    
                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
                }
                    // Set Tx absolute time to current time + 1000ms
                    txPacket.absTime = absTime + EasyLink_ms_To_RadioTime(100);
    
                    //transmitir paquete
                    EasyLink_Status result = EasyLink_transmit(&txPacket);
    
            }
    }*/
    /*
     * This function is called whenever an ADC buffer is full.
     * The content of the buffer is then converted into human-readable format and
     * sent to the PC via UART.
     */
    void adcBufCallback(ADCBuf_Handle handle, ADCBuf_Conversion *conversion,
        void *completedADCBuffer, uint32_t completedChannel)
    {
        uint_fast16_t i;
        uint_fast16_t uartTxBufferOffset = 0;
    
        /* Adjust raw ADC values and convert them to microvolts */
        ADCBuf_adjustRawValues(handle, completedADCBuffer, ADCBUFFERSIZE,
            completedChannel);
        ADCBuf_convertAdjustedToMicroVolts(handle, completedChannel,
            completedADCBuffer, microVoltBuffer, ADCBUFFERSIZE);
    
        /* Start with a header message. */
        uartTxBufferOffset = snprintf(uartTxBuffer,
            UARTBUFFERSIZE - uartTxBufferOffset, "\r\nBuffer %u finished.",
            (unsigned int)buffersCompletedCounter++);
    
        /* Write raw adjusted values to the UART buffer if there is room. */
        uartTxBufferOffset += snprintf(uartTxBuffer + uartTxBufferOffset,
            UARTBUFFERSIZE - uartTxBufferOffset, "\r\nRaw Buffer: ");
    
        for (i = 0; i < ADCBUFFERSIZE && uartTxBufferOffset < UARTBUFFERSIZE; i++) {
            uartTxBufferOffset += snprintf(uartTxBuffer + uartTxBufferOffset,
                UARTBUFFERSIZE - uartTxBufferOffset, "%u,",
            *(((uint16_t *)completedADCBuffer) + i));
        }
    
        /* Write microvolt values to the UART buffer if there is room. */
        if (uartTxBufferOffset < UARTBUFFERSIZE) {
            uartTxBufferOffset += snprintf(uartTxBuffer + uartTxBufferOffset,
                UARTBUFFERSIZE - uartTxBufferOffset, "\r\nMicrovolts: ");
    
            for (i = 0; i < ADCBUFFERSIZE && uartTxBufferOffset < UARTBUFFERSIZE; i++) {
                uartTxBufferOffset += snprintf(uartTxBuffer + uartTxBufferOffset,
                    UARTBUFFERSIZE - uartTxBufferOffset, "%u,",
                    (unsigned int)microVoltBuffer[i]);
            }
        }
    
        /*
         * Ensure we don't write outside the buffer.
         * Append a newline after the data.
         */
        if (uartTxBufferOffset < UARTBUFFERSIZE) {
            uartTxBuffer[uartTxBufferOffset++] = '\n';
        }
        else {
            uartTxBuffer[UARTBUFFERSIZE-1] = '\n';
        }
    
        /* Display the data via UART */
        UART_write(uart, uartTxBuffer, uartTxBufferOffset);
    }
    
    /*
     * Callback function to use the UART in callback mode. It does nothing.
     */
    void uartCallback(UART_Handle handle, void *buf, size_t count) {
       return;
    }
    
    
    /*
     *  ======== mainThread ========
     */
    void *mainThread(void *arg0)
    {
    
        uint32_t absTime;
        EasyLink_Params easyLink_params;        // Cra los parametros
        int initparams=EasyLink_init(&easyLink_params);
    //    easyLink_params.ui32ModType=EasyLink_Phy_Custom;
    //    easyLink_params.pGrnFxn=NULL;
    //    easyLink_params.pClientEventCb=NULL;
    //    easyLink_params.nClientEventMask=NULL;
        UART_Params uartParams;
        ADCBuf_Handle adcBuf;
        ADCBuf_Params adcBufParams;
        ADCBuf_Conversion continuousConversion;
    
        /* Call driver init functions */
    
        UART_init();
        ADCBuf_init();              //inicializo drivers
        //Power_shutdown(0, 0);
        /* Create a UART with data processing off. */
        UART_Params_init(&uartParams);
        uartParams.writeDataMode = UART_DATA_BINARY;
        uartParams.writeMode = UART_MODE_CALLBACK;
        uartParams.writeCallback = uartCallback;
        uartParams.baudRate = 115200;
        uart = UART_open(Board_UART0, &uartParams);
    
               /* Set up an ADCBuf peripheral in ADCBuf_RECURRENCE_MODE_ONE_SHOT */
                  ADCBuf_Params_init(&adcBufParams);           //inicializa parámetros por defecto
                  adcBufParams.callbackFxn = adcBufCallback;   //cambio el parametro para que se ejecute en una rutina de interrupción
                  adcBufParams.recurrenceMode = ADCBuf_RECURRENCE_MODE_ONE_SHOT; //pongo parámetro para modo muestreo continuo
                  adcBufParams.returnMode = ADCBuf_RETURN_MODE_CALLBACK;       //pongo para que se pro
                  adcBufParams.samplingFrequency = 200;
                  adcBuf = ADCBuf_open(Board_ADCBUF0, &adcBufParams);
    
        /* Configure the conversion struct */
        continuousConversion.arg = NULL;
        continuousConversion.adcChannel = Board_ADCBUF0CHANNEL0;
        continuousConversion.sampleBuffer = sampleBufferOne;
        continuousConversion.sampleBufferTwo = sampleBufferTwo;
        continuousConversion.samplesRequestedCount = ADCBUFFERSIZE;
    
        if (adcBuf == NULL){
            /* ADCBuf failed to open. */
            while(1);
        }
    
        //tomo muestras cada 10 segundos y me vuelvo al modo standby, estoy en modo one shot para tomar x medidas del buffer y lo muestro por la uart a 115200 baudios
        while(1)
        {
            sleep(1);
            //Start converting.
                if (ADCBuf_convert(adcBuf, &continuousConversion, 1) !=
                        ADCBuf_STATUS_SUCCESS) {
                    /* Did not start conversion process correctly. */
                    while(1);
                }
    
                       // inicializa los parametros y abre el controlador de RF y configura un esquema de modulacion ne config.h
                        // para configurarlo en mod largo alcance u otro modo cambiar en init el modo por EasyLink_PHY_5KBPSSLLR largo alcance
                     //  if (initparams!= EasyLink_Status_Success){
    
                           if (initparams == EasyLink_Status_Param_Error)
                                               while(1);
    
                     //  }
                        // EasyLink_setFrequency(868000000);    //funciona este ejemplo si cambias los smartrf_setting
                       EasyLink_setFrequency(868000000); //frecuencia 868 mhz
    
                       uint16_t i;
                       for(i=0; i<100; i++)
                       {
    
                           //creo un paquete 4bytes tiene 4 campos para tx(direccion destino, timepo absoluto, longitud paquete y payload)
                           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();
                           }
                           //tamaño del paquete de 30
                           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
                           }
                               /* Set Tx absolute time to current time + 1000ms */
                               txPacket.absTime = absTime + EasyLink_ms_To_RadioTime(100);
    
                               //transmitir paquete
                               EasyLink_Status result = EasyLink_transmit(&txPacket);
    
                       }
        }
    
    
    }

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

    如果您只运行无线电而不运行其他任何功能、您是否能够使无线电正常工作? 我建议在联合收割机之前、让每个部件启动并运行。  

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

    是的、只有无线电工作正常、然后 ADC 工作正常、但组合不工作

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

    在第164行中、您调用 EasyLink_Params EasyLink_params;但我看不到您正在运行 EasyLink_Params_init (&EasyLink_params);?  (您已将其注释出代码中的另一个位置)

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

    II 已经使其工作、但对于 NoRTOS、无法使用某种信标或事件标志、对吧? 我将尝试在 tirtos 中重做它。 如果我有任何问题、我会说您有新代码

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

    您开始考虑 noRTOS 解决方案的任何原因?  

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

    因为、我看到这些示例及其更简单。 我知道 FreeRTOS、但没有 TiRtos。 我在第55行的代码中有1个问题。 此行中的所有时间被阻止。

    #include <stdlib.h>
    #include <stdint.h>
    #include <unistd.h>
    #include <stdio.h>
    
    /* BIOS Header files */
    #include <ti/sysbios/BIOS.h>
    #include <pthread.h>
    #include <Semaphore.h>
    #include <ti/sysbios/knl/Clock.h>
    
    /* TI-RTOS Header files */
    #include <ti/drivers/PIN.h>
    
    /* Board Header files */
    #include "Board.h"
    
    /* EasyLink API Header files */
    #include "easylink/EasyLink.h"
    
    /* Application header files */
    #include "smartrf_settings/smartrf_settings.h"
    
    /* Undefine to not use async mode */
    #define RFEASYLINKTX_ASYNC
    
    #define RFEASYLINKTXPAYLOAD_LENGTH      30
    
    static pthread_t manejadorRadio, manejadorADC;
    
    static uint16_t seqNumber;
    
    
    static void *radiocallback(void *arg)
    {
        uint32_t absTime;
    
        if (EasyLink_init(EasyLink_Phy_Custom) != EasyLink_Status_Success){
            while(1);
        }
    
        //funciona este ejemplo si cambias los smartrf_setting 868 mhz defecto
    
        while(1) {
    
            //creo un paquete 4bytes tiene 4 campos para tx(direccion destino, timepo absoluto, longitud paquete y payload)
            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();
            }
            //tamaño del paquete de 30
            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;
    
                /* Set Tx absolute time to current time + 1000ms */
                txPacket.absTime = absTime + EasyLink_ms_To_RadioTime(100);
    
                //transmitir paquete
                EasyLink_Status result = EasyLink_transmit(&txPacket);
    
        }
    }
    
    /*
     *  ======== main ========
     */
    int main(void)
    {
        /* Call driver init functions. */
        Board_init();
    
        int s=pthread_create(&manejadorRadio,NULL,&radiocallback,NULL);
        if(s!=0)
        {
            while(1);
        }
        /* Start BIOS */
        BIOS_start();
    
        return (0);
    }
    

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

    -您将什么定义为"阻塞"?

    -此代码与 rfEasyLinkTx 示例类似,但任务设置不同,并且异步模式已被删除。 如果您从该示例开始并删除异步模式、那么它是否起作用?  

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

    缓解这方面的错误。 而不执行其余代码。  是的、我删除了异步模式、工作正常。 我不知道 task_construct,我知道 POSIX 线程,创建很好,工作正常,但我不知道在什么地方工作 rand();

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

    我又开始了,现在问题已经解决了。

    我有2个问题:

    如果我根据 RF Studio 中的值配置 smartrf_settings.c、但我输入了主程序 EasyLink_init (&EasyLink_params);这会使参数因缺陷而无法使用 smartrf_config.c?  

    如果我要激活自动 LTB、我该怎么做?

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

    您是否查看了 EasyLink API 文档: dev.ti.com/.../easylink-api-reference.html

    对于 LBT:请参阅我链接到的示例。  

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

    好的、我检查一下这个。 缺陷的参数是 PHY_CIN惯例。 我的测试是正确的。

    变速器的接收器能否同时监听多声道? 还是先侦听1个通道、如果它正忙更改为其他通道?

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

    LBT 仅检查给定通道中的 RSSI。  

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

    好的、如果我不想冲突、我可以使用 FDMA 来实现吗? 你有示例吗? 还是只能在该麦克风中使用诸如 rfsynchronusTX 等状态机的 LBT 或 TDMA?  

    我需要节点尽可能长地处于睡眠状态、它们每8小时唤醒一次并进行传输 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您正在考虑为每个节点分配一个单独的信道? 您仍应使用 LBT 或类似产品。 从监管的角度来看、由于在给定通道上传输的设备可能是节点以外的其他设备。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我想为每个节点分配一个频率通道。 
    我的限制是、发行人需要在大多数时间都处于低功耗状态。
    但接收器由电网供电、因此我可以补偿任何缺陷。
    我想在5个节点之间建立不同的频率信道、例如、这些节点发送数据、接收器收集数据。
    但我不知道如何设置这些通道的频率。 我使用的是 EasyLink API、但无法使用相同的 API。
    您是否有任何示例、以便我可以看到? 或者、当我将软件加载到每个节点时、为了建立不同的 FDMA 通道、我必须手动更改频率吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    EasyLink_Status EasyLink_setFrequency (uint32_t ui32Frequency)

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

    数据包具有 ADDR,如果我使用 addr=ox01,接收器不启用 ADDR,它不能接收该数据包? addr 不是一个差动器、它仅交换此数据包的 ID? 是正确的吗?

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

    我有 EasyLink_enable_multi_client 真此活动多个客户端、但如何检查客户端?

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

    我不知道如何配置接收器,以了解在不同信道发出不同的干扰时,哪些信道会被接收到。 我启用  ASINLINK_ENABLE_MULTI_CLIENT。 然后,使用 EasyLink_receev(),但如何选择通道? 通道是 ADDR 的数据包? 如何在 RF Studio 中选择 DE 通道?  

    在数据集和用户手册中、不要说多通道。

    只有在 CMD_PROP_RADIO_DIV_SETUP 的参数中,才会说 soming multi-channel 并这样说:

    uint16_t centerFreq; 所用频段的中心频率、单位为 MHz;用于计算一些内部 TX 和 RX 参数。
     对于单通道射频系统、应将其设置为等于使用的射频频率。
     对于多通道射频系统(例如跳频展频)、应将其设置为相等

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

    请注意、EasyLink 只是一个抽象层。 EasyLink 如何使用射频驱动程序可在示例中的 EasyLink 文件夹中找到。  

    您可以选择是否激活地址过滤

    在 https://dev.ti.com/tirex/content/simplelink_cc13x0_sdk_4_10_01_01/docs/proprietary-rf/proprietary-rf-users-guide/easylink/easylink-api-reference.html 中搜索 addr

    如果启用了地址过滤,接收器将丢弃发送到与地址列表中指定地址不同的地址的数据包。  

    EasyLink_enable_multi_client:我认为该选项允许使用多个射频句柄、并且可以更轻松地在两个 PHY 之间切换。

    我不完全理解为什么您要对不同节点使用不同的频率。 跳频是另一种选择、因为所有节点都将根据预设计划更改频率、RX 将仅监听在给定时间将使用的信道。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想这些是我在
    
    不同通道上几乎完成跳频传输的最后一个问题、每个通道的频率都是正确的?
    我想在不同的通道上传输数据、为了让接收器使用此技术检查每个通道、您可以避免一些碰撞问题。
    如何对此跳频方法进行编程? 我可以从射频工作室上传吗?
    每个通道的跳过是自动跳过还是必须对其进行编程?