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.

[参考译文] CC2640R2F:在专有无线电模式下为2Mbps 或至少1Mbps

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/648821/cc2640r2f-2-mbps-or-at-least-1-mbps-in-a-proprietary-radio-mode

器件型号:CC2640R2F
主题中讨论的其他器件: CC2544CC2541

我们需要在现有 CC2544软件狗和新 CC2640R2F 原型之间实现无线电链路。

采用 GFSK 调制的比特率、CC2544支持:

  • 250kbps、160kHz 偏差;
  • 1Mbps、160kHz 偏差;
  • 1Mbps、250kHz 偏差;
  • 2Mbps、320kHz 偏差;
  • 2Mbps、500kHz 偏差。

在 CC2640R2F 侧、我们只能实现250kbps、偏差为160kHz。 附加的源代码片段。

但我们需要将比特率提高到2Mbps 或至少1Mbps。

我们要求您为专有无线电模式命令提供适当的设置:0x3806、0x0803、0x3801、0x3802。

如果可能、我们希望看到两个 CC2640R2F 芯片之间以5Mbps 的速度进行无线电通信。

//覆盖 CMD_PROP_RADIO_SETUP
UINT32_t pOverrides[]=
{
(uint32_t) 0xFFFFFFFF、
};

// CMD_PROP_RADIO_SETUP
RFC_CMD_PROP_RADIO_SETUP_t RF_cmdPropRadioDivSetup =
{
.commandNo = 0x3806、
.status = 0x0000、
.pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
.StartTime = 0x00000000、
.startTrigger.triggerType = 0x0、
.startTrigger.bEnaCmd = 0x0、
.startTrigger.triggerNo = 0x0、
.startTrigger.PastTrig = 0x0、
.condition.rule = 0x1、
.condition.nSkip = 0x0、
.modulation.modType = 0x1、// 0:FSK、1:GFSK、其他:保留
.modulation.deviation = 640、// FSK 调制的偏差(250Hz 步长)
symbolRate.prescale = 15、//p 是预分频器值、由 symbolRate.prescale 给出、其范围为4至15
symbolRate.rateWord = 163840、//Fbaud =(R◊Fclk)/(p◊2^20)、Fclk 为24MHz 的系统时钟频率
.rxBw = 10、
.PreambBytes = 0x4、
.Conf.前置 放大器模式= 0x0、
.formatConf.nSwBits = 32、
.formatConf.bBitVersal = 0x1、
.formatConf.bMsbFirst = 0x1、
formatConf.fecMode = 0x0、
formatConf.whitenMode = 0x0、
.config.frontEndMode = 0x0、
config.biasMode = 0x0、//!<\brief 0:内部偏置、R2 skal ha 内部
config.analogCfgMode = 0x0、
config.bNoFsPowerUp = 0x0、
TxPower = 0xAB3F、//0xAB3F:0dB
.pRegOverride = pOverrides
、};

// CMD_FS
RFC_CMD_FS_t RF_cmdF =
{
.commandNo = 0x0803、
.status = 0x0000、
.pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
.StartTime = 0x00000000、
.startTrigger.triggerType = 0x0、
.startTrigger.bEnaCmd = 0x0、
.startTrigger.triggerNo = 0x0、
.startTrigger.PastTrig = 0x0、
.condition.rule = 0x1、
.condition.nSkip = 0x0、
.frequency = 2379、
fractFreq = 0x0000、
synthConf.bTxMode = 1、
synthConf.refFreq = 0x0、
};

// CMD_PROP_TX
RFC_CMD_PROP_TX_t RF_cmdPropTx =
{
.commandNo = 0x3801、
.status = 0x0000、
.pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
.StartTime = 0x00000000、
.startTrigger.triggerType = 0x0、
.startTrigger.bEnaCmd = 0x0、
.startTrigger.triggerNo = 0x0、
.startTrigger.PastTrig = 0x0、
.condition.rule = 0x1、
.condition.nSkip = 0x0、
.pktConf.bFsOff = 0x0、
.pktConf.bUseCrc = 0x1、
.pktConf.bVarLen = 0x1、
.pktLen = 0x20、//设置应用有效载荷长度
syncdWord = 0x29417671、
.pPKT = 0、//插入适用的指针:(uint8_t*)&xxx
};

// CMD_PROP_RX
RFC_CMD_PROP_RX_t RF_cmdPropRx =
{
.commandNo = 0x3802、
.status = 0x0000、
.pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
.StartTime = 0x00000000、
.startTrigger.triggerType = 0x0、
.startTrigger.bEnaCmd = 0x0、
.startTrigger.triggerNo = 0x0、
.startTrigger.PastTrig = 0x0、
.condition.rule = 0x1、
.condition.nSkip = 0x0、
.pktConf.bFsOff = 0x0、
.pktConf.bRepeatOk = 0x0、
.pktConf.bRepeatNok = 0x0、
.pktConf.bUseCrc = 0x1、
.pktConf.bVarLen = 0x1、
.pktConf.bChkAddress = 0x0、
.pktConf.endType = 0x0、
.pktConf.filterOp = 0x0、
rxConf.bAutoFlushIgnored = 0x0、
rxConf.bAutoFlushCrcErr = 0x0、
rxConf.bIncludeHdr = 0x1、
rxConf.bIncludeCrc = 0x0、
rxConf.bAppendRssi = 0x0、
rxConf.bAppendTimestamp = 0x0、
rxConf.bAppendStatus = 0x1、
syncdWord = 0x29417671、
.maxPktLen = 0x7d、//确保数据输入足够大
.address0 = 0x00、
.address1 = 0x00、
endTrigger.triggerType = 0x1、
.endTrigger.bEnaCmd = 0x0、
.endTrigger.triggerNo = 0x0、
.endTrigger.PastTrig = 0x0、
.EndTime = 0x00000000、
.pQueue = 0、//插入适用的指针:(dataQueue_t*)&xxx
.pOutput = 0、//插入适用的指针:(uint8_t*)&xxx
}; 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    在使用专有 API 的情况下、可以在 BLE PHY (1Mbps 数据速率)和250kHz 偏差下对 CC2640R2进行编程。  

    如果这对您适用、我们可以提供所需的设置。  

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1Mbps 优于250kbps。 请提供这些设置。 谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我正在使用专有无线电模式开发基于 CC2640R2F 的新产品。 您能为我提供1mbps 的设置吗?如果可能、请提供2/4 Mbps 的设置吗?
    此致、
    Emanuele Viviani
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    对于 BLE PHY、您可以从 SmartRF Studio 导出设置。 例如、对于1Mbps:

    //
    //由 SmartRF Studio 版本2.7.0 (内部版本#23)生成
    //针对 SimpleLink SDK 版本进行了测试:CC2640R2 SDK 1.30.xx.xx
    //器件:CC2640R2F 修订版1.0
    //
    
    
    
    //
    //参数摘要
    //高级 地址:010203040506
    // BLE Channel:17
    //扩展头:09 010203040506 babe
    //频率:2440MHz
    // PDU 有效载荷长度:30
    // TX 功率:5dBm
    // Whitening:true
    
    
    #ifdef device_fFamily
    undef device_family_path
    #define DEVICE_FACE_PATH (x) 
    其他
    错误"您必须在项目级别将 DEVICE_family 定义为 cc26x0、cc26x0r2、cc13x0等的其中一个。"
    #endif
    
    
    #include DEVICE_family_path (driverlib/rf_mailbox.h)
    #include DEVICE_family_path (driverlib/rf_common_cmd.h)
    #include DEVICE_family_path (driverlib/rf_ble_cmd.h)
    #include 
    #include DEVICE_FACE_PATH (RF_PATCHS/RF_PATCH_CPE_BT5.h)
    #include "smartrf_settings.h"
    
    
    // TI-RTOS 射频模式对象
    RF_Mode RF_Ble =
    {
    rfMode = RF_MODE_BLE、
    .cpePatchFxn =&rf_patch_cpe_BT5、
    .mcePatchFxn = 0、
    .rfePatchFxn = 0、
    };
    
    // CMD_BLE5_RADIO_SETUP
    静态 uint32_t pOverridesCommon[]=
    {
    // override_ble5_setup_override_common.xml
    // Rx:将用于自动软件补偿的 LNA IB 偏移设置为0
    (uint32_t) 0x00008883、
    // Rx:根据所选的 defaultPhy.mainMode 设置设置 LNA IB TRIM 值。 (注意:值0x8是占位符。 要使用的值应在运行时由无线电驱动程序功能设置。)
    ADI_HALFREG_OVERRIDE (0、4、0xF、0x8)、
    //蓝牙5:假设本地睡眠时钟为50ppm、为接收到的 AuxPtr 设置正确的总时钟精度
    (uint32_t) 0x0E490823、
    // override_frontend_id.xml
    (uint32_t) 0xFFFFFFFF、
    };
    
    
    // CMD_BLE5_RADIO_SETUP
    静态 uint32_t pOverrides1Mbps[]=
    {
    // override_ble5_setup_override_1mbps.xml
    // Rx:将 LNA IB TRIM 设为正常修整值。 (注意:值0x8是占位符。 要使用的值应在运行时由无线电驱动程序功能设置。)
    ADI_HALFREG_OVERRIDE (0、4、0xF、0x8)、
    // Rx:将 AGC 配置为使用增益表以提高性能
    HW_REG_OVERRIDE (0x6084、0x05F8)、
    (uint32_t) 0xFFFFFFFF、
    };
    
    
    // CMD_BLE5_RADIO_SETUP
    静态 uint32_t pOverrides2Mbps[]=
    {
    // override_ble5_setup_override_2mbps.xml
    // Rx:将 LNA IB TRIM 设为正常修整值。 (注意:值0x8是占位符。 要使用的值应在运行时由无线电驱动程序功能设置。)
    ADI_HALFREG_OVERRIDE (0、4、0xF、0x8)、
    (uint32_t) 0xFFFFFFFF、
    };
    
    
    // CMD_BLE5_RADIO_SETUP
    静态 uint32_t pOverridesCoded[]=
    {
    // override_ble5_setup_override_coded.xml
    // Rx:将 LNA IB TRIM 设为0xF (最大值)
    ADI_HALFREG_OVERRIDE (0、4、0xF、0xF)、
    // Rx:覆盖 AGC 目标增益以提高性能
    HW_REG_OVERRIDE (0x6088、0x0018)、
    (uint32_t) 0xFFFFFFFF、
    };
    
    
    // CMD_BLE5_RADIO_SETUP
    //所有 v5.0 PHY 的 BLE 无线电设置命令
    RFC_CMD_BLE5_RADIO_SETUP_t RF_cmdBle5RadioSetup =
    {
    .commandNo = 0x1820、
    .status = 0x0000、
    .pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
    .StartTime = 0x00000000、
    .startTrigger.triggerType = 0x0、
    .startTrigger.bEnaCmd = 0x0、
    .startTrigger.triggerNo = 0x0、
    .startTrigger.PastTrig = 0x0、
    .condition.rule = 0x1、
    .condition.nSkip = 0x0、
    defaultPhy.mainMode = 0x0、
    defaultPhy.coding = 0x0、
    .__dummy0 = 0x00、
    .config.frontEndMode = 0x0、
    config.biasMode = 0x0、
    config.analogCfgMode = 0x0、
    config.bNoFsPowerUp = 0x0、
    TxPower = 0x9330、
    .pRegOverrideCommon = pOverridesCommon、
    pRegOverride1Mbps = pOverrides1Mbps、
    pRegOverride2Mbps = pOverrides2Mbps、
    pRegOverrideCoded = pOverridesCoded、
    };
    
    // CMD_FS
    //频率合成器编程命令
    RFC_CMD_FS_t RF_cmdF =
    {
    .commandNo = 0x0803、
    .status = 0x0000、
    .pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
    .StartTime = 0x00000000、
    .startTrigger.triggerType = 0x0、
    .startTrigger.bEnaCmd = 0x0、
    .startTrigger.triggerNo = 0x0、
    .startTrigger.PastTrig = 0x0、
    .condition.rule = 0x1、
    .condition.nSkip = 0x0、
    .frequency = 0x0988、
    fractFreq = 0x0000、
    synthConf.bTxMode = 0x0、
    .synthConf.refFreq = 0x0、
    .__dummy0 = 0x00、
    .__dummy1 = 0x00、
    .__dummy2=0x00,
    .__dummy3=0x0000,
    };
    
    // CMD_BLE5_ADV_AUX.pParams
    RFC_ble5AdvAux_t ble5AdvAuxPar =
    {的结构
    .pRxQ = 0、//插入适用的指针:(dataQueue_t*)&xxx
    rxConfig.bAutoFlushIgnored = 0x0、
    rxConfig.bAutoFlushCrcErr = 0x0、
    rxConfig.bAutoFlushEmpty = 0x0、
    rxConfig.bIncludeLenByte = 0x0、
    rxConfig.bIncludeCrc = 0x0、
    rxConfig.bAppendRssi = 0x0、
    rxConfig.bAppendStatus = 0x0、
    rxConfig.bAppendTimestamp = 0x0、
    .advConfig.advFilterPolicy = 0x0、
    .advConfig.deviceAddrType = 0x0、
    .advConfig.targetAddrType = 0x0、
    .advConfig.bStrictLenFilter = 0x0、
    .advConfig.bDirected = 0x0、
    .advConfig.privIgnMode = 0x0、
    .advConfig.rpaMode = 0x0、
    .__dummy0 = 0x00、
    .auxPtrTargetType = 0x00、
    .auxPtrTargetTime = 0x00000000、
    .pAdvPkt=0、//插入适用的指针:(uint8_t*)&xxx
    .pRspPkt=0、//插入适用的指针:(uint8_t*)&xxx
    .pDeviceAddress = 0、//插入适用的指针:(uint16_t*)&xxx
    .pWhiteList = 0、//插入适用的指针:(uint32_t*)&xxx
    };
    
    // CMD_BLE5_ADV_AUX
    // BLE 辅助通道广播器命令
    RFC_CMD_BLE5_ADV_AUX_t RF_cmdBle5AdvAux =
    {
    .commandNo = 0x1824、
    .status = 0x0000、
    .pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
    .StartTime = 0x00000000、
    .startTrigger.triggerType = 0x0、
    .startTrigger.bEnaCmd = 0x0、
    .startTrigger.triggerNo = 0x0、
    .startTrigger.PastTrig = 0x0、
    .condition.rule = 0x1、
    .condition.nSkip = 0x0、
    .channel = 0x8C、
    .whitening.init = 0x51、
    白化.bOverride = 0x1、
    phyMode.mainMode = 0x0、
    phyMode.coding = 0x0、
    .rangeDelay = 0x00、
    TxPower = 0x9330、
    .pParams =&ble5AdvAuxPar、
    .pOutput = 0、//插入适用的指针:(uint8_t*)&xxx
    };
    
    // CMD_BLE5_generic_RX.pRFC Params_bleGenericRxPar_t
    GenericRxPar =
    {
    .pRxQ = 0、//插入适用的指针:(dataQueue_t*)&xxx
    rxConfig.bAutoFlushIgnored = 0x0、
    rxConfig.bAutoFlushCrcErr = 0x0、
    rxConfig.bAutoFlushEmpty = 0x0、
    rxConfig.bIncludeLenByte = 0x1、
    rxConfig.bIncludeCrc = 0x1、
    rxConfig.bAppendRssi = 0x1、
    rxConfig.bAppendStatus = 0x1、
    rxConfig.bAppendTimestamp = 0x0、
    .bRepeat=0x01、
    .__dummy0 = 0x0000、
    .accessAddress = 0x8E89BED6、
    .crcInit0 = 0x55、
    .crcInit1 = 0x55、
    .crcInit2 = 0x55、
    endTrigger.triggerType = 0x1、
    .endTrigger.bEnaCmd = 0x0、
    .endTrigger.triggerNo = 0x0、
    .endTrigger.PastTrig = 0x0、
    EndTime = 0x00000001、
    };
    
    // CMD_BLE5_generic_RX
    // BLE 通用接收器命令
    RFC_CMD_BLE5_generic_RX_t RF_cmdle5GenericRx =
    {
    .commandNo = 0x1829、
    .status = 0x0000、
    .pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
    .StartTime = 0x00000000、
    .startTrigger.triggerType = 0x0、
    .startTrigger.bEnaCmd = 0x0、
    .startTrigger.triggerNo = 0x0、
    .startTrigger.PastTrig = 0x0、
    .condition.rule = 0x1、
    .condition.nSkip = 0x0、
    .channel = 0x8C、
    .whitening.init = 0x51、
    白化.bOverride = 0x1、
    phyMode.mainMode = 0x0、
    phyMode.coding = 0x0、
    .rangeDelay = 0x00、
    TxPower = 0x9330、
    .pParams =&bleGenericRxPar、
    .pOutput = 0、//插入适用的指针:(uint8_t*)&xxx
    }; 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 CC2640R2上、我仍然面临相同的问题。

    使用专有无线电模式时、我希望1Mbps 数据速率更高、但数据速率大约为500kbps。

    我在 CC2640R2_LAUNCHXL 中使用了 rfPacketErrorRate 程序。

    当我在下面配置1Mbps 时、RX (接收器)没有检测到任何数据包。
    BPS 评估字 预分频 rxbw (Rx 带宽)
    --------------------------------------------------
    1Mbps 524288 12. 7~18 μ A
    1Mbps 262144. 6. 7 ~18
    1Mbps 655360 15. 7~18 μ A

    在这种情况下、Tx 正常、但 Rx 失败。 此外、我检查了 Tx RF 频谱、Tx 始终正常、但 Rx 失败。

    根据我的测试结果、即使我配置了 GMSK 专有模式、
    在 CC2640R2中、Rx 正常的最大数据速率似乎约为500Kbps 的2-FSK。

    在 BLE 模式下,如果我应用了“rf_pach_cpe_BT5”,则 BLE 最大数据速率达到2Mbps。

    但在专有无线电模式下、我的测试结果中的最大数据速率低于500Kbps。

    在专有无线电模式下,如何获得1Mbps 的更高数据速率?

    如果您有1Mbps 数据速率正常的可用示例代码、请告诉我。

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

    您是否尝试从 SmartRF Studio 中导出 BLE 1Mbps PHY 的设置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、 Marie H.

    谢谢您的回复。

    我测试了 SmartRF Studio 的多种配置。 在 BLE 模式下、1Mbps 和2Mbps 的配置工作良好(Rx/Tx 正常)

    但我的项目中存在一些限制。

    要接收传输某些特殊设备的数据包,我需要更改 syncdWord。  

    这就是我在专有模式下使用的原因。

    如您所知 、syncd_PRO TX (0x3801)在 专有 模式下配置 syncd_Word。

    根据我使用 rfPacketErrorRate 的测试结果、如果射频模式配置 为 BLE 模式、则 应将 BLE 命令用于 TX 和 RX。

    请在下面检查我的测试结果。

         RF 配置模式       数据包 TX 命令             测试结果  
    RF_MODE_BLE CMD_BLE_ADV_NC (0x1805) Tx/Rx 正常
    CMD_PROP_TX (0x3801)   程序卡住
    RF_MODE_Proprietary" 2_4 CMD_BLE_ADV_NC (0x1805) 程序卡住
    CMD_PROP_TX (0x3801)   Tx/Rx 正常(500Kbps 或更低)
    接收器无法检测数据包(1Mbps 或更高)

    谢谢 Andy

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

    尊敬的 Andy:

    将射频配置模式设置为"RF_MODE_BLE"时、器件将仅接受 BLE API。 对于专有实现、应使用"RF_MODE_ProprietY_2_4"模式。

    要在1和2mbps 数据速率下使用专有命令对器件进行编程、覆盖命令和无线电设置命令保持不变。 对于 TX 和 RX 操作、在1mbps 数据速率时、可使用专有 API、而 HS API 可在1mbps 和2mbps 数据速率时使用。 目前、这些数据传输速率不支持 CMD_PROP_RADIO_SETUP 命令、因此必须使用覆盖来更改 syncword。   

    您能否提供您的确切要求-您是否希望使用具有不同 syncword 的 BLE API、或者是否还需要自定义数据包内容? 您当前使用什么示例来测试这种情况?

    此致、

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

    尊敬的 SVS:


    我们的要求是:

    1、数据速率为1 Mbps 或更高
    2.能够通过40个 BLE 频率信道中的任何一个以任何时间间隔广播广播广播广播广播包。 BLE 以固定间隔(即80ms)发送广播数据包。 我们需要对其进行更改、以便可以在任何间隔发送广播包。 此外、BLE 仅在通道37、38和39上发送广播包。 我们需要能够在40个 BLE 通道中的任何通道上发送广播包。

    3.能够更改正弦
    4.我们还需要自定义数据包内容。
    芯片需要符合汽车标准。

    我们已在 CC2541专有模式上以1-2 Mbps 成功实施了我们的应用。 不过、您知道、CC2541具有8051 MCU、功能不够强大、无法满足我们未来的应用需求。 因此、我们计划迁移到基于 ARM Cortex-M3的不同芯片中。


    我认为、我们目前唯一的选择是在12Mbps 的专有模式下运行 CC2640R2 (通过汽车认证)。 但是、我们很难在1Mbps 或更高的专有模式下运行它。


    此致、
    Andy。

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


    您是否已计划为 CC2640R2提供专有支持1Mbps 或更高速率?

    如果您计划支持它、我可以获得在专有模式下支持1Mbps 或更高速度的计划或路线图吗?

    我希望收到你的答复。

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

    如需线路图问题、请咨询当地的 TI 销售人员。

    当您将 BLE_Mode 与射频驱动器搭配使用时、不一定会按照 BLE 规范进行广播。 您可以自由使用所需的任何有效载荷、频率和数据包间隔。

    您应该能够在 BLE 模式下配置无线电、并且仍然使用 CMD_PROP_TX。 此配置失败时、您能否发布设置?